| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library analyzer.src.summary.flat_buffers; | 5 library analyzer.src.summary.flat_buffers; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:convert'; | 8 import 'dart:convert'; |
| 9 import 'dart:math'; | 9 import 'dart:math'; |
| 10 import 'dart:typed_data'; | 10 import 'dart:typed_data'; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 @override | 32 @override |
| 33 String toString() => _offset.toString(); | 33 String toString() => _offset.toString(); |
| 34 | 34 |
| 35 BufferPointer _advance(int delta) { | 35 BufferPointer _advance(int delta) { |
| 36 return new BufferPointer._(_buffer, _offset + delta); | 36 return new BufferPointer._(_buffer, _offset + delta); |
| 37 } | 37 } |
| 38 | 38 |
| 39 int _getInt32([int delta = 0]) => | 39 int _getInt32([int delta = 0]) => |
| 40 _buffer.getInt32(_offset + delta, Endianness.LITTLE_ENDIAN); | 40 _buffer.getInt32(_offset + delta, Endianness.LITTLE_ENDIAN); |
| 41 | 41 |
| 42 int _getInt64([int delta = 0]) => | |
| 43 _buffer.getInt64(_offset + delta, Endianness.LITTLE_ENDIAN); | |
| 44 | |
| 45 int _getInt8([int delta = 0]) => _buffer.getInt8(_offset + delta); | 42 int _getInt8([int delta = 0]) => _buffer.getInt8(_offset + delta); |
| 46 | 43 |
| 47 int _getUint16([int delta = 0]) => | 44 int _getUint16([int delta = 0]) => |
| 48 _buffer.getUint16(_offset + delta, Endianness.LITTLE_ENDIAN); | 45 _buffer.getUint16(_offset + delta, Endianness.LITTLE_ENDIAN); |
| 49 | 46 |
| 50 int _getUint32([int delta = 0]) => | 47 int _getUint32([int delta = 0]) => |
| 51 _buffer.getUint32(_offset + delta, Endianness.LITTLE_ENDIAN); | 48 _buffer.getUint32(_offset + delta, Endianness.LITTLE_ENDIAN); |
| 52 | 49 |
| 53 /** | 50 /** |
| 54 * If the [byteList] is already a [Uint8List] return it. | 51 * If the [byteList] is already a [Uint8List] return it. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 } | 108 } |
| 112 if (value != def) { | 109 if (value != def) { |
| 113 int size = 4; | 110 int size = 4; |
| 114 _prepare(size, 1); | 111 _prepare(size, 1); |
| 115 _trackField(field); | 112 _trackField(field); |
| 116 _setInt32AtTail(_buf, _tail, value); | 113 _setInt32AtTail(_buf, _tail, value); |
| 117 } | 114 } |
| 118 } | 115 } |
| 119 | 116 |
| 120 /** | 117 /** |
| 121 * Add the [field] with the given 64-bit signed integer [value]. The field is | |
| 122 * not added if the [value] is equal to [def]. | |
| 123 */ | |
| 124 void addInt64(int field, int value, [int def]) { | |
| 125 if (_currentVTable == null) { | |
| 126 throw new StateError('Start a table before adding values.'); | |
| 127 } | |
| 128 if (value != def) { | |
| 129 int size = 8; | |
| 130 _prepare(size, 1); | |
| 131 _trackField(field); | |
| 132 _setInt64AtTail(_buf, _tail, value); | |
| 133 } | |
| 134 } | |
| 135 | |
| 136 /** | |
| 137 * Add the [field] with the given 8-bit signed integer [value]. The field is | 118 * Add the [field] with the given 8-bit signed integer [value]. The field is |
| 138 * not added if the [value] is equal to [def]. | 119 * not added if the [value] is equal to [def]. |
| 139 */ | 120 */ |
| 140 void addInt8(int field, int value, [int def]) { | 121 void addInt8(int field, int value, [int def]) { |
| 141 if (_currentVTable == null) { | 122 if (_currentVTable == null) { |
| 142 throw new StateError('Start a table before adding values.'); | 123 throw new StateError('Start a table before adding values.'); |
| 143 } | 124 } |
| 144 if (value != def) { | 125 if (value != def) { |
| 145 int size = 1; | 126 int size = 1; |
| 146 _prepare(size, 1); | 127 _prepare(size, 1); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 * This is a low-level method, it should not be invoked by clients. | 215 * This is a low-level method, it should not be invoked by clients. |
| 235 */ | 216 */ |
| 236 void lowWriteUint32(int value) { | 217 void lowWriteUint32(int value) { |
| 237 _prepare(4, 1); | 218 _prepare(4, 1); |
| 238 _setUint32AtTail(_buf, _tail, value); | 219 _setUint32AtTail(_buf, _tail, value); |
| 239 } | 220 } |
| 240 | 221 |
| 241 /** | 222 /** |
| 242 * This is a low-level method, it should not be invoked by clients. | 223 * This is a low-level method, it should not be invoked by clients. |
| 243 */ | 224 */ |
| 244 void lowWriteUint64(int value) { | |
| 245 _prepare(8, 1); | |
| 246 _setUint64AtTail(_buf, _tail, value); | |
| 247 } | |
| 248 | |
| 249 /** | |
| 250 * This is a low-level method, it should not be invoked by clients. | |
| 251 */ | |
| 252 void lowWriteUint8(int value) { | 225 void lowWriteUint8(int value) { |
| 253 _prepare(1, 1); | 226 _prepare(1, 1); |
| 254 _buf.setUint8(_buf.lengthInBytes - _tail, value); | 227 _buf.setUint8(_buf.lengthInBytes - _tail, value); |
| 255 } | 228 } |
| 256 | 229 |
| 257 /** | 230 /** |
| 258 * Reset the builder and make it ready for filling a new buffer. | 231 * Reset the builder and make it ready for filling a new buffer. |
| 259 */ | 232 */ |
| 260 void reset() { | 233 void reset() { |
| 261 _buf = new ByteData(initialSize); | 234 _buf = new ByteData(initialSize); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 * Record the offset of the given [field]. | 350 * Record the offset of the given [field]. |
| 378 */ | 351 */ |
| 379 void _trackField(int field) { | 352 void _trackField(int field) { |
| 380 _currentVTable.addField(field, _tail); | 353 _currentVTable.addField(field, _tail); |
| 381 } | 354 } |
| 382 | 355 |
| 383 static void _setInt32AtTail(ByteData _buf, int tail, int x) { | 356 static void _setInt32AtTail(ByteData _buf, int tail, int x) { |
| 384 _buf.setInt32(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); | 357 _buf.setInt32(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); |
| 385 } | 358 } |
| 386 | 359 |
| 387 static void _setInt64AtTail(ByteData _buf, int tail, int x) { | |
| 388 _buf.setInt64(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); | |
| 389 } | |
| 390 | |
| 391 static void _setUint32AtTail(ByteData _buf, int tail, int x) { | 360 static void _setUint32AtTail(ByteData _buf, int tail, int x) { |
| 392 _buf.setUint32(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); | 361 _buf.setUint32(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); |
| 393 } | 362 } |
| 394 | |
| 395 static void _setUint64AtTail(ByteData _buf, int tail, int x) { | |
| 396 _buf.setUint64(_buf.lengthInBytes - tail, x, Endianness.LITTLE_ENDIAN); | |
| 397 } | |
| 398 } | 363 } |
| 399 | 364 |
| 400 /** | 365 /** |
| 401 * The reader of 32-bit signed integers. | 366 * The reader of 32-bit signed integers. |
| 402 */ | 367 */ |
| 403 class Int32Reader extends Reader<int> { | 368 class Int32Reader extends Reader<int> { |
| 404 const Int32Reader() : super(); | 369 const Int32Reader() : super(); |
| 405 | 370 |
| 406 @override | 371 @override |
| 407 int get size => 4; | 372 int get size => 4; |
| 408 | 373 |
| 409 @override | 374 @override |
| 410 int read(BufferPointer bp) => bp._getInt32(); | 375 int read(BufferPointer bp) => bp._getInt32(); |
| 411 } | 376 } |
| 412 | 377 |
| 413 /** | 378 /** |
| 414 * The reader of 64-bit signed integers. | |
| 415 */ | |
| 416 class Int64Reader extends Reader<int> { | |
| 417 const Int64Reader() : super(); | |
| 418 | |
| 419 @override | |
| 420 int get size => 8; | |
| 421 | |
| 422 @override | |
| 423 int read(BufferPointer bp) => bp._getInt64(); | |
| 424 } | |
| 425 | |
| 426 /** | |
| 427 * The reader of 8-bit signed integers. | 379 * The reader of 8-bit signed integers. |
| 428 */ | 380 */ |
| 429 class Int8Reader extends Reader<int> { | 381 class Int8Reader extends Reader<int> { |
| 430 const Int8Reader() : super(); | 382 const Int8Reader() : super(); |
| 431 | 383 |
| 432 @override | 384 @override |
| 433 int get size => 1; | 385 int get size => 1; |
| 434 | 386 |
| 435 @override | 387 @override |
| 436 int read(BufferPointer bp) => bp._getInt8(); | 388 int read(BufferPointer bp) => bp._getInt8(); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 // Table size. | 580 // Table size. |
| 629 buf.setUint16(bufOffset, tableSize, Endianness.LITTLE_ENDIAN); | 581 buf.setUint16(bufOffset, tableSize, Endianness.LITTLE_ENDIAN); |
| 630 bufOffset += 2; | 582 bufOffset += 2; |
| 631 // Field offsets. | 583 // Field offsets. |
| 632 for (int fieldOffset in fieldOffsets) { | 584 for (int fieldOffset in fieldOffsets) { |
| 633 buf.setUint16(bufOffset, fieldOffset, Endianness.LITTLE_ENDIAN); | 585 buf.setUint16(bufOffset, fieldOffset, Endianness.LITTLE_ENDIAN); |
| 634 bufOffset += 2; | 586 bufOffset += 2; |
| 635 } | 587 } |
| 636 } | 588 } |
| 637 } | 589 } |
| OLD | NEW |