annotate src/basic/SourceManager.d @ 206:d3c148ca429b

Major moving of files. all src now goes into src, all docs in docs.
author Anders Johnsen <skabet@gmail.com>
date Tue, 12 Aug 2008 18:14:56 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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.SourceManager;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
2
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
3 import tango.core.Memory : GC;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
4 import tango.io.UnicodeFile;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
5 import tango.io.Stdout;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
6 import tango.text.convert.Layout;
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 public import 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
9
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
10 private alias char[] string;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
11
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
12 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
13 SourceManager is used to handle input files, by loading them in in chunks
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
14 that can be referenced elsewhere.
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 It will also help extract the line/col of locations and convert between
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
17 real and virtual locations
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
18 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
19 class SourceManager
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 this()
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
22 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
23 layout = new Layout!(char);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
24 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
25
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 Will load in the file belonging to the filename
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
28
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
29 filename = The file to load. Theres some assumptions about this file.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
30 1. The file has a BOM or is valid utf-8
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
31 2. The file is not empty, unreadable, a folder etc.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
32 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
33 SourceLocation addFile(string filename)
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 scope file = new UnicodeFile!(char)(filename, Encoding.UTF_8);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
36 auto file_data = file.read();
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
37 return createCheckpoints(file_data, filename);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
38 }
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 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
41 Returns a string slice containing the part of the file after loc (a
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
42 pointer might be better, it allows negative indexing)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
43 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
44 string getRawData(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
45 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
46 CP cp = checkpoints[loc.fileID];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
47 auto length = cp.data_end - cp.data.ptr;
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 cp.data.ptr[loc.fileOffset .. length];
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 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
52 Extracts the line number of 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
53 O("file size") if cache isn't built, O(log "lines in file") else
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
54 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
55 uint getLineNumber(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
56 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
57 assert(loc.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
58 assert(loc.isReal, "Virtual locations not supported yet");
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
59 assert(loc.fileID < checkpoints.length, "Non-existent 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
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
61 CP* cp = &checkpoints[loc.fileID];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
62 auto cache = &linecache[cp.meta_index];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
63 if (!cache.isCached)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
64 cache.build(cp.data_start[0 .. cp.data_end - cp.data_start]);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
65 return cache.lineOf(getFileOffset(loc));
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
66 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
67
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
68 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
69 Extracts the full byte offset into a file, at which a location
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
70 is pointing.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
71 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
72 uint getFileOffset(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
73 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
74 return loc.fileOffset
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
75 + checkpoints[loc.fileID].part * loc.Bits.MaxFileOffset;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
76 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
77
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
78 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
79 Extracts a string containing the entire line loc appears in.
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 string getLine(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
82 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
83 // The line is extracted by getting two pointers to the exact location
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
84 // and decreasing one until the nearest newline while the other ptr is
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
85 // increased to the nearest newline.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
86 CP* cp = &checkpoints[loc.fileID];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
87 char* ptr = cp.data.ptr + loc.fileOffset;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
88 char* ptr_lo = ptr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
89 while (cp.inRange(ptr_lo) && *ptr_lo != '\n' && *ptr_lo != '\r')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
90 --ptr_lo;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
91 while (cp.inRange(ptr) && *ptr != '\n' && *ptr != '\r')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
92 ++ptr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
93 return ptr_lo[1 .. ptr - ptr_lo];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
94 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
95
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
96 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
97 Gets the column of where the loc appears.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
98 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
99 int getColumn(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
100 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
101 // Use same approach as getLine
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
102
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
103 CP* cp = &checkpoints[loc.fileID];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
104 char* ptr = cp.data.ptr + loc.fileOffset;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
105 char* ptr_lo = ptr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
106 while (cp.inRange(ptr_lo) && *ptr_lo != '\n' && *ptr_lo != '\r')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
107 --ptr_lo;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
108 return cast(int)ptr - cast(int)ptr_lo - 1;
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
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
111 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
112 Get the original source text of a SourceRange
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
113 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
114 string getText(SourceRange loc)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
115 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
116 assert(loc.isValid, "Range 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
117 assert(loc.isReal, "Virtual locations not supported yet");
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
118 auto begin = getFileOffset(loc.begin);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
119 auto end = getFileOffset(loc.end);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
120 return checkpoints[loc.begin.fileID].data_start[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
121 }
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 Get the original source text
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
125 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
126 string getText(SourceLocation loc, size_t length)
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 return getText(SourceRange(loc, loc + length));
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
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 Convert a location into a string. Something like "file(line)"
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 string getLocationAsString(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
135 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
136 assert(loc.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
137 return layout.convert("{}({})",
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
138 checkpoints[loc.fileID].filename,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
139 getLineNumber(loc));
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
140 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
141 string getLocationAsString(SourceRange loc)
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 return layout.convert("{}({}:{})",
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
144 checkpoints[loc.begin.fileID].filename,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
145 getFileOffset(loc.begin),
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
146 getFileOffset(loc.end));
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
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
149 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
150 Get the file name of a loc.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
151 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
152 string getFile(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
153 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
154 return checkpoints[loc.fileID].filename;
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 private:
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
158 synchronized
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
159 SourceLocation createCheckpoints(string data, string source_file)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
160 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
161 // The line-cache is added, but not built,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
162 // getLineNumber makes sure it is called when needed.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
163 linecache ~= FileLineCache();
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
164 uint meta_index = linecache.length - 1;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
165
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
166 // SourceLocation's can only index relatively short buffers, therefore
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
167 // the file is split into several checkpoints.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
168 uint checkpoint_counter = 0;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
169 char* data_start = data.ptr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
170 char* data_end = data.ptr + data.length;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
171 while (data.length > 0)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
172 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
173 uint to_take = min(data.length, SourceLocation.Bits.MaxFileOffset);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
174 checkpoints ~=
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
175 CP(source_file,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
176 data_start,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
177 data_end,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
178 data[0 .. to_take],
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
179 checkpoint_counter++,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
180 meta_index);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
181 data = data[to_take .. $];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
182 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
183 checkpoint_counter = checkpoints.length - checkpoint_counter;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
184 return SourceLocation.fromFileID(checkpoint_counter);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
185 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
186
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
187 /// Contains the read/generated data.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
188 CP[] checkpoints;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
189 /// Cache used to speed up finding of line-starts.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
190 FileLineCache[] linecache;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
191 /// Used for formatting locations as strings.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
192 Layout!(char) layout;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
193
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
194 // These really should be magically available everywhere and templated.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
195 int min(int a, int b) { return a < b? a : b; }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
196 int max(int a, int b) { return a >= b? a : b; }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
197
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
198 // A Check Point is used to store a file in multiple parts, to overcome
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
199 // the limitation of SourceLocation only having a rather limited amount of
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
200 // bits to index any one file.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
201 struct CP
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
202 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
203 // read-only
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
204 char[] filename;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
205 // ditto
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
206 char* data_start;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
207 char* data_end;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
208 // ditto
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
209 char[] data;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
210 // ditto
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
211 uint part = 0;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
212 // ditto
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
213 uint meta_index = 0;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
214
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
215 bool inRange(char* p)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
216 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
217 return p >= data_start && p < data_end;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
218 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
219 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
220
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
221 struct FileLineCache
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
222 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
223 /// Contains the offset of the i'th line on index i
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
224 uint[] line_starts;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
225
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
226 /// Indicates weather the cache has been built 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
227 bool isCached = false;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
228
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
229 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
230 This method does a binary search to find the line that contains the
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
231 given offset.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
232 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
233 uint lineOf(uint offset)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
234 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
235 size_t beg = 0,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
236 end = line_starts.length,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
237 mid = end >> 1;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
238
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
239 while( beg < end )
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
240 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
241 if( line_starts[mid] <= offset )
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
242 beg = mid + 1;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
243 else
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
244 end = mid;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
245 mid = beg + ( end - beg ) / 2;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
246 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
247 return mid;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
248 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
249
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
250 /**
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
251 Builds the cache data - always make sure this has been called before
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
252 calling lineOf.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
253 **/
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
254 void build(char[] data)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
255 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
256 // j starts at 1, because we need an additional place in the array
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
257 // to indicate that line 1 starts at index 0.
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
258 size_t j = 1;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
259 char* it = data.ptr, end = data.ptr + data.length;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
260 for (; it != end; ++it)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
261 if (*it == '\n')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
262 ++j;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
263 // Allocate without initialization. Saves a bit of time
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
264 line_starts.length = j;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
265 line_starts[0] = 0;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
266
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
267 // Go over the data again, writing the line starts in our new array
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
268 j = 1;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
269 for (size_t i = 0; i < data.length; i++)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
270 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
271 if (data[i] == '\n')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
272 line_starts[j++] = i;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
273 else if (data[i] == '\r')
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
274 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
275 line_starts[j++] = i;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
276 i += cast(size_t)(data[i+1] == '\n');
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
277 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
278 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
279
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
280 isCached = true;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
281 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
282 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
283 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
284