SMLoc.h revision 76d76d568942e08ee35762532a7090a596af906c
176d76d568942e08ee35762532a7090a596af906cSean Callanan//===- SMLoc.h - Source location for use with diagnostics -------*- C++ -*-===// 21ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// 31ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// The LLVM Compiler Infrastructure 41ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// 51ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// This file is distributed under the University of Illinois Open Source 61ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// License. See LICENSE.TXT for details. 71ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// 81ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan//===----------------------------------------------------------------------===// 91ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// 101ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// This file declares the SMLoc class. This class encapsulates a location in 111ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// source code for use in diagnostics. 121ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// 131ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan//===----------------------------------------------------------------------===// 141ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 151ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan#ifndef SUPPORT_SMLOC_H 161ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan#define SUPPORT_SMLOC_H 171ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 181ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanannamespace llvm { 191ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 201ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan// SMLoc - Represents a location in source code. 211ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callananclass SMLoc { 221ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan const char *Ptr; 231ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callananpublic: 241ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan SMLoc() : Ptr(0) {} 251ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan SMLoc(const SMLoc &RHS) : Ptr(RHS.Ptr) {} 261ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 271ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan bool isValid() const { return Ptr != 0; } 281ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 291ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan bool operator==(const SMLoc &RHS) const { return RHS.Ptr == Ptr; } 301ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan bool operator!=(const SMLoc &RHS) const { return RHS.Ptr != Ptr; } 311ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 321ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan const char *getPointer() const { return Ptr; } 331ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 341ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan static SMLoc getFromPointer(const char *Ptr) { 351ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan SMLoc L; 361ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan L.Ptr = Ptr; 371ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan return L; 381ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan } 391ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan}; 401ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 411ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan} 421ae486a4a06a5132c094b9ce66836ff081fea3a6Sean Callanan 4376d76d568942e08ee35762532a7090a596af906cSean Callanan#endif 44