Mercurial > projects > dang
annotate src/basic/SourceLocation.d @ 207:e0551773a005
Added the correct version.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Tue, 12 Aug 2008 18:19:34 +0200 |
parents | d3c148ca429b |
children |
rev | line source |
---|---|
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
1 module basic.SourceLocation; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
2 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
3 import Integer = tango.text.convert.Integer; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
4 |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
5 /// Shorter alias for SourceLocation |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
6 public alias SourceLocation SLoc; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
7 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
8 /// SourceLocation points to a place in some buffer |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
9 struct SourceLocation |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
10 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
11 /// Returns true, if the location is from a real file |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
12 bool isReal() { return (val & 0x80_00_00_00) == 0; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
13 /// Returns true, if the location is not from a real file |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
14 bool isVirtual() { return (val & 0x80_00_00_00) != 0; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
15 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
16 /// Check if this location is invalid or not |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
17 bool isValid() { return val != uint.max; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
18 /// ditto |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
19 bool isInvalid() { return val == uint.max; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
20 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
21 /** |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
22 Extracts the file id. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
23 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
24 Warning: In release mode this may return junk, if the loc is not from a |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
25 file |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
26 **/ |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
27 uint fileID() { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
28 assert(isValid, "Location is invalid"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
29 assert(isReal, "You can only extract fileID from a real location"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
30 // Here we can rely on two facts, first that the high bit is zero |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
31 // since its a real position, second that FileOffset is saved in the |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
32 // high end, so all we need is some shifting |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
33 return val >> Bits.FileOffset; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
34 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
35 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
36 /** |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
37 Extracts the offset into the "file". (actually in to the referenced |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
38 chunk) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
39 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
40 Warning: In release mode this may return junk, if the loc is not from a |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
41 file |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
42 **/ |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
43 uint fileOffset() { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
44 assert(isValid, "Location is invalid"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
45 assert(isReal, "You can only extract fileOffset from real locations"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
46 // FileOffset is stored in the lower bits, so all that is needed is a |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
47 // binary and with all ones in the lower bits. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
48 return val & (1 << Bits.FileOffset) - 1; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
49 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
50 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
51 /// Get a new location, placed n bytes after the given location |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
52 SourceLocation opAdd(int n) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
53 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
54 SourceLocation res = *this; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
55 res.val += n; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
56 return res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
57 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
58 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
59 /// Get a new location, placed n bytes before the given location |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
60 SourceLocation opSub(int n) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
61 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
62 SourceLocation res = *this; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
63 res.val -= n; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
64 return res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
65 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
66 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
67 /// Get the length between two location |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
68 int opSub(SourceLocation loc) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
69 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
70 return val - loc.val; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
71 } |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
72 |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
73 /// Creates a SourceLocation from a File ID |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
74 static SourceLocation fromFileID(uint fileID) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
75 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
76 assert(fileID < Bits.MaxFileID, "To large fileID"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
77 SourceLocation res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
78 res.val = fileID << Bits.FileOffset; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
79 return res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
80 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
81 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
82 char[] toString() |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
83 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
84 return Integer.toString(val); |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
85 } |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
86 /** |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
87 Used for invalid/unknown locations. (also the default value, but this is |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
88 more explicit) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
89 **/ |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
90 static const SourceLocation Invalid = {val: uint.max}; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
91 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
92 private: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
93 /** |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
94 A SourceLocation consists of 1 bit, indicating real or virtual, meaning |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
95 if the location points to a file(real), a string mixin or has been |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
96 affected by #line(virtual). That information is saved in the most |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
97 significant bit. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
98 The rest depends on which type we are dealing with. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
99 Real: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
100 13 bits for a file identifier |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
101 18 bits for offset into that "file" (one file may be split) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
102 Virtual: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
103 Unknown for now. Likely skewed toward more ids and some meta data |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
104 An invalid location is uint.max, this might happen by accident but its |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
105 unlikely. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
106 **/ |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
107 uint val = uint.max; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
108 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
109 /** |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
110 This enum contains some constants that are useful for manipulating |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
111 SourceLocation's, like the size of various “members” of val. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
112 **/ |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
113 static enum Bits { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
114 /// Number of bits used for the offset into file buffers |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
115 FileOffset = 18, |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
116 /// Number of bits used to identify which file buffer this is from |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
117 FileID = 31 - FileOffset, |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
118 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
119 /// Indicates how much can be indexed within one block(2^FileOffset) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
120 MaxFileOffset = 1 << FileOffset, |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
121 MaxFileID = 1 << FileID, |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
122 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
123 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
124 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
125 /// A simple pair used to describe a range in a buffer and not just a point. |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
126 struct SourceRange |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
127 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
128 SourceLocation begin, end; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
129 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
130 static SourceRange opCall(SourceLocation loc) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
131 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
132 return SourceRange(loc, loc + 1); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
133 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
134 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
135 static SourceRange opCall(SourceLocation begin, SourceLocation end) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
136 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
137 SourceRange res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
138 res.begin = begin; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
139 res.end = end; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
140 return res; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
141 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
142 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
143 bool isValid() { return begin.isValid && end.isValid; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
144 bool isInvalid() { return begin.isInvalid || end.isInvalid; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
145 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
146 bool isReal() { return begin.isReal && end.isReal; } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
147 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
148 /// Get a new range spanning both ranges |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
149 SourceRange opAdd(SourceRange that) |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
150 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
151 assert(this.isValid && that.isValid, "Invalid range"); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
152 return SourceRange( |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
153 this.begin.val < that.begin.val? this.begin : that.begin, |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
154 this.end.val > that.end.val? this.end : that.end); |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
155 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
156 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
157 |