Example #1
0
        public ParserOptions BuildParseOptions(SourceFile file)
        {
            var options = new ParserOptions
            {
                FileName           = file.Path,
                Abi                = Options.Abi,
                ToolSetToUse       = Options.ToolSetToUse,
                TargetTriple       = Options.TargetTriple,
                NoStandardIncludes = Options.NoStandardIncludes,
                NoBuiltinIncludes  = Options.NoBuiltinIncludes,
                MicrosoftMode      = Options.MicrosoftMode,
                Verbose            = Options.Verbose,
                LanguageVersion    = Options.LanguageVersion
            };

            // This eventually gets passed to Clang's MSCompatibilityVersion, which
            // is in turn used to derive the value of the built-in define _MSC_VER.
            // It used to receive a 4-digit based identifier but now expects a full
            // version MSVC digit, so check if we still have the old version and
            // convert to the right format.

            if (Options.ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4)
            {
                Options.ToolSetToUse *= 100000;
            }

            for (uint i = 0; i < Options.ArgumentsCount; ++i)
            {
                var arg = Options.getArguments(i);
                options.addArguments(arg);
            }

            for (uint i = 0; i < Options.IncludeDirsCount; ++i)
            {
                var include = Options.getIncludeDirs(i);
                options.addIncludeDirs(include);
            }

            for (uint i = 0; i < Options.SystemIncludeDirsCount; ++i)
            {
                var include = Options.getSystemIncludeDirs(i);
                options.addSystemIncludeDirs(include);
            }

            for (uint i = 0; i < Options.DefinesCount; ++i)
            {
                var define = Options.getDefines(i);
                options.addDefines(define);
            }

            for (uint i = 0; i < Options.UndefinesCount; ++i)
            {
                var define = Options.getUndefines(i);
                options.addUndefines(define);
            }

            for (uint i = 0; i < Options.LibraryDirsCount; ++i)
            {
                var lib = Options.getLibraryDirs(i);
                options.addLibraryDirs(lib);
            }

            return(options);
        }
Example #2
0
        public ParserOptions BuildParserOptions(string file = null)
        {
            var options = new ParserOptions
            {
                Abi                = ParserOptions.Abi,
                ToolSetToUse       = ParserOptions.ToolSetToUse,
                TargetTriple       = ParserOptions.TargetTriple,
                NoStandardIncludes = ParserOptions.NoStandardIncludes,
                NoBuiltinIncludes  = ParserOptions.NoBuiltinIncludes,
                MicrosoftMode      = ParserOptions.MicrosoftMode,
                Verbose            = ParserOptions.Verbose,
                LanguageVersion    = ParserOptions.LanguageVersion
            };

            // This eventually gets passed to Clang's MSCompatibilityVersion, which
            // is in turn used to derive the value of the built-in define _MSC_VER.
            // It used to receive a 4-digit based identifier but now expects a full
            // version MSVC digit, so check if we still have the old version and
            // convert to the right format.

            if (ParserOptions.ToolSetToUse.ToString(CultureInfo.InvariantCulture).Length == 4)
            {
                ParserOptions.ToolSetToUse *= 100000;
            }

            for (uint i = 0; i < ParserOptions.ArgumentsCount; ++i)
            {
                var arg = ParserOptions.GetArguments(i);
                options.AddArguments(arg);
            }

            for (uint i = 0; i < ParserOptions.IncludeDirsCount; ++i)
            {
                var include = ParserOptions.GetIncludeDirs(i);
                options.AddIncludeDirs(include);
            }

            for (uint i = 0; i < ParserOptions.SystemIncludeDirsCount; ++i)
            {
                var include = ParserOptions.GetSystemIncludeDirs(i);
                options.AddSystemIncludeDirs(include);
            }

            for (uint i = 0; i < ParserOptions.DefinesCount; ++i)
            {
                var define = ParserOptions.GetDefines(i);
                options.AddDefines(define);
            }

            for (uint i = 0; i < ParserOptions.UndefinesCount; ++i)
            {
                var define = ParserOptions.GetUndefines(i);
                options.AddUndefines(define);
            }

            for (uint i = 0; i < ParserOptions.LibraryDirsCount; ++i)
            {
                var lib = ParserOptions.GetLibraryDirs(i);
                options.AddLibraryDirs(lib);
            }

            foreach (var module in Options.Modules.Where(
                         m => file == null || m.Headers.Contains(file)))
            {
                foreach (var include in module.IncludeDirs)
                {
                    options.AddIncludeDirs(include);
                }

                foreach (var define in module.Defines)
                {
                    options.AddDefines(define);
                }

                foreach (var undefine in module.Undefines)
                {
                    options.AddUndefines(undefine);
                }

                foreach (var libraryDir in module.LibraryDirs)
                {
                    options.AddLibraryDirs(libraryDir);
                }
            }

            return(options);
        }
Example #3
0
 public Driver(DriverOptions options)
 {
     Options       = options;
     ParserOptions = new ParserOptions();
 }
Example #4
0
 public void Dispose()
 {
     Generator.Dispose();
     Context.TargetInfo?.Dispose();
     ParserOptions.Dispose();
 }
Example #5
0
        /// <summary>
        /// Get info about that target
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        public ParserTargetInfo GetTargetInfo(ParserOptions options)
        {
            options.ASTContext = ASTContext;

            return(Parser.ClangParser.GetTargetInfo(options));
        }
Example #6
0
 public Driver(DriverOptions options)
 {
     Options       = options;
     Project       = new Project();
     ParserOptions = new ParserOptions();
 }
Example #7
0
 private void SetupLinuxOptions(ParserOptions parserOptions)
 {
     parserOptions.SetupLinux();
     parserOptions.AddDefines("_GLIBCXX_USE_CXX11_ABI=" + (options.Cpp11ABI ? "1" : "0"));
 }
Example #8
0
 /// <summary>
 /// Parses a C++ source file as a translation unit.
 /// </summary>
 public ParserResult ParseSourceFile(string file, ParserOptions options)
 {
     return(ParseSourceFiles(new [] { file }, options));
 }