diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h index 9a67627485c6..4db38017cc4d 100644 --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -51,24 +51,24 @@ namespace SrcMgr { class ContentCache { /// Buffer - The actual buffer containing the characters from the input /// file. This is owned by the ContentCache object. - const llvm::MemoryBuffer* Buffer; + mutable const llvm::MemoryBuffer *Buffer; public: /// Reference to the file entry. This reference does not own /// the FileEntry object. It is possible for this to be NULL if /// the ContentCache encapsulates an imaginary text buffer. - const FileEntry* Entry; + const FileEntry *Entry; /// SourceLineCache - A new[]'d array of offsets for each source line. This /// is lazily computed. This is owned by the ContentCache object. - unsigned* SourceLineCache; + unsigned *SourceLineCache; /// NumLines - The number of lines in this ContentCache. This is only valid /// if SourceLineCache is non-null. unsigned NumLines; /// getBuffer - Returns the memory buffer for the associated content. - const llvm::MemoryBuffer* getBuffer() const; + const llvm::MemoryBuffer *getBuffer() const; /// getSize - Returns the size of the content encapsulated by this /// ContentCache. This can be the size of the source file or the size of an @@ -81,12 +81,12 @@ namespace SrcMgr { /// instantiated. unsigned getSizeBytesMapped() const; - void setBuffer(const llvm::MemoryBuffer* B) { + void setBuffer(const llvm::MemoryBuffer *B) { assert(!Buffer && "MemoryBuffer already set."); Buffer = B; } - ContentCache(const FileEntry* e = NULL) + ContentCache(const FileEntry *e = NULL) : Buffer(NULL), Entry(e), SourceLineCache(NULL), NumLines(0) {} ~ContentCache(); @@ -94,7 +94,7 @@ namespace SrcMgr { /// The copy ctor does not allow copies where source object has either /// a non-NULL Buffer or SourceLineCache. Ownership of allocated memory /// is not transfered, so this is a logical error. - ContentCache(const ContentCache& RHS) : Buffer(NULL),SourceLineCache(NULL) { + ContentCache(const ContentCache &RHS) : Buffer(NULL),SourceLineCache(NULL) { Entry = RHS.Entry; assert (RHS.Buffer == NULL && RHS.SourceLineCache == NULL @@ -104,16 +104,16 @@ namespace SrcMgr { } /// Emit - Emit this ContentCache to Bitcode. - void Emit(llvm::Serializer& S) const; + void Emit(llvm::Serializer &S) const; /// ReadToSourceManager - Reconstitute a ContentCache from Bitcode // and store it in the specified SourceManager. - static void ReadToSourceManager(llvm::Deserializer& D, SourceManager& SMgr, - FileManager* FMgr, std::vector& Buf); + static void ReadToSourceManager(llvm::Deserializer &D, SourceManager &SM, + FileManager *FMgr, std::vector &Buf); private: // Disable assignments. - ContentCache& operator=(const ContentCache& RHS); + ContentCache &operator=(const ContentCache& RHS); }; /// FileIDInfo - Information about a FileID, basically just the logical file @@ -150,7 +150,7 @@ namespace SrcMgr { unsigned FileCharacteristic : 2; /// Content - Information about the source buffer itself. - const ContentCache* Content; + const ContentCache *Content; public: /// get - Return a FileIDInfo object. diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index fa0a9bb565ad..1240262007e3 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -56,9 +56,7 @@ const llvm::MemoryBuffer* ContentCache::getBuffer() const { if (!Buffer && Entry) { // FIXME: Should we support a way to not have to do this check over // and over if we cannot open the file? - // FIXME: This const_cast is ugly. Should we make getBuffer() non-const? - const_cast(this)->Buffer = - MemoryBuffer::getFile(Entry->getName(), 0, Entry->getSize()); + Buffer = MemoryBuffer::getFile(Entry->getName(), 0, Entry->getSize()); } #endif return Buffer;