summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorWouter van Oortmerssen <aardappel@gmail.com>2016-08-12 18:01:38 -0700
committerWouter van Oortmerssen <aardappel@gmail.com>2016-08-31 17:34:51 -0700
commit52ca75506abd82b5616bdef4d28e9535262c1d65 (patch)
treefaf13a6df7509e64ec7bde0bedbff5330f066def /net
parentd05d1145238d301ed714573183514f95b1b4f89b (diff)
downloadflatbuffers-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.cs4
-rw-r--r--net/FlatBuffers/IFlatbufferObject .cs26
-rw-r--r--net/FlatBuffers/Offset.cs2
-rw-r--r--net/FlatBuffers/Struct.cs8
-rw-r--r--net/FlatBuffers/Table.cs44
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&lt;byte&gt;. 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;
}
-
}
}