1/* 2 * Copyright 2016 Google Inc. All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17namespace FlatBuffers.Test 18{ 19 /// <summary> 20 /// A test Table object that gives easy access to the slot data 21 /// </summary> 22 internal struct TestTable 23 { 24 Table t; 25 26 public TestTable(ByteBuffer bb, int pos) 27 { 28 t.bb = bb; 29 t.bb_pos = pos; 30 } 31 32 public bool GetSlot(int slot, bool def) 33 { 34 var off = t.__offset(slot); 35 36 if (off == 0) 37 { 38 return def; 39 } 40 return t.bb.GetSbyte(t.bb_pos + off) != 0; 41 } 42 43 public sbyte GetSlot(int slot, sbyte def) 44 { 45 var off = t.__offset(slot); 46 47 if (off == 0) 48 { 49 return def; 50 } 51 return t.bb.GetSbyte(t.bb_pos + off); 52 } 53 54 public byte GetSlot(int slot, byte def) 55 { 56 var off = t.__offset(slot); 57 58 if (off == 0) 59 { 60 return def; 61 } 62 return t.bb.Get(t.bb_pos + off); 63 } 64 65 public short GetSlot(int slot, short def) 66 { 67 var off = t.__offset(slot); 68 69 if (off == 0) 70 { 71 return def; 72 } 73 return t.bb.GetShort(t.bb_pos + off); 74 } 75 76 public ushort GetSlot(int slot, ushort def) 77 { 78 var off = t.__offset(slot); 79 80 if (off == 0) 81 { 82 return def; 83 } 84 return t.bb.GetUshort(t.bb_pos + off); 85 } 86 87 public int GetSlot(int slot, int def) 88 { 89 var off = t.__offset(slot); 90 91 if (off == 0) 92 { 93 return def; 94 } 95 return t.bb.GetInt(t.bb_pos + off); 96 } 97 98 public uint GetSlot(int slot, uint def) 99 { 100 var off = t.__offset(slot); 101 102 if (off == 0) 103 { 104 return def; 105 } 106 return t.bb.GetUint(t.bb_pos + off); 107 } 108 109 public long GetSlot(int slot, long def) 110 { 111 var off = t.__offset(slot); 112 113 if (off == 0) 114 { 115 return def; 116 } 117 return t.bb.GetLong(t.bb_pos + off); 118 } 119 120 public ulong GetSlot(int slot, ulong def) 121 { 122 var off = t.__offset(slot); 123 124 if (off == 0) 125 { 126 return def; 127 } 128 return t.bb.GetUlong(t.bb_pos + off); 129 } 130 131 public float GetSlot(int slot, float def) 132 { 133 var off = t.__offset(slot); 134 135 if (off == 0) 136 { 137 return def; 138 } 139 return t.bb.GetFloat(t.bb_pos + off); 140 } 141 142 public double GetSlot(int slot, double def) 143 { 144 var off = t.__offset(slot); 145 146 if (off == 0) 147 { 148 return def; 149 } 150 return t.bb.GetDouble(t.bb_pos + off); 151 } 152 } 153} 154