/// <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);
            }
Exemple #2
0
 public static String Convert(Clang.Type type)
 {
     if (type.Kind == TypeKind.Pointer) {
         return Convert (type.PointeeType) + "*";
     } else {
         return type.Kind.ToString ();
     }
 }
Exemple #3
0
        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);
                }
            }
        }
Exemple #5
0
        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);
        }