本文整理汇总了C#中CppSharp.Driver.SortModulesByDependencies方法的典型用法代码示例。如果您正苦于以下问题:C# Driver.SortModulesByDependencies方法的具体用法?C# Driver.SortModulesByDependencies怎么用?C# Driver.SortModulesByDependencies使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CppSharp.Driver
的用法示例。
在下文中一共展示了Driver.SortModulesByDependencies方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
public static void Run(ILibrary library)
{
var options = new DriverOptions();
var Log = new TextDiagnosticPrinter();
var driver = new Driver(options, Log);
library.Setup(driver);
driver.Setup();
if(driver.Options.Verbose)
Log.Level = DiagnosticKind.Debug;
if (!options.Quiet)
Log.Message("Parsing libraries...");
if (!driver.ParseLibraries())
return;
if (!options.Quiet)
Log.Message("Indexing library symbols...");
driver.Symbols.IndexSymbols();
if (!options.Quiet)
Log.Message("Parsing code...");
driver.SortModulesByDependencies();
driver.BuildParseOptions();
if (!driver.ParseCode())
{
Log.Error("CppSharp has encountered an error while parsing code.");
return;
}
new CleanUnitPass(options).VisitLibrary(driver.ASTContext);
options.Modules.RemoveAll(m => m.Units.All(u => u.Declarations.Count == 0));
if (!options.Quiet)
Log.Message("Processing code...");
library.Preprocess(driver, driver.ASTContext);
driver.SetupPasses(library);
driver.ProcessCode();
library.Postprocess(driver, driver.ASTContext);
if (!options.Quiet)
Log.Message("Generating code...");
var outputs = driver.GenerateCode();
foreach (var output in outputs)
{
foreach (var pass in driver.GeneratorOutputPasses.Passes)
{
pass.Driver = driver;
pass.VisitGeneratorOutput(output);
}
}
if (!driver.Options.DryRun)
{
driver.SaveCode(outputs);
if (driver.Options.IsCSharpGenerator && driver.Options.CompileCode)
foreach (var module in driver.Options.Modules)
{
driver.CompileCode(module);
if (driver.HasCompilationErrors)
break;
}
}
driver.Generator.Dispose();
driver.TargetInfo.Dispose();
}