/// <summary> /// Execute /// </summary> /// <param name="setting">Translation Unit Parse Setting</param> /// <returns>Translation Unit Map</returns> public TranslationUnitMap Execute(TranslationUnitParseSetting setting) { this.Setting = setting; var display_diag = setting.DisplayDiag; var src_path_list = setting.Sources; var command_line_args = setting.CommandLineArgs.ToArray(); var options = setting.ParseOptions; using (var index = Clang.CreateIndex(false, display_diag)) { foreach (var src_path in src_path_list) { if (File.Exists(src_path)) { using (var tu = index.ParseTranslationUnit(src_path, command_line_args, new ClangUnsavedFile[0], options)) { this.ExecuteCore(index, tu); } } else { throw new InvalidOperationException($"Source File Not Found :{src_path}"); } } } return(this.TranslationUnitMap); }
public static String Convert(Clang.Type type) { if (type.Kind == TypeKind.Pointer) { return Convert (type.PointeeType) + "*"; } else { return type.Kind.ToString (); } }
public void TestClang() { var clang = new Clang(); foreach (object genericOption in m_PossibleGenericOptionValues) { Assert.DoesNotThrow(() => clang.GenericOptionToCommandLine(genericOption)); } }
/// <summary> /// Execute Translation Unit Handler /// </summary> /// <param name="src_path">Source Path</param> /// <param name="command_line_args">Command Line Arguments</param> /// <param name="options">Parse Options</param> /// <param name="display_diag">Display Diagnostics Flag</param> public void Execute(string src_path, string[] command_line_args, TranslationUnitFlags options = TranslationUnitFlags.None, bool display_diag = false) { this.SourcePath = src_path; this.CommandLineArgs = command_line_args; this.ParseOptions = options; this.DisplayDiagnostic = display_diag; using (var index = Clang.CreateIndex(false, display_diag)) { using (var tu = index.ParseTranslationUnit(src_path, command_line_args, new ClangUnsavedFile[0], options)) { this.ExecuteCore(index, tu); } } }
public async Task <IEnumerable <FileWriteRequest> > Generate( RazorLightEngine razor, IProject project, Configuration cfg) { var resultingFiles = new List <FileWriteRequest>(); var compiler = new Clang(); var sourceFiles = Directory.EnumerateFiles(cfg.SourceRoot) .Where(file => cfg.SourceExtensions.Contains(Path.GetExtension(file))) .Select(file => Path.GetRelativePath(cfg.SourceRoot ?? "", file)) .ToList(); var templateModel = new TemplateModel(project, cfg, GenerateCompilerArgs(cfg, compiler), sourceFiles, compiler); string generatedProject = await razor.CompileRenderAsync("Ninja.Project.ninja.cshtml", templateModel); string outPath = Path.Combine(cfg.ProjectPath ?? "", $"{cfg.ProjectName ?? "untitled"}.ninja"); resultingFiles.Add(new FileWriteRequest(outPath, generatedProject)); return(resultingFiles); }