mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-03 18:24:13 +00:00
[Swift] Push contiguous bytes (#8157)
* Add version of push which takes ContiguousBytes * Ensure overloads aren't ambiguous * Add version of createVector * Add version of push which takes ContiguousBytes * Ensure overloads aren't ambiguous * Add version of createVector * Add similar conditional to other use of ContiguousBytes * Attempt CI fix * Use memcpy instead of copyMemory memcpy is faster in tests * Add testContiguousBytes * Add benchmarks * Add version of createVector * Add benchmarks * Update push to copy memory Since we don't care about endianness, we can simply memcpy the array of scalars * Remove function and benchmarks Since we don't care about endianness, a FixedWidthInteger version of createVector isn't needed * Improve naming * Add doc comment
This commit is contained in:
@@ -473,6 +473,22 @@ public struct FlatBufferBuilder {
|
||||
return endVector(len: size)
|
||||
}
|
||||
|
||||
#if swift(>=5.0) && !os(WASI)
|
||||
@inline(__always)
|
||||
/// Creates a vector of bytes in the buffer.
|
||||
///
|
||||
/// Allows creating a vector from `Data` without copying to a `[UInt8]`
|
||||
///
|
||||
/// - Parameter bytes: bytes to be written into the buffer
|
||||
/// - Returns: ``Offset`` of the vector
|
||||
mutating public func createVector(bytes: ContiguousBytes) -> Offset {
|
||||
let size = bytes.withUnsafeBytes { ptr in ptr.count }
|
||||
startVector(size, elementSize: MemoryLayout<UInt8>.size)
|
||||
_bb.push(bytes: bytes)
|
||||
return endVector(len: size)
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Creates a vector of type ``Enum`` into the ``ByteBuffer``
|
||||
///
|
||||
/// ``createVector(_:)-9h189`` writes a vector of type ``Enum`` into
|
||||
|
||||
Reference in New Issue
Block a user