Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: pkg/front_end/lib/src/incremental/format.dart

Issue 2939653002: FlatBuffers formats for storing unlinked units. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/front_end/test/src/incremental/format_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'package:front_end/src/base/flat_buffers.dart' as fb;
6
7 /// Unlinked information about a `show` or `hide` combinator in an import or
8 /// export directive.
9 abstract class UnlinkedCombinator {
10 factory UnlinkedCombinator(List<int> bytes) {
11 fb.BufferContext rootRef = new fb.BufferContext.fromBytes(bytes);
12 return const _UnlinkedCombinatorReader().read(rootRef, 0);
13 }
14
15 /// List of names which are hidden.
16 /// Empty if this is a `show` combinator.
17 List<String> get hides;
18
19 /// List of names which are shown.
20 /// Empty if this is a `hide` combinator.
21 List<String> get shows;
22 }
23
24 /// Builder of [UnlinkedCombinator]s.
25 class UnlinkedCombinatorBuilder {
26 List<String> _shows;
27 List<String> _hides;
28
29 UnlinkedCombinatorBuilder({List<String> shows, List<String> hides})
30 : _shows = shows,
31 _hides = hides;
32
33 void set hides(List<String> value) {
34 this._hides = value;
35 }
36
37 void set shows(List<String> value) {
38 this._shows = value;
39 }
40
41 /// Finish building, and store into the [fbBuilder].
42 fb.Offset finish(fb.Builder fbBuilder) {
43 fb.Offset offset_shows;
44 fb.Offset offset_hides;
45 if (!(_shows == null || _shows.isEmpty)) {
46 offset_shows = fbBuilder
47 .writeList(_shows.map((b) => fbBuilder.writeString(b)).toList());
48 }
49 if (!(_hides == null || _hides.isEmpty)) {
50 offset_hides = fbBuilder
51 .writeList(_hides.map((b) => fbBuilder.writeString(b)).toList());
52 }
53 fbBuilder.startTable();
54 if (offset_shows != null) {
55 fbBuilder.addOffset(0, offset_shows);
56 }
57 if (offset_hides != null) {
58 fbBuilder.addOffset(1, offset_hides);
59 }
60 return fbBuilder.endTable();
61 }
62 }
63
64 /// Unlinked summary information about an import, export or part directive.
65 abstract class UnlinkedNamespaceDirective {
66 factory UnlinkedNamespaceDirective(List<int> bytes) {
67 fb.BufferContext rootRef = new fb.BufferContext.fromBytes(bytes);
68 return const _UnlinkedNamespaceDirectiveReader().read(rootRef, 0);
69 }
70
71 /// Combinators contained in the directive.
72 List<UnlinkedCombinator> get combinators;
73
74 /// URI used in the directive.
75 String get uri;
76 }
77
78 /// Builder of [UnlinkedNamespaceDirective]s.
79 class UnlinkedNamespaceDirectiveBuilder {
80 String _uri;
81 List<UnlinkedCombinatorBuilder> _combinators;
82
83 UnlinkedNamespaceDirectiveBuilder(
84 {String uri, List<UnlinkedCombinatorBuilder> combinators})
85 : _uri = uri,
86 _combinators = combinators;
87
88 void set combinators(List<UnlinkedCombinatorBuilder> value) {
89 this._combinators = value;
90 }
91
92 void set uri(String value) {
93 this._uri = value;
94 }
95
96 /// Finish building, and store into the [fbBuilder].
97 fb.Offset finish(fb.Builder fbBuilder) {
98 fb.Offset offset_uri;
99 fb.Offset offset_combinators;
100 if (!(_uri == null || _uri.isEmpty)) {
101 offset_uri = fbBuilder.writeString(_uri);
102 }
103 if (!(_combinators == null || _combinators.isEmpty)) {
104 offset_combinators = fbBuilder
105 .writeList(_combinators.map((b) => b.finish(fbBuilder)).toList());
106 }
107 fbBuilder.startTable();
108 fbBuilder.addOffset(0, offset_uri);
109 fbBuilder.addOffset(1, offset_combinators);
110 return fbBuilder.endTable();
111 }
112 }
113
114 abstract class UnlinkedUnit {
115 factory UnlinkedUnit(List<int> bytes) {
116 fb.BufferContext rootRef = new fb.BufferContext.fromBytes(bytes);
117 return const _UnlinkedUnitReader().read(rootRef, 0);
118 }
119
120 /// API signature of the unit.
121 /// It depends on all non-comment tokens outside the block bodies.
122 List<int> get apiSignature;
123
124 /// Export directives in the compilation unit.
125 List<UnlinkedNamespaceDirective> get exports;
126
127 /// Import directives in the compilation unit.
128 List<UnlinkedNamespaceDirective> get imports;
129
130 /// Part directives in the compilation unit.
131 List<UnlinkedNamespaceDirective> get parts;
132 }
133
134 /// Builder of [UnlinkedUnit]s.
135 class UnlinkedUnitBuilder {
136 List<int> _apiSignature;
137 List<UnlinkedNamespaceDirectiveBuilder> _imports;
138 List<UnlinkedNamespaceDirectiveBuilder> _exports;
139 List<UnlinkedNamespaceDirectiveBuilder> _parts;
140
141 UnlinkedUnitBuilder(
142 {List<int> apiSignature,
143 List<UnlinkedNamespaceDirectiveBuilder> imports,
144 List<UnlinkedNamespaceDirectiveBuilder> exports,
145 List<UnlinkedNamespaceDirectiveBuilder> parts})
146 : _apiSignature = apiSignature,
147 _imports = imports,
148 _exports = exports,
149 _parts = parts;
150
151 void set exports(List<UnlinkedNamespaceDirectiveBuilder> value) {
152 this._exports = value;
153 }
154
155 void set imports(List<UnlinkedNamespaceDirectiveBuilder> value) {
156 this._imports = value;
157 }
158
159 void set parts(List<UnlinkedNamespaceDirectiveBuilder> value) {
160 this._parts = value;
161 }
162
163 /// Finish building, and store into the [fbBuilder].
164 fb.Offset finish(fb.Builder fbBuilder) {
165 fb.Offset offset_apiSignature;
166 fb.Offset offset_imports;
167 fb.Offset offset_exports;
168 fb.Offset offset_parts;
169 if (!(_apiSignature == null || _apiSignature.isEmpty)) {
170 offset_apiSignature = fbBuilder.writeListUint8(_apiSignature);
171 }
172 if (!(_imports == null || _imports.isEmpty)) {
173 offset_imports = fbBuilder
174 .writeList(_imports.map((b) => b.finish(fbBuilder)).toList());
175 }
176 if (!(_exports == null || _exports.isEmpty)) {
177 offset_exports = fbBuilder
178 .writeList(_exports.map((b) => b.finish(fbBuilder)).toList());
179 }
180 if (!(_parts == null || _parts.isEmpty)) {
181 offset_parts =
182 fbBuilder.writeList(_parts.map((b) => b.finish(fbBuilder)).toList());
183 }
184 fbBuilder.startTable();
185 if (offset_apiSignature != null) {
186 fbBuilder.addOffset(0, offset_apiSignature);
187 }
188 if (offset_imports != null) {
189 fbBuilder.addOffset(1, offset_imports);
190 }
191 if (offset_exports != null) {
192 fbBuilder.addOffset(2, offset_exports);
193 }
194 if (offset_parts != null) {
195 fbBuilder.addOffset(3, offset_parts);
196 }
197 return fbBuilder.endTable();
198 }
199 }
200
201 class _UnlinkedCombinatorImpl implements UnlinkedCombinator {
202 final fb.BufferContext _bc;
203 final int _bcOffset;
204
205 List<String> _shows;
206 List<String> _hides;
207
208 _UnlinkedCombinatorImpl(this._bc, this._bcOffset);
209
210 @override
211 List<String> get hides {
212 _hides ??= const fb.ListReader<String>(const fb.StringReader())
213 .vTableGet(_bc, _bcOffset, 1, const <String>[]);
214 return _hides;
215 }
216
217 @override
218 List<String> get shows {
219 _shows ??= const fb.ListReader<String>(const fb.StringReader())
220 .vTableGet(_bc, _bcOffset, 0, const <String>[]);
221 return _shows;
222 }
223 }
224
225 class _UnlinkedCombinatorReader
226 extends fb.TableReader<_UnlinkedCombinatorImpl> {
227 const _UnlinkedCombinatorReader();
228
229 @override
230 _UnlinkedCombinatorImpl createObject(fb.BufferContext bc, int offset) =>
231 new _UnlinkedCombinatorImpl(bc, offset);
232 }
233
234 class _UnlinkedNamespaceDirectiveImpl implements UnlinkedNamespaceDirective {
235 final fb.BufferContext _bc;
236 final int _bcOffset;
237
238 String _uri;
239 List<UnlinkedCombinator> _combinators;
240
241 _UnlinkedNamespaceDirectiveImpl(this._bc, this._bcOffset);
242
243 @override
244 List<UnlinkedCombinator> get combinators {
245 _combinators ??= const fb.ListReader<UnlinkedCombinator>(
246 const _UnlinkedCombinatorReader())
247 .vTableGet(_bc, _bcOffset, 1, const <UnlinkedCombinator>[]);
248 return _combinators;
249 }
250
251 @override
252 String get uri {
253 _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
254 return _uri;
255 }
256 }
257
258 class _UnlinkedNamespaceDirectiveReader
259 extends fb.TableReader<_UnlinkedNamespaceDirectiveImpl> {
260 const _UnlinkedNamespaceDirectiveReader();
261
262 @override
263 _UnlinkedNamespaceDirectiveImpl createObject(
264 fb.BufferContext bc, int offset) =>
265 new _UnlinkedNamespaceDirectiveImpl(bc, offset);
266 }
267
268 class _UnlinkedUnitImpl implements UnlinkedUnit {
269 final fb.BufferContext _bc;
270 final int _bcOffset;
271
272 List<int> _apiSignature;
273 List<UnlinkedNamespaceDirective> _imports;
274 List<UnlinkedNamespaceDirective> _exports;
275 List<UnlinkedNamespaceDirective> _parts;
276
277 _UnlinkedUnitImpl(this._bc, this._bcOffset);
278
279 @override
280 List<int> get apiSignature {
281 _apiSignature ??=
282 const fb.Uint8ListReader().vTableGet(_bc, _bcOffset, 0, const <int>[]);
283 return _apiSignature;
284 }
285
286 @override
287 List<UnlinkedNamespaceDirective> get exports {
288 _exports ??= const fb.ListReader<UnlinkedNamespaceDirective>(
289 const _UnlinkedNamespaceDirectiveReader())
290 .vTableGet(_bc, _bcOffset, 2, const <UnlinkedNamespaceDirective>[]);
291 return _exports;
292 }
293
294 @override
295 List<UnlinkedNamespaceDirective> get imports {
296 _imports ??= const fb.ListReader<UnlinkedNamespaceDirective>(
297 const _UnlinkedNamespaceDirectiveReader())
298 .vTableGet(_bc, _bcOffset, 1, const <UnlinkedNamespaceDirective>[]);
299 return _imports;
300 }
301
302 @override
303 List<UnlinkedNamespaceDirective> get parts {
304 _parts ??= const fb.ListReader<UnlinkedNamespaceDirective>(
305 const _UnlinkedNamespaceDirectiveReader())
306 .vTableGet(_bc, _bcOffset, 3, const <UnlinkedNamespaceDirective>[]);
307 return _parts;
308 }
309 }
310
311 class _UnlinkedUnitReader extends fb.TableReader<UnlinkedUnit> {
312 const _UnlinkedUnitReader();
313
314 @override
315 _UnlinkedUnitImpl createObject(fb.BufferContext bc, int offset) =>
316 new _UnlinkedUnitImpl(bc, offset);
317 }
OLDNEW
« no previous file with comments | « no previous file | pkg/front_end/test/src/incremental/format_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698