take &self
[hiphop-php.git] / hphp / hhbbc / src-loc.h
blob18ecfe421565d3ab1294565aa754324674787257
1 /*
2 +----------------------------------------------------------------------+
3 | HipHop for PHP |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
16 #ifndef incl_HHBBC_SRC_LOC_H_
17 #define incl_HHBBC_SRC_LOC_H_
19 #include <cstdint>
20 #include <tuple>
22 namespace HPHP { namespace HHBBC {
24 //////////////////////////////////////////////////////////////////////
26 namespace php {
28 using LineNumber = uint32_t;
29 using ColNumber = uint32_t;
30 using LineRange = std::tuple<LineNumber,LineNumber>;
32 struct SrcPos {
33 bool operator==(SrcPos o) const {
34 return line == o.line && col == o.col;
36 bool operator!=(SrcPos o) const { return !(*this == o); }
38 LineNumber line;
39 ColNumber col;
42 struct SrcLoc {
43 SrcLoc()
44 : start{0,0}
45 , past{0,0}
48 SrcLoc(SrcPos start, SrcPos past)
49 : start(start)
50 , past(past)
53 bool isValid() const { return past != SrcPos{0,0}; }
55 bool operator==(SrcLoc o) const {
56 return start == o.start && past == o.past;
59 bool operator!=(SrcLoc o) const { return !(*this == o); }
61 SrcPos start;
62 SrcPos past;
65 std::string show(SrcLoc);
69 //////////////////////////////////////////////////////////////////////
73 #endif