internal SourceFile(CXFileImpl *ptr, TranslationUnit translationUnit)
        {
            Debug.Assert(ptr != null);
            Debug.Assert(translationUnit != null);
            translationUnit.ThrowIfDisposed();

            Ptr             = ptr;
            TranslationUnit = translationUnit;
        }
 public static extern CXString clang_getFileName(
     CXFileImpl *SFile);
 public static extern CXModuleImpl *clang_getModuleForFile(
     CXTranslationUnitImpl *arg1,
     CXFileImpl *arg2);
 public static extern CXSourceRangeList *clang_getSkippedRanges(
     CXTranslationUnitImpl *tu,
     CXFileImpl *file);
 public static extern CXSourceLocation clang_getLocationForOffset(
     CXTranslationUnitImpl *tu,
     CXFileImpl *file,
     uint offset);
 public static extern CXSourceLocation clang_getLocation(
     CXTranslationUnitImpl *tu,
     CXFileImpl *file,
     uint line,
     uint column);
 public static extern CXResult clang_findIncludesInFile(
     CXTranslationUnitImpl *TU,
     CXFileImpl *file,
     CXCursorAndRangeVisitor visitor);
 public static extern CXResult clang_findReferencesInFile(
     CXCursor cursor,
     CXFileImpl *file,
     CXCursorAndRangeVisitor visitor);
 public static extern int clang_File_isEqual(
     CXFileImpl *file1,
     CXFileImpl *file2);
 public static extern uint clang_isFileMultipleIncludeGuarded(
     CXTranslationUnitImpl *tu,
     CXFileImpl *file);
 public static extern int clang_getFileUniqueID(
     CXFileImpl *file,
     CXFileUniqueID *outID);
 public static extern long clang_getFileTime(
     CXFileImpl *SFile);