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