[cfe-commits] r39426 - in /cfe/cfe/trunk: Basic/SourceBuffer.cpp Basic/SourceManager.cpp Driver/clang.cpp Lex/Lexer.cpp Lex/Preprocessor.cpp Lex/ScratchBuffer.cpp clang.xcodeproj/project.pbxproj include/clang/Basic/Diagnostic.h include/clang/Basic/SourceBuffer.h include/clang/Basic/SourceManager.h include/clang/Lex/Lexer.h include/clang/Lex/ScratchBuffer.h
clattner at cs.uiuc.edu
clattner at cs.uiuc.edu
Wed Jul 11 09:44:14 PDT 2007
Author: clattner
Date: Wed Jul 11 11:44:14 2007
New Revision: 39426
URL: http://llvm.org/viewvc/llvm-project?rev=39426&view=rev
Log:
Remove the clang::SourceBuffer class, switch to the llvm::MemoryBuffer class.
Removed:
cfe/cfe/trunk/Basic/SourceBuffer.cpp
cfe/cfe/trunk/include/clang/Basic/SourceBuffer.h
Modified:
cfe/cfe/trunk/Basic/SourceManager.cpp
cfe/cfe/trunk/Driver/clang.cpp
cfe/cfe/trunk/Lex/Lexer.cpp
cfe/cfe/trunk/Lex/Preprocessor.cpp
cfe/cfe/trunk/Lex/ScratchBuffer.cpp
cfe/cfe/trunk/clang.xcodeproj/project.pbxproj
cfe/cfe/trunk/include/clang/Basic/Diagnostic.h
cfe/cfe/trunk/include/clang/Basic/SourceManager.h
cfe/cfe/trunk/include/clang/Lex/Lexer.h
cfe/cfe/trunk/include/clang/Lex/ScratchBuffer.h
Removed: cfe/cfe/trunk/Basic/SourceBuffer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Basic/SourceBuffer.cpp?rev=39425&view=auto
==============================================================================
--- cfe/cfe/trunk/Basic/SourceBuffer.cpp (original)
+++ cfe/cfe/trunk/Basic/SourceBuffer.cpp (removed)
@@ -1,280 +0,0 @@
-//===--- SourceBuffer.cpp - C Language Family Source Buffer Impl. ---------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file was developed by Chris Lattner and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the SourceBuffer interface.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/SourceBuffer.h"
-#include "clang/Basic/FileManager.h"
-#include "llvm/System/MappedFile.h"
-#include "llvm/System/Process.h"
-#include <cstdio>
-#include <cstring>
-#include <cerrno>
-using namespace llvm;
-using namespace clang;
-
-//===----------------------------------------------------------------------===//
-// SourceBuffer implementation itself.
-//===----------------------------------------------------------------------===//
-
-SourceBuffer::~SourceBuffer() {
- if (MustDeleteBuffer)
- delete [] BufferStart;
-}
-
-/// initCopyOf - Initialize this source buffer with a copy of the specified
-/// memory range. We make the copy so that we can null terminate it
-/// successfully.
-void SourceBuffer::initCopyOf(const char *BufStart, const char *BufEnd) {
- size_t Size = BufEnd-BufStart;
- BufferStart = new char[Size+1];
- BufferEnd = BufferStart+Size;
- memcpy(const_cast<char*>(BufferStart), BufStart, Size);
- *const_cast<char*>(BufferEnd) = 0; // Null terminate buffer.
- MustDeleteBuffer = false;
-}
-
-/// init - Initialize this SourceBuffer as a reference to externally allocated
-/// memory, memory that we know is already null terminated.
-void SourceBuffer::init(const char *BufStart, const char *BufEnd) {
- assert(BufEnd[0] == 0 && "Buffer is not null terminated!");
- BufferStart = BufStart;
- BufferEnd = BufEnd;
- MustDeleteBuffer = false;
-}
-
-//===----------------------------------------------------------------------===//
-// SourceBufferMem implementation.
-//===----------------------------------------------------------------------===//
-
-namespace {
-class SourceBufferMem : public SourceBuffer {
- std::string FileID;
-public:
- SourceBufferMem(const char *Start, const char *End, const char *FID)
- : FileID(FID) {
- init(Start, End);
- }
-
- virtual const char *getBufferIdentifier() const {
- return FileID.c_str();
- }
-};
-}
-
-/// getMemBuffer - Open the specified memory range as a SourceBuffer. Note
-/// that EndPtr[0] must be a null byte and be accessible!
-SourceBuffer *SourceBuffer::getMemBuffer(const char *StartPtr,
- const char *EndPtr,
- const char *BufferName) {
- return new SourceBufferMem(StartPtr, EndPtr, BufferName);
-}
-
-/// getNewUninitMemBuffer - Allocate a new SourceBuffer of the specified size
-/// that is completely initialized to zeros. Note that the caller should
-/// initialize the memory allocated by this method. The memory is owned by
-/// the SourceBuffer object.
-SourceBuffer *SourceBuffer::getNewUninitMemBuffer(unsigned Size,
- const char *BufferName) {
- char *Buf = new char[Size+1];
- Buf[Size] = 0;
- SourceBufferMem *SB = new SourceBufferMem(Buf, Buf+Size, BufferName);
- // The memory for this buffer is owned by the SourceBuffer.
- SB->MustDeleteBuffer = true;
- return SB;
-}
-
-/// getNewMemBuffer - Allocate a new SourceBuffer of the specified size that
-/// is completely initialized to zeros. Note that the caller should
-/// initialize the memory allocated by this method. The memory is owned by
-/// the SourceBuffer object.
-SourceBuffer *SourceBuffer::getNewMemBuffer(unsigned Size,
- const char *BufferName) {
- SourceBuffer *SB = getNewUninitMemBuffer(Size, BufferName);
- memset(const_cast<char*>(SB->getBufferStart()), 0, Size+1);
- return SB;
-}
-
-
-//===----------------------------------------------------------------------===//
-// SourceBufferMMapFile implementation.
-//===----------------------------------------------------------------------===//
-
-namespace {
-class SourceBufferMMapFile : public SourceBuffer {
- sys::MappedFile File;
-public:
- SourceBufferMMapFile(const sys::Path &Filename);
-
- virtual const char *getBufferIdentifier() const {
- return File.path().c_str();
- }
-
- ~SourceBufferMMapFile();
-};
-}
-
-SourceBufferMMapFile::SourceBufferMMapFile(const sys::Path &Filename) {
- // FIXME: This does an extra stat syscall to figure out the size, but we
- // already know the size!
- bool Failure = File.open(Filename);
- Failure = Failure; // Silence warning in no-asserts mode.
- assert(!Failure && "Can't open file??");
-
- File.map();
-
- size_t Size = File.size();
-
- static unsigned PageSize = sys::Process::GetPageSize();
- assert(((PageSize & (PageSize-1)) == 0) && PageSize &&
- "Page size is not a power of 2!");
-
- // If this file is not an exact multiple of the system page size (common
- // case), then the OS has zero terminated the buffer for us.
- if ((Size & (PageSize-1))) {
- init(File.charBase(), File.charBase()+Size);
- } else {
- // Otherwise, we allocate a new memory buffer and copy the data over
- initCopyOf(File.charBase(), File.charBase()+Size);
-
- // No need to keep the file mapped any longer.
- File.unmap();
- }
-}
-
-SourceBufferMMapFile::~SourceBufferMMapFile() {
- File.unmap();
-}
-
-//===----------------------------------------------------------------------===//
-// SourceBuffer::getFile implementation.
-//===----------------------------------------------------------------------===//
-
-SourceBuffer *SourceBuffer::getFile(const char *FilenameStart, unsigned FnSize,
- int64_t FileSize) {
- sys::PathWithStatus P(FilenameStart, FnSize);
-#if 1
- return new SourceBufferMMapFile(P);
-#else
-
- // If the user didn't specify a filesize, do a stat to find it.
- if (FileSize == -1) {
- const sys::FileStatus *FS = P.getFileStatus();
- if (FS == 0) return 0; // Error stat'ing file.
-
- FileSize = FS->fileSize;
- }
-
- // If the file is larger than some threshold, use mmap, otherwise use 'read'.
- if (FileSize >= 4096*4)
- return new SourceBufferMMapFile(P);
-
- SourceBuffer *SB = getNewUninitMemBuffer(FileSize, FilenameStart);
- char *BufPtr = const_cast<char*>(SB->getBufferStart());
-
- int FD = ::open(FilenameStart, O_RDONLY);
- if (FD == -1) {
- delete SB;
- return 0;
- }
-
- unsigned BytesLeft = FileSize;
- while (BytesLeft) {
- ssize_t NumRead = ::read(FD, BufPtr, BytesLeft);
- if (NumRead != -1) {
- BytesLeft -= NumRead;
- BufPtr += NumRead;
- } else if (errno == EINTR) {
- // try again
- } else {
- // error reading.
- close(FD);
- delete SB;
- return 0;
- }
- }
- close(FD);
-
- return SB;
-#endif
-}
-
-#if 0
-SourceBuffer *SourceBuffer::getFile(const FileEntry *FileEnt) {
-#if 0
- // FIXME:
- return getFile(FileEnt->getName(), strlen(FileEnt->getName()),
- FileEnt->getSize());
-#endif
-
- // If the file is larger than some threshold, use 'read', otherwise use mmap.
- if (FileEnt->getSize() >= 4096*4)
- return new SourceBufferMMapFile(sys::Path(FileEnt->getName(),
- strlen(FileEnt->getName())));
-
- SourceBuffer *SB = getNewUninitMemBuffer(FileEnt->getSize(),
- FileEnt->getName());
- char *BufPtr = const_cast<char*>(SB->getBufferStart());
-
- int FD = ::open(FileEnt->getName(), O_RDONLY);
- if (FD == -1) {
- delete SB;
- return 0;
- }
-
- unsigned BytesLeft = FileEnt->getSize();
- while (BytesLeft) {
- ssize_t NumRead = ::read(FD, BufPtr, BytesLeft);
- if (NumRead != -1) {
- BytesLeft -= NumRead;
- BufPtr += NumRead;
- } else if (errno == EINTR) {
- // try again
- } else {
- // error reading.
- close(FD);
- delete SB;
- return 0;
- }
- }
- close(FD);
-
- return SB;
-}
-#endif
-
-//===----------------------------------------------------------------------===//
-// SourceBuffer::getSTDIN implementation.
-//===----------------------------------------------------------------------===//
-
-namespace {
-class STDINBufferFile : public SourceBuffer {
-public:
- virtual const char *getBufferIdentifier() const {
- return "<stdin>";
- }
-};
-}
-
-SourceBuffer *SourceBuffer::getSTDIN() {
- char Buffer[4096*4];
-
- std::vector<char> FileData;
-
- // Read in all of the data from stdin, we cannot mmap stdin.
- while (size_t ReadBytes = fread(Buffer, 1, 4096*4, stdin))
- FileData.insert(FileData.end(), Buffer, Buffer+ReadBytes);
-
- size_t Size = FileData.size();
- SourceBuffer *B = new STDINBufferFile();
- B->initCopyOf(&FileData[0], &FileData[Size]);
- return B;
-}
Modified: cfe/cfe/trunk/Basic/SourceManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Basic/SourceManager.cpp?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/Basic/SourceManager.cpp (original)
+++ cfe/cfe/trunk/Basic/SourceManager.cpp Wed Jul 11 11:44:14 2007
@@ -13,7 +13,7 @@
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceBuffer.h"
+#include "llvm/Support/MemoryBuffer.h"
#include "llvm/System/Path.h"
#include <algorithm>
#include <iostream>
@@ -43,20 +43,20 @@
#include <sys/fcntl.h>
#include <cerrno>
-static const SourceBuffer *ReadFileFast(const FileEntry *FileEnt) {
+static const MemoryBuffer *ReadFileFast(const FileEntry *FileEnt) {
#if 0
// FIXME: Reintroduce this and zap this function once the common llvm stuff
// is fast for the small case.
- return SourceBuffer::getFile(FileEnt->getName(), strlen(FileEnt->getName()),
+ return MemoryBuffer::getFile(FileEnt->getName(), strlen(FileEnt->getName()),
FileEnt->getSize());
#endif
// If the file is larger than some threshold, use 'read', otherwise use mmap.
if (FileEnt->getSize() >= 4096*4)
- return SourceBuffer::getFile(FileEnt->getName(), strlen(FileEnt->getName()),
+ return MemoryBuffer::getFile(FileEnt->getName(), strlen(FileEnt->getName()),
FileEnt->getSize());
- SourceBuffer *SB = SourceBuffer::getNewUninitMemBuffer(FileEnt->getSize(),
+ MemoryBuffer *SB = MemoryBuffer::getNewUninitMemBuffer(FileEnt->getSize(),
FileEnt->getName());
char *BufPtr = const_cast<char*>(SB->getBufferStart());
@@ -99,7 +99,7 @@
return &*I;
// Nope, get information.
- const SourceBuffer *File = ReadFileFast(FileEnt);
+ const MemoryBuffer *File = ReadFileFast(FileEnt);
if (File == 0)
return 0;
@@ -117,7 +117,7 @@
/// createMemBufferInfoRec - Create a new info record for the specified memory
/// buffer. This does no caching.
const InfoRec *
-SourceManager::createMemBufferInfoRec(const SourceBuffer *Buffer) {
+SourceManager::createMemBufferInfoRec(const MemoryBuffer *Buffer) {
// Add a new info record to the MemBufferInfos list and return it.
FileInfo FI;
FI.Buffer = Buffer;
@@ -196,7 +196,7 @@
/// getCharacterData - Return a pointer to the start of the specified location
-/// in the appropriate SourceBuffer.
+/// in the appropriate MemoryBuffer.
const char *SourceManager::getCharacterData(SourceLocation SL) const {
// Note that this is a hot function in the getSpelling() path, which is
// heavily used by -E mode.
@@ -228,7 +228,7 @@
if (FileID == 0) return 0;
unsigned FilePos = getFilePos(Loc);
- const SourceBuffer *Buffer = getBuffer(FileID);
+ const MemoryBuffer *Buffer = getBuffer(FileID);
const char *Buf = Buffer->getBufferStart();
unsigned LineStart = FilePos;
@@ -250,7 +250,7 @@
/// getLineNumber - Given a SourceLocation, return the physical line number
/// for the position indicated. This requires building and caching a table of
-/// line offsets for the SourceBuffer, so this is not cheap: use only when
+/// line offsets for the MemoryBuffer, so this is not cheap: use only when
/// about to emit a diagnostic.
unsigned SourceManager::getLineNumber(SourceLocation Loc) {
Loc = getLogicalLoc(Loc);
@@ -261,7 +261,7 @@
// If this is the first use of line information for this buffer, compute the
/// SourceLineCache for it on demand.
if (FileInfo->SourceLineCache == 0) {
- const SourceBuffer *Buffer = FileInfo->Buffer;
+ const MemoryBuffer *Buffer = FileInfo->Buffer;
// Find the file offsets of all of the *physical* source lines. This does
// not look at trigraphs, escaped newlines, or anything else tricky.
Modified: cfe/cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Driver/clang.cpp?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/Driver/clang.cpp (original)
+++ cfe/cfe/trunk/Driver/clang.cpp Wed Jul 11 11:44:14 2007
@@ -28,10 +28,10 @@
#include "clang/Lex/HeaderSearch.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceBuffer.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/MemoryBuffer.h"
#include "llvm/System/MappedFile.h"
#include "llvm/System/Signals.h"
#include <iostream>
@@ -360,7 +360,7 @@
unsigned LineNo = SourceMgr.getLineNumber(Pos);
- const SourceBuffer *Buffer = SourceMgr.getBuffer(FileID);
+ const MemoryBuffer *Buffer = SourceMgr.getBuffer(FileID);
std::cerr << "In file included from " << Buffer->getBufferIdentifier()
<< ":" << LineNo << ":\n";
}
@@ -372,7 +372,7 @@
const std::string &Extra) {
unsigned LineNo = 0, FilePos = 0, FileID = 0, ColNo = 0;
unsigned LineStart = 0, LineEnd = 0;
- const SourceBuffer *Buffer = 0;
+ const MemoryBuffer *Buffer = 0;
if (Pos.isValid()) {
LineNo = SourceMgr.getLineNumber(Pos);
@@ -944,7 +944,7 @@
return;
}
} else {
- SourceBuffer *SB = SourceBuffer::getSTDIN();
+ MemoryBuffer *SB = MemoryBuffer::getSTDIN();
if (SB) MainFileID = SourceMgr.createFileIDForMemBuffer(SB);
if (MainFileID == 0) {
std::cerr << "Error reading standard input! Empty?\n";
@@ -959,7 +959,7 @@
// Memory buffer must end with a null byte!
PrologMacros.push_back(0);
- SourceBuffer *SB = SourceBuffer::getMemBuffer(&PrologMacros.front(),
+ MemoryBuffer *SB = MemoryBuffer::getMemBuffer(&PrologMacros.front(),
&PrologMacros.back(),
"<predefines>");
assert(SB && "Cannot fail to create predefined source buffer");
Modified: cfe/cfe/trunk/Lex/Lexer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Lex/Lexer.cpp?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/Lex/Lexer.cpp (original)
+++ cfe/cfe/trunk/Lex/Lexer.cpp Wed Jul 11 11:44:14 2007
@@ -27,9 +27,8 @@
#include "clang/Lex/Lexer.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/SourceBuffer.h"
#include "clang/Basic/SourceLocation.h"
-#include "llvm/Config/alloca.h"
+#include "llvm/Support/MemoryBuffer.h"
#include <cctype>
#include <iostream>
using namespace llvm;
@@ -37,7 +36,7 @@
static void InitCharacterInfo();
-Lexer::Lexer(const SourceBuffer *File, unsigned fileid, Preprocessor &pp,
+Lexer::Lexer(const MemoryBuffer *File, unsigned fileid, Preprocessor &pp,
const char *BufStart, const char *BufEnd)
: BufferEnd(BufEnd ? BufEnd : File->getBufferEnd()),
InputFile(File), CurFileID(fileid), PP(pp), Features(PP.getLangOptions()) {
Modified: cfe/cfe/trunk/Lex/Preprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Lex/Preprocessor.cpp?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/Lex/Preprocessor.cpp (original)
+++ cfe/cfe/trunk/Lex/Preprocessor.cpp Wed Jul 11 11:44:14 2007
@@ -339,7 +339,7 @@
if (MaxIncludeStackDepth < IncludeMacroStack.size())
MaxIncludeStackDepth = IncludeMacroStack.size();
- const SourceBuffer *Buffer = SourceMgr.getBuffer(FileID);
+ const MemoryBuffer *Buffer = SourceMgr.getBuffer(FileID);
Lexer *TheLexer = new Lexer(Buffer, FileID, *this);
if (isMainFile) TheLexer->setIsMainFile();
EnterSourceFileWithLexer(TheLexer, CurDir);
Modified: cfe/cfe/trunk/Lex/ScratchBuffer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/Lex/ScratchBuffer.cpp?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/Lex/ScratchBuffer.cpp (original)
+++ cfe/cfe/trunk/Lex/ScratchBuffer.cpp Wed Jul 11 11:44:14 2007
@@ -12,8 +12,8 @@
//===----------------------------------------------------------------------===//
#include "clang/Lex/ScratchBuffer.h"
-#include "clang/Basic/SourceBuffer.h"
#include "clang/Basic/SourceManager.h"
+#include "llvm/Support/MemoryBuffer.h"
using namespace llvm;
using namespace clang;
@@ -27,7 +27,7 @@
FileID = 0;
}
-/// getToken - Splat the specified text into a temporary SourceBuffer and
+/// getToken - Splat the specified text into a temporary MemoryBuffer and
/// return a SourceLocation that refers to the token. This is just like the
/// method below, but returns a location that indicates the physloc of the
/// token.
@@ -48,7 +48,7 @@
}
-/// getToken - Splat the specified text into a temporary SourceBuffer and
+/// getToken - Splat the specified text into a temporary MemoryBuffer and
/// return a SourceLocation that refers to the token. The SourceLoc value
/// gives a virtual location that the token will appear to be from.
SourceLocation ScratchBuffer::getToken(const char *Buf, unsigned Len,
@@ -64,8 +64,8 @@
if (RequestLen < ScratchBufSize)
RequestLen = ScratchBufSize;
- SourceBuffer *Buf =
- SourceBuffer::getNewMemBuffer(RequestLen, "<scratch space>");
+ MemoryBuffer *Buf =
+ MemoryBuffer::getNewMemBuffer(RequestLen, "<scratch space>");
FileID = SourceMgr.createFileIDForMemBuffer(Buf);
CurBuffer = const_cast<char*>(Buf->getBufferStart());
BytesUsed = 0;
Modified: cfe/cfe/trunk/clang.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/clang.xcodeproj/project.pbxproj?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/clang.xcodeproj/project.pbxproj (original)
+++ cfe/cfe/trunk/clang.xcodeproj/project.pbxproj Wed Jul 11 11:44:14 2007
@@ -68,7 +68,6 @@
DED7D7410A524295003AD0FB /* Diagnostic.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7310A524295003AD0FB /* Diagnostic.h */; };
DED7D7420A524295003AD0FB /* DiagnosticKinds.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7320A524295003AD0FB /* DiagnosticKinds.def */; };
DED7D7430A524295003AD0FB /* FileManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7330A524295003AD0FB /* FileManager.h */; };
- DED7D7440A524295003AD0FB /* SourceBuffer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7340A524295003AD0FB /* SourceBuffer.h */; };
DED7D7450A524295003AD0FB /* SourceLocation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7350A524295003AD0FB /* SourceLocation.h */; };
DED7D7460A524295003AD0FB /* SourceManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7360A524295003AD0FB /* SourceManager.h */; };
DED7D7470A524295003AD0FB /* TokenKinds.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7370A524295003AD0FB /* TokenKinds.def */; };
@@ -82,7 +81,6 @@
DED7D74F0A524295003AD0FB /* Preprocessor.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7400A524295003AD0FB /* Preprocessor.h */; };
DED7D77A0A5242C7003AD0FB /* Diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D75D0A5242C7003AD0FB /* Diagnostic.cpp */; };
DED7D77B0A5242C7003AD0FB /* FileManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D75E0A5242C7003AD0FB /* FileManager.cpp */; };
- DED7D7880A5242C7003AD0FB /* SourceBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D76C0A5242C7003AD0FB /* SourceBuffer.cpp */; };
DED7D7890A5242C7003AD0FB /* SourceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D76D0A5242C7003AD0FB /* SourceManager.cpp */; };
DED7D78A0A5242C7003AD0FB /* TokenKinds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D76E0A5242C7003AD0FB /* TokenKinds.cpp */; };
DED7D7C20A5242E6003AD0FB /* IdentifierTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED7D79D0A5242E6003AD0FB /* IdentifierTable.cpp */; };
@@ -106,7 +104,6 @@
DED7D7410A524295003AD0FB /* Diagnostic.h in CopyFiles */,
DED7D7420A524295003AD0FB /* DiagnosticKinds.def in CopyFiles */,
DED7D7430A524295003AD0FB /* FileManager.h in CopyFiles */,
- DED7D7440A524295003AD0FB /* SourceBuffer.h in CopyFiles */,
DED7D7450A524295003AD0FB /* SourceLocation.h in CopyFiles */,
DED7D7460A524295003AD0FB /* SourceManager.h in CopyFiles */,
DED7D7470A524295003AD0FB /* TokenKinds.def in CopyFiles */,
@@ -216,7 +213,6 @@
DED7D7310A524295003AD0FB /* Diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Diagnostic.h; sourceTree = "<group>"; };
DED7D7320A524295003AD0FB /* DiagnosticKinds.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DiagnosticKinds.def; sourceTree = "<group>"; };
DED7D7330A524295003AD0FB /* FileManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileManager.h; sourceTree = "<group>"; };
- DED7D7340A524295003AD0FB /* SourceBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SourceBuffer.h; sourceTree = "<group>"; };
DED7D7350A524295003AD0FB /* SourceLocation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SourceLocation.h; sourceTree = "<group>"; };
DED7D7360A524295003AD0FB /* SourceManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SourceManager.h; sourceTree = "<group>"; };
DED7D7370A524295003AD0FB /* TokenKinds.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = TokenKinds.def; sourceTree = "<group>"; };
@@ -230,7 +226,6 @@
DED7D7400A524295003AD0FB /* Preprocessor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Preprocessor.h; sourceTree = "<group>"; };
DED7D75D0A5242C7003AD0FB /* Diagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Diagnostic.cpp; sourceTree = "<group>"; };
DED7D75E0A5242C7003AD0FB /* FileManager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FileManager.cpp; sourceTree = "<group>"; };
- DED7D76C0A5242C7003AD0FB /* SourceBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SourceBuffer.cpp; sourceTree = "<group>"; };
DED7D76D0A5242C7003AD0FB /* SourceManager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SourceManager.cpp; sourceTree = "<group>"; };
DED7D76E0A5242C7003AD0FB /* TokenKinds.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TokenKinds.cpp; sourceTree = "<group>"; };
DED7D79D0A5242E6003AD0FB /* IdentifierTable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IdentifierTable.cpp; sourceTree = "<group>"; };
@@ -394,7 +389,6 @@
DED7D7320A524295003AD0FB /* DiagnosticKinds.def */,
DED7D7330A524295003AD0FB /* FileManager.h */,
DE06B73D0A8307640050E87E /* LangOptions.h */,
- DED7D7340A524295003AD0FB /* SourceBuffer.h */,
DED7D7350A524295003AD0FB /* SourceLocation.h */,
DED7D7360A524295003AD0FB /* SourceManager.h */,
DE46BF270AE0A82D00CC047C /* TargetInfo.h */,
@@ -431,7 +425,6 @@
children = (
DED7D75D0A5242C7003AD0FB /* Diagnostic.cpp */,
DED7D75E0A5242C7003AD0FB /* FileManager.cpp */,
- DED7D76C0A5242C7003AD0FB /* SourceBuffer.cpp */,
DED7D76D0A5242C7003AD0FB /* SourceManager.cpp */,
DED7D76E0A5242C7003AD0FB /* TokenKinds.cpp */,
DED626C80AE0C065001E80A4 /* TargetInfo.cpp */,
@@ -483,12 +476,10 @@
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
- compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
projectDirPath = "";
projectRoot = "";
- shouldCheckCompatibility = 1;
targets = (
8DD76F620486A84900D96B5E /* clang */,
);
@@ -502,7 +493,6 @@
files = (
DED7D77A0A5242C7003AD0FB /* Diagnostic.cpp in Sources */,
DED7D77B0A5242C7003AD0FB /* FileManager.cpp in Sources */,
- DED7D7880A5242C7003AD0FB /* SourceBuffer.cpp in Sources */,
DED7D7890A5242C7003AD0FB /* SourceManager.cpp in Sources */,
DED7D78A0A5242C7003AD0FB /* TokenKinds.cpp in Sources */,
DED7D7C20A5242E6003AD0FB /* IdentifierTable.cpp in Sources */,
Modified: cfe/cfe/trunk/include/clang/Basic/Diagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/include/clang/Basic/Diagnostic.h (original)
+++ cfe/cfe/trunk/include/clang/Basic/Diagnostic.h Wed Jul 11 11:44:14 2007
@@ -19,7 +19,6 @@
namespace llvm {
namespace clang {
class DiagnosticClient;
- class SourceBuffer;
class SourceLocation;
// Import the diagnostic enums themselves.
Removed: cfe/cfe/trunk/include/clang/Basic/SourceBuffer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/include/clang/Basic/SourceBuffer.h?rev=39425&view=auto
==============================================================================
--- cfe/cfe/trunk/include/clang/Basic/SourceBuffer.h (original)
+++ cfe/cfe/trunk/include/clang/Basic/SourceBuffer.h (removed)
@@ -1,85 +0,0 @@
-//===--- SourceBuffer.h - C Language Family Source Buffer -------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file was developed by Chris Lattner and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the SourceBuffer interface.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_SOURCEBUFFER_H
-#define LLVM_CLANG_SOURCEBUFFER_H
-
-#include "llvm/Support/DataTypes.h"
-
-namespace llvm {
-namespace clang {
-
-/// SourceBuffer - This interface provides simple read-only access to the raw
-/// bits in a source file in a memory efficient way. In addition to basic
-/// access to the characters in the file, this interface guarantees you can read
-/// one character past the end of the file, and that this character will read as
-/// '\0'.
-class SourceBuffer {
- const char *BufferStart; // Start of the buffer.
- const char *BufferEnd; // End of the buffer.
-
- /// MustDeleteBuffer - True if we allocated this buffer. If so, the
- /// destructor must know the delete[] it.
- bool MustDeleteBuffer;
-protected:
- SourceBuffer() : MustDeleteBuffer(false) {}
- void init(const char *BufStart, const char *BufEnd);
- void initCopyOf(const char *BufStart, const char *BufEnd);
-public:
- virtual ~SourceBuffer();
-
- const char *getBufferStart() const { return BufferStart; }
- const char *getBufferEnd() const { return BufferEnd; }
- unsigned getBufferSize() const { return BufferEnd-BufferStart; }
-
- /// getBufferIdentifier - Return an identifier for this buffer, typically the
- /// filename it was read from.
- virtual const char *getBufferIdentifier() const {
- return "Unknown buffer";
- }
-
- /// getFile - Open the specified file as a SourceBuffer, returning a new
- /// SourceBuffer if successful, otherwise returning null. If FileSize is
- /// specified, this means that the client knows that the file exists and that
- /// it has the specified size.
- static SourceBuffer *getFile(const char *FilenameStart, unsigned FnSize,
- int64_t FileSize = -1);
-
- /// getMemBuffer - Open the specified memory range as a SourceBuffer. Note
- /// that EndPtr[0] must be a null byte and be accessible!
- static SourceBuffer *getMemBuffer(const char *StartPtr, const char *EndPtr,
- const char *BufferName = "");
-
- /// getNewMemBuffer - Allocate a new SourceBuffer of the specified size that
- /// is completely initialized to zeros. Note that the caller should
- /// initialize the memory allocated by this method. The memory is owned by
- /// the SourceBuffer object.
- static SourceBuffer *getNewMemBuffer(unsigned Size,
- const char *BufferName = "");
-
- /// getNewUninitMemBuffer - Allocate a new SourceBuffer of the specified size
- /// that is not initialized. Note that the caller should initialize the
- /// memory allocated by this method. The memory is owned by the SourceBuffer
- /// object.
- static SourceBuffer *getNewUninitMemBuffer(unsigned Size,
- const char *BufferName = "");
-
- /// getSTDIN - Read all of stdin into a file buffer, and return it. This
- /// fails if stdin is empty.
- static SourceBuffer *getSTDIN();
-};
-
-} // end namespace clang
-} // end namespace llvm
-
-#endif
Modified: cfe/cfe/trunk/include/clang/Basic/SourceManager.h
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/include/clang/Basic/SourceManager.h?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/include/clang/Basic/SourceManager.h (original)
+++ cfe/cfe/trunk/include/clang/Basic/SourceManager.h Wed Jul 11 11:44:14 2007
@@ -20,9 +20,10 @@
#include <list>
namespace llvm {
+class MemoryBuffer;
+
namespace clang {
-class SourceBuffer;
class SourceManager;
class FileEntry;
class IdentifierTokenInfo;
@@ -31,11 +32,11 @@
///
namespace SrcMgr {
/// FileInfo - Once instance of this struct is kept for every file loaded or
- /// used. This object owns the SourceBuffer object.
+ /// used. This object owns the MemoryBuffer object.
struct FileInfo {
/// Buffer - The actual buffer containing the characters from the input
/// file.
- const SourceBuffer *Buffer;
+ const MemoryBuffer *Buffer;
/// SourceLineCache - A new[]'d array of offsets for each source line. This
/// is lazily computed.
@@ -62,7 +63,7 @@
/// For the primary translation unit, it comes from SourceLocation() aka 0.
///
/// There are three types of FileID's:
- /// 1. Normal SourceBuffer (file). These are represented by a "InfoRec *",
+ /// 1. Normal MemoryBuffer (file). These are represented by a "InfoRec *",
/// describing the source file, and a Chunk number, which factors into
/// the SourceLocation's offset from the start of the buffer.
/// 2. Macro Expansions. These indicate that the logical location is
@@ -141,7 +142,7 @@
/// SourceManager - This file handles loading and caching of source files into
-/// memory. This object owns the SourceBuffer objects for all of the loaded
+/// memory. This object owns the MemoryBuffer objects for all of the loaded
/// files and assigns unique FileID's for each unique #include chain.
///
/// The SourceManager can be queried for information about SourceLocation
@@ -186,8 +187,8 @@
/// createFileIDForMemBuffer - Create a new FileID that represents the
/// specified memory buffer. This does no caching of the buffer and takes
- /// ownership of the SourceBuffer, so only pass a SourceBuffer to this once.
- unsigned createFileIDForMemBuffer(const SourceBuffer *Buffer) {
+ /// ownership of the MemoryBuffer, so only pass a MemoryBuffer to this once.
+ unsigned createFileIDForMemBuffer(const MemoryBuffer *Buffer) {
return createFileID(createMemBufferInfoRec(Buffer), SourceLocation());
}
@@ -199,7 +200,7 @@
/// getBuffer - Return the buffer for the specified FileID.
///
- const SourceBuffer *getBuffer(unsigned FileID) const {
+ const MemoryBuffer *getBuffer(unsigned FileID) const {
return getFileInfo(FileID)->Buffer;
}
@@ -224,7 +225,7 @@
}
/// getCharacterData - Return a pointer to the start of the specified location
- /// in the appropriate SourceBuffer.
+ /// in the appropriate MemoryBuffer.
const char *getCharacterData(SourceLocation SL) const;
/// getColumnNumber - Return the column # for the specified include position.
@@ -234,7 +235,7 @@
/// getLineNumber - Given a SourceLocation, return the physical line number
/// for the position indicated. This requires building and caching a table of
- /// line offsets for the SourceBuffer, so this is not cheap: use only when
+ /// line offsets for the MemoryBuffer, so this is not cheap: use only when
/// about to emit a diagnostic.
unsigned getLineNumber(SourceLocation Loc);
@@ -297,7 +298,7 @@
/// createMemBufferInfoRec - Create a new info record for the specified memory
/// buffer. This does no caching.
- const SrcMgr::InfoRec *createMemBufferInfoRec(const SourceBuffer *Buffer);
+ const SrcMgr::InfoRec *createMemBufferInfoRec(const MemoryBuffer *Buffer);
const SrcMgr::FileIDInfo *getFIDInfo(unsigned FileID) const {
assert(FileID-1 < FileIDs.size() && "Invalid FileID!");
Modified: cfe/cfe/trunk/include/clang/Lex/Lexer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/include/clang/Lex/Lexer.h?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/include/clang/Lex/Lexer.h (original)
+++ cfe/cfe/trunk/include/clang/Lex/Lexer.h Wed Jul 11 11:44:14 2007
@@ -21,10 +21,11 @@
#include <vector>
namespace llvm {
+class MemoryBuffer;
+
namespace clang {
class Diagnostic;
class Preprocessor;
-class SourceBuffer;
/// Lexer - This provides a simple interface that turns a text buffer into a
/// stream of tokens. This provides no support for file reading or buffering,
@@ -34,7 +35,7 @@
//===--------------------------------------------------------------------===//
// Constant configuration values for this lexer.
const char * const BufferEnd; // End of the buffer.
- const SourceBuffer *InputFile; // The file we are reading from.
+ const MemoryBuffer *InputFile; // The file we are reading from.
unsigned CurFileID; // FileID for the current input file.
Preprocessor &PP; // Preprocessor object controlling lexing.
LangOptions Features; // Features enabled by this language (cache).
@@ -95,9 +96,9 @@
/// Lexer constructor - Create a new lexer object for the specified buffer
/// with the specified preprocessor managing the lexing process. This lexer
- /// assumes that the specified SourceBuffer and Preprocessor objects will
+ /// assumes that the specified MemoryBuffer and Preprocessor objects will
/// outlive it, but doesn't take ownership of either pointer.
- Lexer(const SourceBuffer *InBuffer, unsigned CurFileID, Preprocessor &PP,
+ Lexer(const MemoryBuffer *InBuffer, unsigned CurFileID, Preprocessor &PP,
const char *BufStart = 0, const char *BufEnd = 0);
/// getFeatures - Return the language features currently enabled. NOTE: this
Modified: cfe/cfe/trunk/include/clang/Lex/ScratchBuffer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/include/clang/Lex/ScratchBuffer.h?rev=39426&r1=39425&r2=39426&view=diff
==============================================================================
--- cfe/cfe/trunk/include/clang/Lex/ScratchBuffer.h (original)
+++ cfe/cfe/trunk/include/clang/Lex/ScratchBuffer.h Wed Jul 11 11:44:14 2007
@@ -17,7 +17,6 @@
namespace llvm {
namespace clang {
class SourceManager;
- class SourceBuffer;
class SourceLocation;
/// ScratchBuffer - This class exposes a simple interface for the dynamic
@@ -31,13 +30,13 @@
public:
ScratchBuffer(SourceManager &SM);
- /// getToken - Splat the specified text into a temporary SourceBuffer and
+ /// getToken - Splat the specified text into a temporary MemoryBuffer and
/// return a SourceLocation that refers to the token. The SourceLoc value
/// gives a virtual location that the token will appear to be from.
SourceLocation getToken(const char *Buf, unsigned Len,
SourceLocation SourceLoc);
- /// getToken - Splat the specified text into a temporary SourceBuffer and
+ /// getToken - Splat the specified text into a temporary MemoryBuffer and
/// return a SourceLocation that refers to the token. This is just like the
/// previous method, but returns a location that indicates the physloc of the
/// token.
More information about the cfe-commits
mailing list