diff --git a/swift/Sources/FlatBuffers/ByteBuffer.swift b/swift/Sources/FlatBuffers/ByteBuffer.swift index f0ba5d099..a07f66ae3 100644 --- a/swift/Sources/FlatBuffers/ByteBuffer.swift +++ b/swift/Sources/FlatBuffers/ByteBuffer.swift @@ -387,6 +387,16 @@ public struct ByteBuffer { removing: _writerSize &- removeBytes) } + /// Returns the written bytes into the ``ByteBuffer`` + public var underlyingBytes: [UInt8] { + let cp = capacity &- writerIndex + let start = memory.advanced(by: writerIndex) + .bindMemory(to: UInt8.self, capacity: cp) + + let ptr = UnsafeBufferPointer(start: start, count: cp) + return Array(ptr) + } + /// SkipPrefix Skips the first 4 bytes in case one of the following /// functions are called `getPrefixedSizeCheckedRoot` & `getPrefixedSizeRoot` /// which allows us to skip the first 4 bytes instead of recreating the buffer diff --git a/swift/Sources/FlatBuffers/FlatBufferBuilder.swift b/swift/Sources/FlatBuffers/FlatBufferBuilder.swift index f9ae83b1d..5ccc7e44c 100644 --- a/swift/Sources/FlatBuffers/FlatBufferBuilder.swift +++ b/swift/Sources/FlatBuffers/FlatBufferBuilder.swift @@ -80,12 +80,7 @@ public struct FlatBufferBuilder { /// Should only be used after ``finish(offset:addPrefix:)`` is called public var sizedByteArray: [UInt8] { assert(finished, "Data shouldn't be called before finish()") - let cp = _bb.capacity &- _bb.writerIndex - let start = _bb.memory.advanced(by: _bb.writerIndex) - .bindMemory(to: UInt8.self, capacity: cp) - - let ptr = UnsafeBufferPointer(start: start, count: cp) - return Array(ptr) + return _bb.underlyingBytes } /// Returns the original ``ByteBuffer``