From dcede74fb6c0b13e6c2df371210ff13a1def015f Mon Sep 17 00:00:00 2001 From: Tyler Dunn Date: Thu, 13 Jun 2024 15:32:09 -0400 Subject: [PATCH] Return original type for Float32List/Float64List --- dart/lib/flat_buffers.dart | 41 +++++++++----------------------- dart/test/flat_buffers_test.dart | 2 -- 2 files changed, 11 insertions(+), 32 deletions(-) diff --git a/dart/lib/flat_buffers.dart b/dart/lib/flat_buffers.dart index 170ac241d..4956286e5 100644 --- a/dart/lib/flat_buffers.dart +++ b/dart/lib/flat_buffers.dart @@ -58,18 +58,6 @@ class BufferContext { return _buffer.buffer.asUint32List(_buffer.offsetInBytes + offset, length); } - @pragma('vm:prefer-inline') - Float32List _asFloat32List(int offset, int length) { - assert(Endian.host == Endian.little); - return _buffer.buffer.asFloat32List(_buffer.offsetInBytes + offset, length); - } - - @pragma('vm:prefer-inline') - Float64List _asFloat64List(int offset, int length) { - assert(Endian.host == Endian.little); - return _buffer.buffer.asFloat64List(_buffer.offsetInBytes + offset, length); - } - @pragma('vm:prefer-inline') double _getFloat64(int offset) => _buffer.getFloat64(offset, Endian.little); @@ -906,6 +894,8 @@ class BoolReader extends Reader { /// The reader of lists of 64-bit float values. /// /// The returned unmodifiable lists lazily read values on access. +/// +/// TODO: Return dart:typed_data Float64List type on LE systems class Float64ListReader extends Reader> { const Float64ListReader(); @@ -915,17 +905,15 @@ class Float64ListReader extends Reader> { @override @pragma('vm:prefer-inline') - List read(BufferContext bc, int offset) { - if (Endian.host == Endian.little) { - final listOffset = bc.derefObject(offset); - final length = bc._getUint32(listOffset); - return bc._asFloat64List(listOffset + _sizeofUint32, length); - } else { - return _FbFloat64List(bc, bc.derefObject(offset)); - } - } + List read(BufferContext bc, int offset) => + _FbFloat64List(bc, bc.derefObject(offset)); } +/// The reader of lists of 32-bit float values. +/// +/// The returned unmodifiable lists lazily read values on access. +/// +/// TODO: Return dart:typed_data Float32List type on LE systems class Float32ListReader extends Reader> { const Float32ListReader(); @@ -935,15 +923,8 @@ class Float32ListReader extends Reader> { @override @pragma('vm:prefer-inline') - List read(BufferContext bc, int offset) { - if (Endian.host == Endian.little) { - final listOffset = bc.derefObject(offset); - final length = bc._getUint32(listOffset); - return bc._asFloat32List(listOffset + _sizeofUint32, length); - } else { - return _FbFloat32List(bc, bc.derefObject(offset)); - } - } + List read(BufferContext bc, int offset) => + _FbFloat32List(bc, bc.derefObject(offset)); } class Float64Reader extends Reader { diff --git a/dart/test/flat_buffers_test.dart b/dart/test/flat_buffers_test.dart index f170ab8f1..9f0048c4d 100644 --- a/dart/test/flat_buffers_test.dart +++ b/dart/test/flat_buffers_test.dart @@ -545,7 +545,6 @@ class BuilderTest { // read and verify BufferContext buf = BufferContext.fromBytes(byteList); List items = const Float64ListReader().read(buf, 0); - expect(items is Float64List, Endian.host == Endian.little); expect(items, hasLength(values.length)); for (int i = 0; i < values.length; i++) { expect(values[i], closeTo(items[i], .001)); @@ -565,7 +564,6 @@ class BuilderTest { // read and verify BufferContext buf = BufferContext.fromBytes(byteList); List items = const Float32ListReader().read(buf, 0); - expect(items is Float32List, Endian.host == Endian.little); expect(items, hasLength(5)); for (int i = 0; i < values.length; i++) { expect(values[i], closeTo(items[i], .001));