diff options
Diffstat (limited to 'include/clang/Basic')
-rw-r--r-- | include/clang/Basic/SourceLocation.h | 36 | ||||
-rw-r--r-- | include/clang/Basic/SourceManager.h | 17 |
2 files changed, 28 insertions, 25 deletions
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h index 227313b7bf..4c0f0e9d46 100644 --- a/include/clang/Basic/SourceLocation.h +++ b/include/clang/Basic/SourceLocation.h @@ -68,10 +68,10 @@ public: enum { // FileID Layout: // bit 31: 0 -> FileID, 1 -> MacroID (invalid for FileID) - // 30...17 -> FileID of source location, index into SourceManager table. - FileIDBits = 14, - // 0...16 -> Index into the chunk of the specified FileID. - FilePosBits = 32-1-FileIDBits, + // 30...17 -> ChunkID of location, index into SourceManager table. + ChunkIDBits = 14, + // 0...16 -> Index into the chunk of the specified ChunkID. + FilePosBits = 32-1-ChunkIDBits, // MacroID Layout: // bit 31: 1 -> MacroID, 0 -> FileID (invalid for MacroID) @@ -100,20 +100,20 @@ public: bool isValid() const { return ID != 0; } bool isInvalid() const { return ID == 0; } - static SourceLocation getFileLoc(unsigned FileID, unsigned FilePos) { + static SourceLocation getFileLoc(unsigned ChunkID, unsigned FilePos) { SourceLocation L; // If a FilePos is larger than (1<<FilePosBits), the SourceManager makes - // enough consequtive FileIDs that we have one for each chunk. + // enough consequtive ChunkIDs that we have one for each chunk. if (FilePos >= ChunkSize) { - FileID += FilePos >> FilePosBits; + ChunkID += FilePos >> FilePosBits; FilePos &= ChunkSize-1; } - // FIXME: Find a way to handle out of FileID bits! Maybe MaxFileID is an + // FIXME: Find a way to handle out of ChunkID bits! Maybe MaxFileID is an // escape of some sort? - assert(FileID < (1 << FileIDBits) && "Out of fileid's"); + assert(ChunkID < (1 << ChunkIDBits) && "Out of ChunkID's"); - L.ID = (FileID << FilePosBits) | FilePos; + L.ID = (ChunkID << FilePosBits) | FilePos; return L; } @@ -138,16 +138,16 @@ public: } - /// getFileID - Return the file identifier for this SourceLocation. This - /// FileID can be used with the SourceManager object to obtain an entire + /// getChunkID - Return the chunk identifier for this SourceLocation. This + /// ChunkID can be used with the SourceManager object to obtain an entire /// include stack for a file position reference. - unsigned getFileID() const { + unsigned getChunkID() const { assert(isFileID() && "can't get the file id of a non-file sloc!"); return ID >> FilePosBits; } /// getRawFilePos - Return the byte offset from the start of the file-chunk - /// referred to by FileID. This method should not be used to get the offset + /// referred to by ChunkID. This method should not be used to get the offset /// from the start of the file, instead you should use /// SourceManager::getDecomposedFileLoc. This method will be // incorrect for large files. @@ -172,14 +172,14 @@ public: /// getFileLocWithOffset - Return a source location with the specified offset /// from this file SourceLocation. SourceLocation getFileLocWithOffset(int Offset) const { - unsigned FileID = getFileID(); + unsigned ChunkID = getChunkID(); Offset += getRawFilePos(); // Handle negative offsets correctly. while (Offset < 0) { - --FileID; + --ChunkID; Offset += ChunkSize; } - return getFileLoc(FileID, Offset); + return getFileLoc(ChunkID, Offset); } /// getRawEncoding - When a SourceLocation itself cannot be used, this returns @@ -261,6 +261,8 @@ public: return *SrcMgr; } + FileID getFileID() const; + FullSourceLoc getInstantiationLoc() const; FullSourceLoc getSpellingLoc() const; FullSourceLoc getIncludeLoc() const; diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 4f46bad8db..08929e39c1 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -350,7 +350,7 @@ public: /// SourceLocation. If this is a macro expansion, this transparently figures /// out which file includes the file being expanded into. SourceLocation getIncludeLoc(SourceLocation ID) const { - return getFIDInfo(getInstantiationLoc(ID).getFileID())->getIncludeLoc(); + return getFIDInfo(getInstantiationLoc(ID).getChunkID())->getIncludeLoc(); } /// getCharacterData - Return a pointer to the start of the specified location @@ -415,9 +415,9 @@ public: /// the specified SourceLocation, if one exists. const SrcMgr::ContentCache* getContentCacheForLoc(SourceLocation Loc) const { Loc = getSpellingLoc(Loc); - unsigned FileID = Loc.getFileID(); - assert(FileID-1 < FileIDs.size() && "Invalid FileID!"); - return FileIDs[FileID-1].getContentCache(); + unsigned ChunkID = Loc.getChunkID(); + assert(ChunkID-1 < FileIDs.size() && "Invalid FileID!"); + return FileIDs[ChunkID-1].getContentCache(); } /// getFileEntryForLoc - Return the FileEntry record for the spelling loc of @@ -447,7 +447,7 @@ public: assert(Loc.isFileID() && "Isn't a File SourceLocation"); // TODO: Add a flag "is first chunk" to SLOC. - const SrcMgr::FileIDInfo *FIDInfo = getFIDInfo(Loc.getFileID()); + const SrcMgr::FileIDInfo *FIDInfo = getFIDInfo(Loc.getChunkID()); // If this file has been split up into chunks, factor in the chunk number // that the FileID references. @@ -455,9 +455,9 @@ public: unsigned Offset = Loc.getRawFilePos(); Offset += (ChunkNo << SourceLocation::FilePosBits); - assert(Loc.getFileID() >= ChunkNo && "Unexpected offset"); + assert(Loc.getChunkID() >= ChunkNo && "Unexpected offset"); - return std::make_pair(FileID::Create(Loc.getFileID()-ChunkNo), Offset); + return std::make_pair(FileID::Create(Loc.getChunkID()-ChunkNo), Offset); } /// getFullFilePos - This (efficient) method returns the offset from the start @@ -485,7 +485,8 @@ public: return getFileCharacteristic(Loc) != SrcMgr::C_User; } SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const { - return getFIDInfo(getSpellingLoc(Loc).getFileID())->getFileCharacteristic(); + return getFIDInfo(getSpellingLoc(Loc).getChunkID()) + ->getFileCharacteristic(); } SrcMgr::CharacteristicKind getFileCharacteristic(FileID FID) const { return getFIDInfo(FID)->getFileCharacteristic(); |