[cfe-commits] r56806 - in /cfe/trunk: include/clang/Basic/SourceLocation.h lib/Basic/SourceLocation.cpp
Chris Lattner
sabre at nondot.org
Mon Sep 29 14:46:13 PDT 2008
Author: lattner
Date: Mon Sep 29 16:46:13 2008
New Revision: 56806
URL: http://llvm.org/viewvc/llvm-project?rev=56806&view=rev
Log:
Make some methods const, add some helpers to FullSourceLoc,
and add a dump method to FullSourceLoc! Patch by Nico Weber!
Modified:
cfe/trunk/include/clang/Basic/SourceLocation.h
cfe/trunk/lib/Basic/SourceLocation.cpp
Modified: cfe/trunk/include/clang/Basic/SourceLocation.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/SourceLocation.h?rev=56806&r1=56805&r2=56806&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/SourceLocation.h (original)
+++ cfe/trunk/include/clang/Basic/SourceLocation.h Mon Sep 29 16:46:13 2008
@@ -87,7 +87,7 @@
static bool isValidMacroPhysOffs(int Val) {
if (Val >= 0)
return Val < (1 << (MacroPhysOffsBits-1));
- return -Val < (1 << (MacroPhysOffsBits-1));
+ return -Val <= (1 << (MacroPhysOffsBits-1));
}
static SourceLocation getMacroLoc(unsigned MacroID, int PhysOffs){
@@ -231,8 +231,9 @@
return *SrcMgr;
}
- FullSourceLoc getLogicalLoc();
- FullSourceLoc getIncludeLoc();
+ FullSourceLoc getLogicalLoc() const;
+ FullSourceLoc getPhysicalLoc() const;
+ FullSourceLoc getIncludeLoc() const;
unsigned getLineNumber() const;
unsigned getColumnNumber() const;
@@ -240,6 +241,9 @@
unsigned getLogicalLineNumber() const;
unsigned getLogicalColumnNumber() const;
+ unsigned getPhysicalLineNumber() const;
+ unsigned getPhysicalColumnNumber() const;
+
const char *getCharacterData() const;
const llvm::MemoryBuffer* getBuffer() const;
@@ -260,6 +264,10 @@
bool operator!=(const FullSourceLoc& RHS) const {
return SrcMgr != RHS.SrcMgr || Loc != RHS.Loc;
}
+
+ /// Prints information about this FullSourceLoc to stderr. Useful for
+ /// debugging.
+ void dump() const;
};
} // end namespace clang
Modified: cfe/trunk/lib/Basic/SourceLocation.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/SourceLocation.cpp?rev=56806&r1=56805&r2=56806&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/SourceLocation.cpp (original)
+++ cfe/trunk/lib/Basic/SourceLocation.cpp Mon Sep 29 16:46:13 2008
@@ -16,7 +16,6 @@
#include "clang/Basic/SourceManager.h"
#include "llvm/Bitcode/Serialize.h"
#include "llvm/Bitcode/Deserialize.h"
-
using namespace clang;
void SourceLocation::Emit(llvm::Serializer& S) const {
@@ -38,14 +37,19 @@
return SourceRange(A,B);
}
-FullSourceLoc FullSourceLoc::getLogicalLoc() {
+FullSourceLoc FullSourceLoc::getLogicalLoc() const {
+ assert (isValid());
+ return FullSourceLoc(SrcMgr->getLogicalLoc(Loc), *SrcMgr);
+}
+
+FullSourceLoc FullSourceLoc::getPhysicalLoc() const {
assert (isValid());
- return FullSourceLoc(SrcMgr->getLogicalLoc(Loc),*SrcMgr);
+ return FullSourceLoc(SrcMgr->getPhysicalLoc(Loc), *SrcMgr);
}
-FullSourceLoc FullSourceLoc::getIncludeLoc() {
+FullSourceLoc FullSourceLoc::getIncludeLoc() const {
assert (isValid());
- return FullSourceLoc(SrcMgr->getIncludeLoc(Loc),*SrcMgr);
+ return FullSourceLoc(SrcMgr->getIncludeLoc(Loc), *SrcMgr);
}
unsigned FullSourceLoc::getLineNumber() const {
@@ -69,6 +73,16 @@
return SrcMgr->getLogicalColumnNumber(Loc);
}
+unsigned FullSourceLoc::getPhysicalLineNumber() const {
+ assert (isValid());
+ return SrcMgr->getPhysicalLineNumber(Loc);
+}
+
+unsigned FullSourceLoc::getPhysicalColumnNumber() const {
+ assert (isValid());
+ return SrcMgr->getPhysicalColumnNumber(Loc);
+}
+
const char* FullSourceLoc::getSourceName() const {
assert (isValid());
return SrcMgr->getSourceName(Loc);
@@ -98,3 +112,23 @@
unsigned FullSourceLoc::getCanonicalFileID() const {
return SrcMgr->getCanonicalFileID(Loc);
}
+
+void FullSourceLoc::dump() const {
+ if (!isValid()) {
+ fprintf(stderr, "Invalid Loc\n");
+ return;
+ }
+
+ if (isFileID()) {
+ // The logical and physical pos is identical for file locs.
+ fprintf(stderr, "File Loc from '%s': %d: %d\n",
+ getSourceName(), getLogicalLineNumber(),
+ getLogicalColumnNumber());
+ } else {
+ fprintf(stderr, "Macro Loc (\n Physical: ");
+ getPhysicalLoc().dump();
+ fprintf(stderr, " Logical: ");
+ getLogicalLoc().dump();
+ fprintf(stderr, ")\n");
+ }
+}
More information about the cfe-commits
mailing list