Skip to content

Commit 999ad4d

Browse files
committed
update flatbuffers fork with the recent upstream changes
1 parent 8c20d35 commit 999ad4d

File tree

4 files changed

+23
-37
lines changed

4 files changed

+23
-37
lines changed

generator/lib/src/code_chunks.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,14 +341,14 @@ class CodeChunks {
341341
return '${p.fieldType}.fromList(${readFieldNonNull('[]')})';
342342
}
343343
} else {
344-
fbReader = 'EagerListReader<int>(fb.Int8Reader())';
344+
fbReader = 'fb.ListReader<int>(fb.Int8Reader(), lazy: false)';
345345
}
346346
break;
347347
case OBXPropertyType.Relation:
348348
fbReader = 'fb.${_propertyFlatBuffersType[p.type]}Reader()';
349349
return readFieldNonNull('0');
350350
case OBXPropertyType.StringVector:
351-
fbReader = 'EagerListReader<String>(fb.StringReader())';
351+
fbReader = 'fb.ListReader<String>(fb.StringReader(), lazy: false)';
352352
break;
353353
default:
354354
fbReader = 'fb.${_propertyFlatBuffersType[p.type]}Reader()';

objectbox/lib/flatbuffers/flat_buffers.dart

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,6 @@ class Builder {
382382
/// interpreted as a 4-byte Latin-1 encoded string that should be placed at
383383
/// bytes 4-7 of the file.
384384
void finish(int offset, [String? fileIdentifier]) {
385-
assert(!_finished);
386385
final sizeBeforePadding = size();
387386
final requiredBytes = _sizeofUint32 * (fileIdentifier == null ? 1 : 2);
388387
_prepare(max(requiredBytes, _maxAlign), 1);
@@ -776,6 +775,7 @@ class Builder {
776775
/// tail pointer to point at the allocated space.
777776
@pragma('vm:prefer-inline')
778777
void _prepare(int size, int count, {int additionalBytes = 0}) {
778+
assert(!_finished);
779779
// Update the alignment.
780780
if (_maxAlign < size) {
781781
_maxAlign = size;
@@ -985,20 +985,34 @@ class Int8Reader extends Reader<int> {
985985
int read(BufferContext bc, int offset) => bc._getInt8(offset);
986986
}
987987

988-
/// The reader of lists of objects.
989-
///
990-
/// The returned unmodifiable lists lazily read objects on access.
988+
/// The reader of lists of objects. Lazy by default - see [lazy].
991989
class ListReader<E> extends Reader<List<E>> {
992990
final Reader<E> _elementReader;
993991

994-
const ListReader(this._elementReader);
992+
/// Enables lazy reading of the list
993+
///
994+
/// If true, the returned unmodifiable list lazily reads objects on access.
995+
/// Therefore, the underlying buffer must not change while accessing the list.
996+
///
997+
/// If false, reads the whole list immediately on access.
998+
final bool lazy;
999+
1000+
const ListReader(this._elementReader, {this.lazy = true});
9951001

9961002
@override
9971003
int get size => _sizeofUint32;
9981004

9991005
@override
1000-
List<E> read(BufferContext bc, int offset) =>
1001-
new _FbGenericList<E>(_elementReader, bc, bc.derefObject(offset));
1006+
List<E> read(BufferContext bc, int offset) {
1007+
final listOffset = bc.derefObject(offset);
1008+
return lazy
1009+
? _FbGenericList<E>(_elementReader, bc, listOffset)
1010+
: List<E>.generate(
1011+
bc.buffer.getUint32(listOffset, Endian.little),
1012+
(int index) => _elementReader.read(
1013+
bc, listOffset + size + _elementReader.size * index),
1014+
growable: true);
1015+
}
10021016
}
10031017

10041018
/// Object that can read a value at a [BufferContext].

objectbox/lib/internal.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ library objectbox_internal;
44

55
// ignore_for_file: invalid_export_of_internal_element
66

7-
export 'src/fb_readers.dart';
87
export 'src/model.dart';
98
export 'src/modelinfo/index.dart';
109
export 'src/query.dart'

objectbox/lib/src/fb_readers.dart

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)