예제 #1
0
 public static extern IntPtr clang_parseTranslationUnit(
     /* 0 */ IntPtr indexHandle,
     /* 1 */ [MarshalAs(UnmanagedType.LPStr)] string fileName,
     /* 2 */ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] string[] commandLineArguments,
     /* 3 */ int commandLineArgumentCount,
     /* 4 */ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5)] IntPtr[] unsavedFiles,
     /* 5 */ int unsavedFilesCount,
     /* 6 */ TranslationUnitOptions options);
예제 #2
0
파일: Index.cs 프로젝트: anurse/clangrt
        public TranslationUnit ParseTranslationUnit(string sourceFileName, IEnumerable<string> commandLineArguments, IEnumerable<UnsavedFile> unsavedFiles, TranslationUnitOptions options)
        {
            Requires.NotNullOrEmpty(sourceFileName, "sourceFileName");
            Requires.NotNull(commandLineArguments, "commandLineArguments");
            Requires.NotNull(unsavedFiles, "unsavedFiles");
            Requires.ValidEnumMember(options, TranslationUnitOptions.None, TranslationUnitOptions.IncludeBriefCommentsInCodeCompletion, "options");

            // Build input arrays
            string[] inputArgs = commandLineArguments.ToArray();
            IntPtr[] inputFiles = unsavedFiles.Select(f => f.Handle).ToArray();

            // Call the native method
            IntPtr tuHandle = NativeMethods.clang_parseTranslationUnit(
                _handle, sourceFileName, inputArgs, inputArgs.Length, inputFiles, inputFiles.Length, options);

            // Check for failure
            if (tuHandle == IntPtr.Zero)
            {
                throw new InvalidOperationException("Error parsing translation unit");
            }

            return new TranslationUnit(tuHandle);
        }
예제 #3
0
파일: Index.cs 프로젝트: anurse/clangrt
        public TranslationUnit ParseTranslationUnit(string sourceFileName, IEnumerable <string> commandLineArguments, IEnumerable <UnsavedFile> unsavedFiles, TranslationUnitOptions options)
        {
            Requires.NotNullOrEmpty(sourceFileName, "sourceFileName");
            Requires.NotNull(commandLineArguments, "commandLineArguments");
            Requires.NotNull(unsavedFiles, "unsavedFiles");
            Requires.ValidEnumMember(options, TranslationUnitOptions.None, TranslationUnitOptions.IncludeBriefCommentsInCodeCompletion, "options");

            // Build input arrays
            string[] inputArgs  = commandLineArguments.ToArray();
            IntPtr[] inputFiles = unsavedFiles.Select(f => f.Handle).ToArray();

            // Call the native method
            IntPtr tuHandle = NativeMethods.clang_parseTranslationUnit(
                _handle, sourceFileName, inputArgs, inputArgs.Length, inputFiles, inputFiles.Length, options);

            // Check for failure
            if (tuHandle == IntPtr.Zero)
            {
                throw new InvalidOperationException("Error parsing translation unit");
            }

            return(new TranslationUnit(tuHandle));
        }