Beispiel #1
0
        private static void AddOSInformation(NativeCodeAnalyzer analyzer, OsVersion os)
        {
            switch (os)
            {
            case OsVersion.WindowsXP:
                analyzer.AddInitialMacro(new Macro("WINVER", "0x0501"));
                analyzer.AddInitialMacro(new Macro("_WIN32_WINNT", "0x0501"));
                break;

            case OsVersion.Windows2000:
                analyzer.AddInitialMacro(new Macro("WINVER", "0x0500"));
                analyzer.AddInitialMacro(new Macro("_WIN32_WINNT", "0x0500"));
                break;

            case OsVersion.Windows2003:
                analyzer.AddInitialMacro(new Macro("WINVER", "0x0502"));
                analyzer.AddInitialMacro(new Macro("_WIN32_WINNT", "0x0502"));
                break;

            case OsVersion.WindowsVista:
                analyzer.AddInitialMacro(new Macro("WINVER", "0x0600"));
                analyzer.AddInitialMacro(new Macro("_WIN32_WINNT", "0x0600"));
                break;

            default:
                ThrowInvalidEnumValue(os);
                break;
            }
        }
Beispiel #2
0
        private static void AddCommonMacros(NativeCodeAnalyzer analyzer)
        {
            // MCS Version
            analyzer.AddInitialMacro(new Macro("_MSC_VER", "9999"));
            analyzer.AddInitialMacro(new Macro("_MSC_FULL_VER", "99999999"));

            // Make sure that SAL is imported
            analyzer.AddInitialMacro(new Macro("_PREFAST_", string.Empty));
        }
Beispiel #3
0
        /// <summary>
        /// Sometimes you want to parse out a snippet of code without doing the full windows
        /// parse.  In this case you'll need to have certain Macros already defined since
        /// they are defined at the begining of the windows header files.  This will add
        /// in all of those macros
        /// </summary>
        /// <param name="osVersion"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static NativeCodeAnalyzer CreateForMiniParse(OsVersion osVersion, IEnumerable <Macro> initialMacroList)
        {
            NativeCodeAnalyzer analyzer = Create(osVersion);

            Debug.Assert(analyzer.IncludeInitialMacrosInResult);
            // Should be the default

            analyzer.IncludeInitialMacrosInResult = false;
            foreach (Macro m in initialMacroList)
            {
                analyzer.AddInitialMacro(m);
            }

            return(analyzer);
        }
Beispiel #4
0
        /// <summary>
        /// This will create an analyzer for parsing out a full header file
        /// </summary>
        /// <param name="osVersion"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static NativeCodeAnalyzer Create(OsVersion osVersion)
        {
            NativeCodeAnalyzer analyzer = new NativeCodeAnalyzer();

            Debug.Assert(analyzer.IncludeInitialMacrosInResult);
            // Should be the default

            // Ignore 64 bit settings.  64 bit types are emitted as SysInt or IntPtr
            analyzer.AddInitialMacro(new Macro("__w64", string.Empty));

            analyzer.AddInitialMacro(new Macro("_X86_", string.Empty));
            analyzer.AddInitialMacro(new Macro("_WIN32", string.Empty));
            analyzer.AddInitialMacro(new Macro("WINAPI", "__winapi", true));
            analyzer.AddInitialMacro(new Macro("UNICODE", "1"));
            analyzer.AddInitialMacro(new Macro("__STDC__", "1"));

            // Add the operating system macros
            AddOSInformation(analyzer, osVersion);

            // Common information
            AddCommonMacros(analyzer);
            return(analyzer);
        }