/// <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); }
/// <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); } } }