mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 12:05:50 +00:00
I updated idl_gen_general.cpp to add support for generating a Get Bytes method for a vector to the generated C# source code. Given a byte vector field named Foo, a method named GetFooBytes() will be generated in the C# source code that will return an ArraySegment<byte> value referencing the vector data in the underlying ByteBuffer. I added a method to Table.cs named __vector_as_arraysegment that is used by the code generated by the change to the C# generator. __vector_as_arraysegment will take the offset of the vector and will return the ArraySegment<byte> value corresponding to the bytes that store the vector data. I updated FlatBuffersExampleTests.cs to add tests to validate my implementation of Table.__vector_as_arraysegment. I added tests to demonstrate that the bytes for the monster's name can be extracted from the underlying byte array. I also added tests to show that Table.__vector_as_arraysegment returns a null value if the vector is not present in the FlatBuffer. I used the updated flatc.exe program to regenerate the C# source files for the MyGame example. The new Monster class includes the GetXXXBytes methods to return the byte arrays containing data for vectors.
28 lines
713 B
C#
28 lines
713 B
C#
// automatically generated, do not modify
|
|
|
|
namespace MyGame.Example
|
|
{
|
|
|
|
using System;
|
|
using FlatBuffers;
|
|
|
|
public sealed class Test : Struct {
|
|
public Test __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
|
|
|
public short A { get { return bb.GetShort(bb_pos + 0); } }
|
|
public void MutateA(short a) { bb.PutShort(bb_pos + 0, a); }
|
|
public sbyte B { get { return bb.GetSbyte(bb_pos + 2); } }
|
|
public void MutateB(sbyte b) { bb.PutSbyte(bb_pos + 2, b); }
|
|
|
|
public static Offset<Test> CreateTest(FlatBufferBuilder builder, short A, sbyte B) {
|
|
builder.Prep(2, 4);
|
|
builder.Pad(1);
|
|
builder.PutSbyte(B);
|
|
builder.PutShort(A);
|
|
return new Offset<Test>(builder.Offset);
|
|
}
|
|
};
|
|
|
|
|
|
}
|