14#ifndef LLVM_CLANG_BASIC_SOURCELOCATION_H
15#define LLVM_CLANG_BASIC_SOURCELOCATION_H
19#include "llvm/ADT/StringRef.h"
27class FoldingSetNodeID;
56 unsigned getHashValue()
const {
return static_cast<unsigned>(ID); }
70 int getOpaqueValue()
const {
return ID; }
102 enum :
UIntTy { MacroIDBit = 1ULL << (8 *
sizeof(
UIntTy) - 1) };
118 UIntTy getOffset()
const {
return ID & ~MacroIDBit; }
120 static SourceLocation getFileLoc(
UIntTy ID) {
121 assert((
ID & MacroIDBit) == 0 &&
"Ran out of source locations!");
127 static SourceLocation getMacroLoc(
UIntTy ID) {
128 assert((
ID & MacroIDBit) == 0 &&
"Ran out of source locations!");
130 L.ID = MacroIDBit |
ID;
138 assert(((getOffset()+Offset) & MacroIDBit) == 0 &&
"offset overflow");
194 return !(LHS == RHS);
232 return B ==
X.B &&
E ==
X.E;
236 return B !=
X.B ||
E !=
X.E;
241 return B <= other.B &&
E >= other.E;
258 bool IsTokenRange =
false;
306 const char *Filename =
nullptr;
315 :
Filename(FN), ID(FID), Line(Ln), Col(Co), IncludeLoc(IL) {}
384 assert(SrcMgr &&
"SourceManager is NULL.");