diff options
author | Wouter van Oortmerssen <aardappel@gmail.com> | 2016-08-12 18:01:38 -0700 |
---|---|---|
committer | Wouter van Oortmerssen <aardappel@gmail.com> | 2016-08-31 17:34:51 -0700 |
commit | 52ca75506abd82b5616bdef4d28e9535262c1d65 (patch) | |
tree | faf13a6df7509e64ec7bde0bedbff5330f066def /net | |
parent | d05d1145238d301ed714573183514f95b1b4f89b (diff) | |
download | flatbuffers-52ca75506abd82b5616bdef4d28e9535262c1d65.tar.gz flatbuffers-52ca75506abd82b5616bdef4d28e9535262c1d65.tar.bz2 flatbuffers-52ca75506abd82b5616bdef4d28e9535262c1d65.zip |
Switched C# accessors from classes to structs
Diffstat (limited to 'net')
-rw-r--r-- | net/FlatBuffers/FlatBufferBuilder.cs | 4 | ||||
-rw-r--r-- | net/FlatBuffers/IFlatbufferObject .cs | 26 | ||||
-rw-r--r-- | net/FlatBuffers/Offset.cs | 2 | ||||
-rw-r--r-- | net/FlatBuffers/Struct.cs | 8 | ||||
-rw-r--r-- | net/FlatBuffers/Table.cs | 44 |
5 files changed, 55 insertions, 29 deletions
diff --git a/net/FlatBuffers/FlatBufferBuilder.cs b/net/FlatBuffers/FlatBufferBuilder.cs index 82365902..b6701df3 100644 --- a/net/FlatBuffers/FlatBufferBuilder.cs +++ b/net/FlatBuffers/FlatBufferBuilder.cs @@ -295,12 +295,12 @@ namespace FlatBuffers PutInt(_vectorNumElems); return new VectorOffset(Offset); } - + /// <summary> /// Creates a vector of tables. /// </summary> /// <param name="offsets">Offsets of the tables.</param> - public VectorOffset CreateVectorOfTables<T>(Offset<T>[] offsets) where T : class + public VectorOffset CreateVectorOfTables<T>(Offset<T>[] offsets) where T : struct { NotNested(); StartVector(sizeof(int), offsets.Length, sizeof(int)); diff --git a/net/FlatBuffers/IFlatbufferObject .cs b/net/FlatBuffers/IFlatbufferObject .cs new file mode 100644 index 00000000..fb6dc5b2 --- /dev/null +++ b/net/FlatBuffers/IFlatbufferObject .cs @@ -0,0 +1,26 @@ +/* + * Copyright 2014 Google Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace FlatBuffers +{ + /// <summary> + /// This is the base for both structs and tables. + /// </summary> + public interface IFlatbufferObject + { + void __init(int _i, ByteBuffer _bb); + } +} diff --git a/net/FlatBuffers/Offset.cs b/net/FlatBuffers/Offset.cs index a1524df0..2b17cec8 100644 --- a/net/FlatBuffers/Offset.cs +++ b/net/FlatBuffers/Offset.cs @@ -19,7 +19,7 @@ namespace FlatBuffers /// <summary> /// Offset class for typesafe assignments. /// </summary> - public struct Offset<T> where T : class + public struct Offset<T> where T : struct { public int Value; public Offset(int value) diff --git a/net/FlatBuffers/Struct.cs b/net/FlatBuffers/Struct.cs index ab16f28c..61da32f7 100644 --- a/net/FlatBuffers/Struct.cs +++ b/net/FlatBuffers/Struct.cs @@ -19,9 +19,9 @@ namespace FlatBuffers /// <summary> /// All structs in the generated code derive from this class, and add their own accessors. /// </summary> - public abstract class Struct + public struct Struct { - protected int bb_pos; - protected ByteBuffer bb; + public int bb_pos; + public ByteBuffer bb; } -}
\ No newline at end of file +} diff --git a/net/FlatBuffers/Table.cs b/net/FlatBuffers/Table.cs index ca52d7d0..55182b38 100644 --- a/net/FlatBuffers/Table.cs +++ b/net/FlatBuffers/Table.cs @@ -20,42 +20,42 @@ using System.Text; namespace FlatBuffers { /// <summary> - /// All tables in the generated code derive from this class, and add their own accessors. + /// All tables in the generated code derive from this struct, and add their own accessors. /// </summary> - public abstract class Table + public struct Table { - protected int bb_pos; - protected ByteBuffer bb; + public int bb_pos; + public ByteBuffer bb; public ByteBuffer ByteBuffer { get { return bb; } } // Look up a field in the vtable, return an offset into the object, or 0 if the field is not // present. - protected int __offset(int vtableOffset) + public int __offset(int vtableOffset) { int vtable = bb_pos - bb.GetInt(bb_pos); return vtableOffset < bb.GetShort(vtable) ? (int)bb.GetShort(vtable + vtableOffset) : 0; } - protected static int __offset(int vtableOffset, int offset, ByteBuffer bb) + public static int __offset(int vtableOffset, int offset, ByteBuffer bb) { int vtable = bb.Length - offset; return (int)bb.GetShort(vtable + vtableOffset - bb.GetInt(vtable)) + vtable; } // Retrieve the relative offset stored at "offset" - protected int __indirect(int offset) + public int __indirect(int offset) { return offset + bb.GetInt(offset); } - - protected static int __indirect(int offset, ByteBuffer bb) + + public static int __indirect(int offset, ByteBuffer bb) { return offset + bb.GetInt(offset); } // Create a .NET String from UTF-8 data stored inside the flatbuffer. - protected string __string(int offset) + public string __string(int offset) { offset += bb.GetInt(offset); var len = bb.GetInt(offset); @@ -64,7 +64,7 @@ namespace FlatBuffers } // Get the length of a vector whose offset is stored at "offset" in this object. - protected int __vector_len(int offset) + public int __vector_len(int offset) { offset += bb_pos; offset += bb.GetInt(offset); @@ -72,7 +72,7 @@ namespace FlatBuffers } // Get the start of data of a vector whose offset is stored at "offset" in this object. - protected int __vector(int offset) + public int __vector(int offset) { offset += bb_pos; return offset + bb.GetInt(offset) + sizeof(int); // data starts after the length @@ -81,7 +81,8 @@ namespace FlatBuffers // Get the data of a vector whoses offset is stored at "offset" in this object as an // ArraySegment<byte>. If the vector is not present in the ByteBuffer, // then a null value will be returned. - protected ArraySegment<byte>? __vector_as_arraysegment(int offset) { + public ArraySegment<byte>? __vector_as_arraysegment(int offset) + { var o = this.__offset(offset); if (0 == o) { @@ -94,15 +95,15 @@ namespace FlatBuffers } // Initialize any Table-derived type to point to the union at the given offset. - protected TTable __union<TTable>(TTable t, int offset) where TTable : Table + public T __union<T>(int offset) where T : struct, IFlatbufferObject { offset += bb_pos; - t.bb_pos = offset + bb.GetInt(offset); - t.bb = bb; + T t = new T(); + t.__init(offset + bb.GetInt(offset), bb); return t; } - protected static bool __has_identifier(ByteBuffer bb, string ident) + public static bool __has_identifier(ByteBuffer bb, string ident) { if (ident.Length != FlatBufferConstants.FileIdentifierLength) throw new ArgumentException("FlatBuffers: file identifier must be length " + FlatBufferConstants.FileIdentifierLength, "ident"); @@ -114,9 +115,9 @@ namespace FlatBuffers return true; } - + // Compare strings in the ByteBuffer. - protected static int CompareStrings(int offset_1, int offset_2, ByteBuffer bb) + public static int CompareStrings(int offset_1, int offset_2, ByteBuffer bb) { offset_1 += bb.GetInt(offset_1); offset_2 += bb.GetInt(offset_2); @@ -132,9 +133,9 @@ namespace FlatBuffers } return len_1 - len_2; } - + // Compare string from the ByteBuffer with the string object - protected static int CompareStrings(int offset_1, byte[] key, ByteBuffer bb) + public static int CompareStrings(int offset_1, byte[] key, ByteBuffer bb) { offset_1 += bb.GetInt(offset_1); var len_1 = bb.GetInt(offset_1); @@ -148,6 +149,5 @@ namespace FlatBuffers } return len_1 - len_2; } - } } |