mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-03 02:42:27 +00:00
Mono Fix for Unsafe Mode (#4887)
* Added preprocessor define for C++ if Template Aliases are supported by the compiler * Revert "Revert "Performance Increase of Vector of Structures using .NET BlockCopy (#4830)"" This reverts commit1f5eae5d6a. * Put<T> method was inside #if UNSAFE_BYTEBUFFER which caused compilation failure when building in unsafe mode * Revert "Added preprocessor define for C++ if Template Aliases are supported by the compiler" This reverts commita75af73521.
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
1f5eae5d6a
commit
d8f49e18d7
@@ -94,6 +94,29 @@ namespace FlatBuffers
|
||||
return bb.ToArraySegment(pos, len);
|
||||
}
|
||||
|
||||
// Get the data of a vector whoses offset is stored at "offset" in this object as an
|
||||
// T[]. If the vector is not present in the ByteBuffer, then a null value will be
|
||||
// returned.
|
||||
public T[] __vector_as_array<T>(int offset)
|
||||
where T : struct
|
||||
{
|
||||
if(!BitConverter.IsLittleEndian)
|
||||
{
|
||||
throw new NotSupportedException("Getting typed arrays on a Big Endian " +
|
||||
"system is not support");
|
||||
}
|
||||
|
||||
var o = this.__offset(offset);
|
||||
if (0 == o)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var pos = this.__vector(o);
|
||||
var len = this.__vector_len(o);
|
||||
return bb.ToArray<T>(pos, len);
|
||||
}
|
||||
|
||||
// Initialize any Table-derived type to point to the union at the given offset.
|
||||
public T __union<T>(int offset) where T : struct, IFlatbufferObject
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user