Exemplo n.º 1
0
        internal ImportNode Compile(ImportModuleHandler importer)
        {
            ImportNode impNode = null;

            foreach (var item in mData)
            {
                SortedSet <Type> types = GetTypesForImport(item.Value.Data);
                foreach (var type in types)
                {
                    if (CLRObjectMarshler.IsMarshaledAsNativeType(type))
                    {
                        continue;
                    }
                    ImportNode node = importer.Import(type.Assembly.Location, type.FullName, "");
                    if (impNode != null && node != null)
                    {
                        impNode.CodeNode.Body.AddRange(node.CodeNode.Body);
                    }
                    else
                    {
                        impNode = node;
                    }
                }
                if (impNode == null)
                {
                    impNode = new ImportNode()
                    {
                        ModuleName = "ExternalContext", CodeNode = new ProtoCore.AST.AssociativeAST.CodeBlockNode()
                    }
                }
                ;
                impNode.CodeNode.Body.Add(ContextDataMethodCallNode(item.Value));
            }
            return(impNode);
        }
Exemplo n.º 2
0
 internal ImportNode Compile(ImportModuleHandler importer)
 {
     ImportNode impNode = null;
     ProtoCore.AST.AssociativeAST.CodeBlockNode code = new ProtoCore.AST.AssociativeAST.CodeBlockNode();
     foreach (var item in mData)
     {
         SortedSet<Type> types = GetTypesForImport(item.Value.Data);
         foreach (var type in types)
         {
             if (CLRObjectMarshler.IsMarshaledAsNativeType(type))
                 continue;
             ImportNode node = importer.Import(type.Assembly.Location, type.FullName, "");
             if (impNode != null && node != null)
                 impNode.CodeNode.Body.AddRange(node.CodeNode.Body);
             else
                 impNode = node;
         }
         if (impNode == null)
             impNode = new ImportNode() { ModuleName="ExternalContext", CodeNode = new ProtoCore.AST.AssociativeAST.CodeBlockNode() };
         impNode.CodeNode.Body.Add(ContextDataMethodCallNode(item.Value));
     }
     return impNode;
 }