public override ICompilation ToCompilation()
        {
            CppCodegenNodeFactory factory = new CppCodegenNodeFactory(_context, _compilationGroup, _metadataManager, _interopStubManager, _nameMangler, _vtableSliceProvider, _dictionaryLayoutProvider, GetPreinitializationManager());
            DependencyAnalyzerBase <NodeFactory> graph = CreateDependencyGraph(factory);

            return(new CppCodegenCompilation(graph, factory, _compilationRoots, _ilProvider, _debugInformationProvider, _logger, _config));
        }
        public override ICompilation ToCompilation()
        {
            CppCodegenNodeFactory factory = new CppCodegenNodeFactory(_context, _compilationGroup, _metadataManager, _nameMangler);
            DependencyAnalyzerBase <NodeFactory> graph = CreateDependencyGraph(factory);

            return(new CppCodegenCompilation(graph, factory, _compilationRoots, _logger, _config));
        }
        public override ICompilation ToCompilation()
        {
            var interopStubManager        = new CompilerGeneratedInteropStubManager(_compilationGroup, _context, new InteropStateManager(_compilationGroup.GeneratedAssembly));
            CppCodegenNodeFactory factory = new CppCodegenNodeFactory(_context, _compilationGroup, _metadataManager, interopStubManager, _nameMangler, _vtableSliceProvider);
            DependencyAnalyzerBase <NodeFactory> graph = CreateDependencyGraph(factory);

            return(new CppCodegenCompilation(graph, factory, _compilationRoots, _logger, _config));
        }