/** * @see parser.idlparservisitor#visit(ASTvalue_box_decl, Object) * @param data the current buildinfo */ public Object visit(ASTvalue_box_decl node, Object data) { CheckParameterForBuildInfo(data, node); Scope enclosingScope = ((BuildInfo) data).GetBuildScope(); Symbol forSymbol = enclosingScope.getSymbol(node.getIdent()); // check if type is known from a previous run over a parse tree --> if so: skip if (m_typeManager.CheckSkip(forSymbol)) { return null; } Debug.WriteLine("begin boxed value type: " + node.getIdent()); // get the boxed type TypeContainer boxedType = (TypeContainer)node.jjtGetChild(0).jjtAccept(this, data); if (boxedType == null) { throw new InvalidIdlException( String.Format("boxed type " + ((SimpleNode)node.jjtGetChild(0)).GetIdentification() + " not (yet) defined for boxed value type " + node.GetIdentification())); } boxedType = ReplaceByCustomMappedIfNeeded(boxedType); // do use fusioned type + attributes on fusioned type for boxed value; m_typeManager.StartBoxedValueTypeDefinition(forSymbol, boxedType.GetCompactClsType(), boxedType.GetCompactTypeAttrs()); m_typeManager.EndTypeDefinition(forSymbol); return null; }