| //==--- SourceLocation.cpp - Compact identifier for Source Files -*- C++ -*-==// | 
 | // | 
 | //                     The LLVM Compiler Infrastructure | 
 | // | 
 | // This file is distributed under the University of Illinois Open Source | 
 | // License. See LICENSE.TXT for details. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 | // | 
 | //  This file defines serialization methods for the SourceLocation class. | 
 | //  This file defines accessor methods for the FullSourceLoc class. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #include "clang/Basic/SourceLocation.h" | 
 | #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 { | 
 |   S.EmitInt(getRawEncoding());   | 
 | } | 
 |  | 
 | SourceLocation SourceLocation::ReadVal(llvm::Deserializer& D) { | 
 |   return SourceLocation::getFromRawEncoding(D.ReadInt());    | 
 | } | 
 |  | 
 | void SourceRange::Emit(llvm::Serializer& S) const { | 
 |   B.Emit(S); | 
 |   E.Emit(S); | 
 | } | 
 |  | 
 | SourceRange SourceRange::ReadVal(llvm::Deserializer& D) { | 
 |   SourceLocation A = SourceLocation::ReadVal(D); | 
 |   SourceLocation B = SourceLocation::ReadVal(D); | 
 |   return SourceRange(A,B); | 
 | } | 
 |  | 
 | FullSourceLoc FullSourceLoc::getLogicalLoc() { | 
 |   assert (isValid()); | 
 |   return FullSourceLoc(SrcMgr->getLogicalLoc(Loc),*SrcMgr); | 
 | } | 
 |  | 
 | FullSourceLoc FullSourceLoc::getIncludeLoc() { | 
 |   assert (isValid()); | 
 |   return FullSourceLoc(SrcMgr->getIncludeLoc(Loc),*SrcMgr); | 
 | } | 
 |  | 
 | unsigned FullSourceLoc::getLineNumber() { | 
 |   assert (isValid()); | 
 |   return SrcMgr->getLineNumber(Loc); | 
 | } | 
 |  | 
 | unsigned FullSourceLoc::getColumnNumber() { | 
 |   assert (isValid()); | 
 |   return SrcMgr->getColumnNumber(Loc); | 
 | } | 
 |  | 
 | const char* FullSourceLoc::getSourceName() const { | 
 |   assert (isValid()); | 
 |   return SrcMgr->getSourceName(Loc); | 
 | } | 
 |  | 
 | const FileEntry* FullSourceLoc::getFileEntryForLoc() const {  | 
 |   assert (isValid()); | 
 |   return SrcMgr->getFileEntryForLoc(Loc); | 
 | } | 
 |  | 
 | const char * FullSourceLoc::getCharacterData() const { | 
 |   assert (isValid()); | 
 |   return SrcMgr->getCharacterData(Loc); | 
 | } | 
 |  | 
 | const llvm::MemoryBuffer* FullSourceLoc::getBuffer() const { | 
 |   assert (isValid()); | 
 |   return SrcMgr->getBuffer(Loc.getFileID()); | 
 | } |