private bool DealingWithDiagnostic(CXDiagnostic d) { // error spelling string spelling = clang.getDiagnosticSpelling(d).ToString(); // category text string categoryText = clang.getDiagnosticCategoryText(d).ToString(); // severity text CXDiagnosticSeverity severity = clang.getDiagnosticSeverity(d); string severityStr = ClangTraits.ToString(severity); // source location CXSourceLocation location = clang.getDiagnosticLocation(d); CXFile file = new CXFile(IntPtr.Zero); clang.getInstantiationLocation( location, out file, out uint line, out uint column, out uint offset); string fileName = clang.getFileName(file).ToString(); clang.disposeDiagnostic(d); string errorString = string.Format("{0}: {1}-{2}, IN {3}, line: {4}, column: {5}", severityStr, spelling, categoryText, fileName, line, column); return(ClangTraits.IsFatal(severity)); }
/// <summary> /// Gets the filename if a given CXFile /// </summary> /// <param name="file"> /// A <see cref="CXFile"/>: a CXFile instance /// </param> /// <returns> /// A <see cref="string"/>: the filename /// </returns> public string GetFileNameString(CXFile file) { lock (SyncRoot) { CXString cxstring = clang.getFileName(file); string fileName = Marshal.PtrToStringAnsi(clang.getCString(cxstring)); clang.disposeString(cxstring); return(fileName); } }
public void GetFileLocation(out CXIdxClientFile indexFile, out CXFile file, out uint line, out uint column, out uint offset) { fixed(CXIdxClientFile *pIndexFile = &indexFile) fixed(CXFile * pFile = &file) fixed(uint *pLine = &line) fixed(uint *pColumn = &column) fixed(uint *pOffset = &offset) { clang.indexLoc_getFileLocation(this, (void **)pIndexFile, (void **)pFile, pLine, pColumn, pOffset); } }
/// <summary> /// Gets a cursor /// </summary> /// <param name="fileName"> /// A <see cref="string"/>: the filename which a Translation Unit (probably containing the cursor) is associated with. /// </param> /// <param name="location"> /// A <see cref="MonoDevelop.Ide.Editor.DocumentLocation"/>: the location in the document (named fileName) /// </param> /// <returns> /// A <see cref="CXCursor"/>: the cursor under the location /// </returns> public CXCursor GetCursor(string fileName, MonoDevelop.Ide.Editor.DocumentLocation location) { lock (SyncRoot) { CXTranslationUnit TU = translationUnits [fileName]; CXFile file = clang.getFile(TU, fileName); CXSourceLocation loc = clang.getLocation( TU, file, (uint)(location.Line), (uint)(location.Column) ); return(clang.getCursor(TU, loc)); } }
internal static extern long clang_getFileTime(CXFile fileHandle);
internal static extern CXSourceLocation clang_getLocation(CXTranslationUnit tu, CXFile file, uint line, uint column);
internal static extern void clang_getFileLocation(CXSourceLocation location, out CXFile file, out uint line, out uint column, out uint offset);
internal static extern FindResult clang_findIncludesInFile(CXTranslationUnit tu, CXFile file, CXCursorAndRangeVisitor visitor);
internal static extern CXString clang_getFileName(CXFile sFile);
internal static extern CXString clang_File_tryGetRealPathName(CXFile file);
internal static extern CXResult clang_findReferencesInFile(CXCursor c, CXFile f, CXCursorAndRangeVisitor visitor);
internal unsafe static extern void clang_getInstantiationLocation(CXSourceLocation location, CXFile* file, out uint line, out uint column, out uint offset);
internal static extern CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu, CXFile fileHandle, uint offset);
internal static extern unsafe int clang_getFileUniqueID(CXFile file, CXFileUniqueID* id);
internal static extern CXModule clang_Cursor_getModuleForFile(CXTranslationUnit tu, CXFile file);
internal static extern TimeT clang_getFileTime(CXFile sFile);
internal static extern int clang_getFileUniqueID(CXFile file, out CXFileUniqueID out_id);
internal static extern FindResult clang_findReferencesInFile(CXCursor cursor, CXFile file, CXCursorAndRangeVisitor visitor);
internal static extern uint clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file);
internal static extern void clang_indexLoc_getFileLocation(CXIdxLoc loc, out CXIdxClientFile indexFile, out CXFile file, out uint line, out uint column, out uint offset);
internal static extern ConstCharPtr clang_getFileContents(CXTranslationUnit tu, CXFile file, [MarshalAs(UnmanagedType.SysUInt)] out ulong size);
internal static extern CXSourceRangeListPtr clang_getSkippedRanges(CXTranslationUnit tu, CXFile file);
internal static extern int clang_File_isEqual(CXFile file1, CXFile file2);
internal static extern CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu, CXFile file, uint offset);
internal static extern CXString clang_getFileName(CXFile fileHandle);