1 // -*- related-file-name: "../../liblcdf/landmark.cc" -*- 2 #ifndef LCDF_LANDMARK_HH 3 #define LCDF_LANDMARK_HH 4 #include <lcdf/string.hh> 5 6 class Landmark { public: 7 Landmark()8 Landmark() : _file(), _line(~0U) { } Landmark(const String & f)9 explicit Landmark(const String &f) : _file(f), _line(~0U) { } Landmark(const String & f,unsigned l)10 Landmark(const String &f, unsigned l) : _file(f), _line(l) { } 11 operator bool() const12 operator bool() const { return _file; } operator !() const13 bool operator!() const { return !_file; } has_line() const14 bool has_line() const { return _line != ~0U; } 15 file() const16 const String &file() const { return _file; } line() const17 unsigned line() const { return _line; } 18 19 Landmark next_line() const; whole_file() const20 Landmark whole_file() const { return Landmark(_file); } 21 22 operator String() const; 23 24 private: 25 26 String _file; 27 unsigned _line; 28 29 }; 30 31 Landmark operator+(const Landmark &, int); 32 33 inline Landmark next_line() const34Landmark::next_line() const 35 { 36 return *this + 1; 37 } 38 39 #endif 40