< Summary

Class:GDX.DataTables.StableDataTable
Assembly:GDX
File(s):./Packages/com.dotbunny.gdx/GDX/DataTables/StableDataTable.cs
Covered lines:574
Uncovered lines:680
Coverable lines:1254
Total lines:2053
Line coverage:45.7% (574 of 1254)
Covered branches:0
Total branches:0
Covered methods:112
Total methods:169
Method coverage:66.2% (112 of 169)

Coverage History

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
StableDataTable()0%110100%
GetDataVersion()0%2100%
GetStructureVersion()0%2100%
GetStructureCurrentVersion()0%2100%
Migrate(...)0%12300%
GetColumnCount()0%110100%
GetRowCount()0%110100%
GetAllRowDescriptions()0%4.044086.67%
GetRowDescription(...)0%2100%
GetRowDescriptionByOrder(...)0%110100%
GetColumnDescription(...)0%2100%
GetColumnDescriptionByOrder(...)0%110100%
GetAllColumnDescriptions()0%3.013088.89%
AssertColumnIdentifierValid(...)0%5.44055.56%
AssertRowIdentifierValid(...)0%7.195055.56%
SetColumnName(...)0%110100%
GetColumnName(...)0%110100%
SetRowName(...)0%110100%
GetRowName(...)0%110100%
GetRowNameRef(...)0%110100%
GetColumnNameRef(...)0%110100%
AddRow(...)0%15.6615085.71%
AddRows(...)0%4202000%
AddRows(...)0%4202000%
RemoveRow(...)0%6200%
AddColumn(...)0%32.0332097.06%
RemoveColumn(...)0%705.9731011.11%
SetString(...)0%110100%
SetBool(...)0%110100%
SetChar(...)0%110100%
SetSByte(...)0%110100%
SetByte(...)0%110100%
SetEnumInt(...)0%2100%
SetShort(...)0%110100%
SetUShort(...)0%110100%
SetInt(...)0%110100%
SetUInt(...)0%110100%
SetLong(...)0%110100%
SetULong(...)0%110100%
SetFloat(...)0%110100%
SetDouble(...)0%110100%
SetVector2(...)0%110100%
SetVector3(...)0%110100%
SetVector4(...)0%110100%
SetVector2Int(...)0%110100%
SetVector3Int(...)0%110100%
SetQuaternion(...)0%110100%
SetRect(...)0%110100%
SetRectInt(...)0%110100%
SetColor(...)0%110100%
SetLayerMask(...)0%110100%
SetBounds(...)0%110100%
SetBoundsInt(...)0%110100%
SetHash128(...)0%110100%
SetGradient(...)0%110100%
SetAnimationCurve(...)0%110100%
SetObject(...)0%110100%
SetTypeNameForColumn(...)0%12300%
GetTypeNameForColumn(...)0%12300%
GetString(...)0%110100%
GetBool(...)0%110100%
GetChar(...)0%110100%
GetEnumInt(...)0%2100%
GetSByte(...)0%110100%
GetByte(...)0%110100%
GetShort(...)0%110100%
GetUShort(...)0%110100%
GetInt(...)0%110100%
GetUInt(...)0%110100%
GetLong(...)0%110100%
GetULong(...)0%110100%
GetFloat(...)0%110100%
GetDouble(...)0%110100%
GetVector2(...)0%110100%
GetVector3(...)0%110100%
GetVector4(...)0%110100%
GetVector2Int(...)0%110100%
GetVector3Int(...)0%110100%
GetQuaternion(...)0%110100%
GetRect(...)0%110100%
GetRectInt(...)0%110100%
GetColor(...)0%110100%
GetLayerMask(...)0%110100%
GetBounds(...)0%110100%
GetBoundsInt(...)0%110100%
GetHash128(...)0%110100%
GetGradient(...)0%110100%
GetAnimationCurve(...)0%110100%
GetObject(...)0%110100%
GetStringRef(...)0%110100%
GetBoolRef(...)0%110100%
GetCharRef(...)0%110100%
GetSbyteRef(...)0%110100%
GetByteRef(...)0%110100%
GetShortRef(...)0%110100%
GetUshortRef(...)0%110100%
GetIntRef(...)0%110100%
GetUintRef(...)0%110100%
GetLongRef(...)0%110100%
GetUlongRef(...)0%110100%
GetFloatRef(...)0%110100%
GetDoubleRef(...)0%110100%
GetVector2Ref(...)0%110100%
GetVector3Ref(...)0%110100%
GetVector4Ref(...)0%110100%
GetVector2IntRef(...)0%110100%
GetVector3IntRef(...)0%110100%
GetQuaternionRef(...)0%110100%
GetRectRef(...)0%110100%
GetRectIntRef(...)0%110100%
GetColorRef(...)0%110100%
GetLayerMaskRef(...)0%110100%
GetBoundsRef(...)0%110100%
GetBoundsIntRef(...)0%110100%
GetHash128Ref(...)0%110100%
GetGradientRef(...)0%110100%
GetAnimationCurveRef(...)0%110100%
GetObjectRef(...)0%110100%
GetStringColumn(...)0%2100%
GetBoolColumn(...)0%2100%
GetCharColumn(...)0%2100%
GetSbyteColumn(...)0%2100%
GetByteColumn(...)0%2100%
GetShortColumn(...)0%2100%
GetUshortColumn(...)0%2100%
GetIntColumn(...)0%2100%
GetUintColumn(...)0%2100%
GetLongColumn(...)0%2100%
GetUlongColumn(...)0%2100%
GetFloatColumn(...)0%2100%
GetDoubleColumn(...)0%2100%
GetVector2Column(...)0%2100%
GetVector3Column(...)0%2100%
GetVector4Column(...)0%2100%
GetVector2IntColumn(...)0%2100%
GetVector3IntColumn(...)0%2100%
GetQuaternionColumn(...)0%2100%
GetRectColumn(...)0%2100%
GetRectIntColumn(...)0%2100%
GetColorColumn(...)0%2100%
GetLayerMaskColumn(...)0%2100%
GetBoundsColumn(...)0%2100%
GetBoundsIntColumn(...)0%2100%
GetHash128Column(...)0%2100%
GetGradientColumn(...)0%2100%
GetAnimationCurveColumn(...)0%2100%
GetObjectColumn(...)0%2100%
GetColumnOrder(...)0%2100%
SetColumnOrder(...)0%20400%
SetAllColumnOrders(...)0%6200%
GetRowOrder(...)0%2100%
SetRowOrder(...)0%20400%
SetAllRowOrders(...)0%30500%
ReSortRows[T](...)0%30500%
AddTypeNameEntry(...)0%330100%
RemoveTypeNameEntry(...)0%12300%
AddColumnInternal[T](...)0%23.1222086.76%
RemoveColumnInternal[T](...)0%4.054085%
InsertRowsOfTypeInternal[T](...)0%6.196082.61%
DeleteRowsOfTypeInternal[T](...)0%30500%
GetCellRef[T](...)0%110100%
GetCell[T](...)0%110100%
SetCell[T](...)0%110100%
GetColumn[T](...)0%2100%
SetRowOrderForColumns[T](...)0%56700%
AssertSortedColumnsArgValid(...)0%20400%
AssertColumnSortOrderValid(...)0%12300%
AssertRowSortOrderValid(...)0%12300%
AssertSortRowsArgValid(...)0%20400%

File(s)

./Packages/com.dotbunny.gdx/GDX/DataTables/StableDataTable.cs

#LineLine coverage
 1// Copyright (c) 2020-2024 dotBunny Inc.
 2// dotBunny licenses this file to you under the BSL-1.0 license.
 3// See the LICENSE file in the project root for more information.
 4
 5using System;
 6using GDX.Collections;
 7using UnityEngine;
 8using Object = UnityEngine.Object;
 9
 10namespace GDX.DataTables
 11{
 12    [HelpURL("https://gdx.dotbunny.com/manual/features/data-tables.html")]
 13    [CreateAssetMenu(menuName = "GDX/Stable Data Table", fileName = "GDXStableDataTable")]
 14    [Serializable]
 15    public class StableDataTable : DataTableBase
 16    {
 17#pragma warning disable IDE1006
 18        // ReSharper disable InconsistentNaming
 19
 20        [SerializeField] internal ArrayHolder<string>[] m_AllStringColumns;
 21        [SerializeField] internal ArrayHolder<bool>[] m_AllBoolColumns;
 22        [SerializeField] internal ArrayHolder<char>[] m_AllCharColumns;
 23        [SerializeField] internal ArrayHolder<sbyte>[] m_AllSByteColumns;
 24        [SerializeField] internal ArrayHolder<byte>[] m_AllByteColumns;
 25        [SerializeField] internal ArrayHolder<short>[] m_AllShortColumns;
 26        [SerializeField] internal ArrayHolder<ushort>[] m_AllUShortColumns;
 27        [SerializeField] internal ArrayHolder<int>[] m_AllIntColumns;
 28        [SerializeField] internal ArrayHolder<uint>[] m_AllUIntColumns;
 29        [SerializeField] internal ArrayHolder<long>[] m_AllLongColumns;
 30        [SerializeField] internal ArrayHolder<ulong>[] m_AllULongColumns;
 31        [SerializeField] internal ArrayHolder<float>[] m_AllFloatColumns;
 32        [SerializeField] internal ArrayHolder<double>[] m_AllDoubleColumns;
 33        [SerializeField] internal ArrayHolder<Vector2>[] m_AllVector2Columns;
 34        [SerializeField] internal ArrayHolder<Vector3>[] m_AllVector3Columns;
 35        [SerializeField] internal ArrayHolder<Vector4>[] m_AllVector4Columns;
 36        [SerializeField] internal ArrayHolder<Vector2Int>[] m_AllVector2IntColumns;
 37        [SerializeField] internal ArrayHolder<Vector3Int>[] m_AllVector3IntColumns;
 38        [SerializeField] internal ArrayHolder<Quaternion>[] m_AllQuaternionColumns;
 39        [SerializeField] internal ArrayHolder<Rect>[] m_AllRectColumns;
 40        [SerializeField] internal ArrayHolder<RectInt>[] m_AllRectIntColumns;
 41        [SerializeField] internal ArrayHolder<Color>[] m_AllColorColumns;
 42        [SerializeField] internal ArrayHolder<LayerMask>[] m_AllLayerMaskColumns;
 43        [SerializeField] internal ArrayHolder<Bounds>[] m_AllBoundsColumns;
 44        [SerializeField] internal ArrayHolder<BoundsInt>[] m_AllBoundsIntColumns;
 45        [SerializeField] internal ArrayHolder<Hash128>[] m_AllHash128Columns;
 46        [SerializeField] internal ArrayHolder<Gradient>[] m_AllGradientColumns;
 47        [SerializeField] internal ArrayHolder<AnimationCurve>[] m_AllAnimationCurveColumns;
 48        [SerializeField] internal ArrayHolder<Object>[] m_AllObjectRefColumns;
 49        [SerializeField] internal ArrayHolder<int>[] m_AllEnumIntColumns;
 50        [SerializeField] internal string[] m_AllObjectRefTypeNames;
 51        [SerializeField] internal string[] m_AllEnumIntTypeNames;
 52
 53        /// <summary>
 54        ///     Contains the name of each column of each type. Ordered by Serializable.SerializableTypes
 55        /// </summary>
 56        [SerializeField]
 1057        internal ArrayHolder<string>[] m_AllColumnNames = new ArrayHolder<string>[Serializable.SerializableTypesCount];
 58
 59        [SerializeField] internal int[] m_RowIdentifierToDenseIndexMap;
 60        [SerializeField] internal int[] m_RowDenseIndexToIDMap;
 61        [SerializeField] internal string[] m_RowNames;
 62        [SerializeField] internal int m_RowEntriesFreeListHead;
 63        [SerializeField] internal int m_RowCount;
 64        [SerializeField] internal ColumnEntry[] m_ColumnIdentifierToDenseIndexMap;
 65        [SerializeField] internal int[] m_ColumnIdentifierToSortOrderMap;
 66        [SerializeField] internal int[] m_SortedOrderToColumnIdentifierMap;
 67
 1068        [SerializeField] internal ArrayHolder<int>[] m_ColumnDenseIndexToIDMap =
 69            new ArrayHolder<int>[Serializable.SerializableTypesCount];
 70
 71        [SerializeField] internal int m_ColumnEntriesFreeListHead;
 72        [SerializeField] internal int m_CombinedColumnCount;
 1073        [SerializeField] internal ulong m_DataVersion = 1;
 74
 75        // ReSharper enable InconsistentNaming
 76#pragma warning restore IDE1006
 77
 78
 79        /// <summary>
 80        ///     Version of internal structure format.
 81        /// </summary>
 82        /// <remarks>Bump this if you make a change that requires resizing of arrays.</remarks>
 1083        [SerializeField] internal int m_StructureVersion = 1;
 84
 85        /// <inheritdoc />
 86        public override ulong GetDataVersion()
 087        {
 088            return m_DataVersion;
 089        }
 90
 91        /// <inheritdoc />
 92        public override int GetStructureVersion()
 093        {
 094            return m_StructureVersion;
 095        }
 96
 97        /// <inheritdoc />
 98        public override int GetStructureCurrentVersion()
 099        {
 0100            return 1;
 0101        }
 102
 103        public override bool Migrate(int currentVersion)
 0104        {
 0105            switch (m_StructureVersion)
 106            {
 107                case 0:
 108                    // Pre EnumInt
 0109                    if (currentVersion >= 0)
 0110                    {
 0111                        Array.Resize(ref m_AllColumnNames, 30);
 0112                        Array.Resize(ref m_ColumnDenseIndexToIDMap, 30);
 0113                    }
 114
 0115                    m_StructureVersion = currentVersion;
 0116                    break;
 117            }
 118
 0119            return m_StructureVersion == currentVersion;
 0120        }
 121
 122        /// <inheritdoc />
 123        public override int GetColumnCount()
 52124        {
 52125            return m_CombinedColumnCount;
 52126        }
 127
 128        /// <inheritdoc />
 129        public override int GetRowCount()
 36130        {
 36131            return m_RowCount;
 36132        }
 133
 134        /// <inheritdoc />
 135        public override RowDescription[] GetAllRowDescriptions()
 17136        {
 17137            if (m_CombinedColumnCount == 0 || m_RowCount == 0)
 1138            {
 1139                return null;
 140            }
 141
 16142            RowDescription[] returnArray = new RowDescription[m_RowCount];
 128143            for (int i = 0; i < m_RowCount; i++)
 48144            {
 48145                returnArray[i].Identifier = m_RowDenseIndexToIDMap[i];
 48146                returnArray[i].Name = m_RowNames[i];
 48147                returnArray[i].SortOrder = i;
 48148            }
 149
 16150            return returnArray;
 17151        }
 152
 153        /// <inheritdoc />
 154        public override RowDescription GetRowDescription(int rowIdentifier)
 0155        {
 0156            RowDescription returnRowDescription = new RowDescription();
 157
 0158            int rowDenseIndex = m_RowIdentifierToDenseIndexMap[rowIdentifier];
 159
 0160            returnRowDescription.Identifier = rowIdentifier;
 0161            returnRowDescription.Name = m_RowNames[rowDenseIndex];
 0162            returnRowDescription.SortOrder = rowDenseIndex;
 163
 0164            return returnRowDescription;
 0165        }
 166
 167        /// <inheritdoc />
 168        public override RowDescription GetRowDescriptionByOrder(int order)
 1169        {
 1170            return new RowDescription
 171            {
 172                Identifier = m_RowDenseIndexToIDMap[order], Name = m_RowNames[order], SortOrder = order
 173            };
 1174        }
 175
 176        /// <inheritdoc />
 177        public override ColumnDescription GetColumnDescription(int columnIdentifier)
 0178        {
 0179            ColumnDescription returnColumnDescription = new ColumnDescription();
 180
 0181            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 182
 0183            returnColumnDescription.Identifier = columnIdentifier;
 0184            returnColumnDescription.Name = m_AllColumnNames[(int)columnEntry.ColumnType][columnEntry.ColumnDenseIndex];
 0185            returnColumnDescription.SortOrder = m_ColumnIdentifierToSortOrderMap[columnIdentifier];
 186
 0187            return returnColumnDescription;
 0188        }
 189
 190        /// <inheritdoc />
 191        public override ColumnDescription GetColumnDescriptionByOrder(int order)
 4192        {
 4193            int idAtOrderedIndex = m_SortedOrderToColumnIdentifierMap[order];
 4194            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[idAtOrderedIndex];
 195
 4196            string columnName = m_AllColumnNames[(int)columnEntry.ColumnType][columnEntry.ColumnDenseIndex];
 197
 4198            return new ColumnDescription
 199            {
 200                Identifier = idAtOrderedIndex, Name = columnName, Type = columnEntry.ColumnType, SortOrder = order
 201            };
 4202        }
 203
 204        /// <inheritdoc />
 205        public override ColumnDescription[] GetAllColumnDescriptions()
 29206        {
 29207            if (m_CombinedColumnCount == 0)
 1208            {
 1209                return null;
 210            }
 211
 28212            ColumnDescription[] returnArray = new ColumnDescription[m_CombinedColumnCount];
 213
 298214            for (int i = 0; i < m_CombinedColumnCount; i++)
 121215            {
 121216                int columnID = m_SortedOrderToColumnIdentifierMap[i];
 121217                AssertColumnIdentifierValid(columnID);
 121218                ref ColumnEntry entryForID = ref m_ColumnIdentifierToDenseIndexMap[columnID];
 121219                ref ArrayHolder<string> nameColumnsForType = ref m_AllColumnNames[(int)entryForID.ColumnType];
 220
 121221                string name = nameColumnsForType[entryForID.ColumnDenseIndex];
 222
 121223                returnArray[i] = new ColumnDescription
 224                {
 225                    Name = name, Identifier = columnID, Type = entryForID.ColumnType, SortOrder = i
 226                };
 121227            }
 228
 28229            return returnArray;
 29230        }
 231
 232        internal void AssertColumnIdentifierValid(int columnID)
 1145233        {
 1145234            if (columnID < 0 || columnID >= m_ColumnIdentifierToDenseIndexMap.Length)
 0235            {
 0236                throw new ArgumentException("Invalid column outside valid ID range: " + columnID);
 237            }
 238
 1145239            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[columnID];
 240
 1145241            if (columnEntry.ColumnType == Serializable.SerializableTypes.Invalid)
 0242            {
 0243                throw new ArgumentException("Invalid column pointing to deallocated entry: " + columnID);
 244            }
 1145245        }
 246
 247        internal void AssertRowIdentifierValid(int rowID)
 921248        {
 921249            if (rowID < 0 || rowID >= m_RowIdentifierToDenseIndexMap.Length)
 0250            {
 0251                throw new ArgumentException("Invalid row outside valid ID range: " + rowID);
 252            }
 253
 921254            int rowIndex = m_RowIdentifierToDenseIndexMap[rowID];
 255
 921256            if (rowIndex >= m_RowCount || rowIndex < 0)
 0257            {
 0258                throw new ArgumentException("Invalid row outside valid ID range: " + rowID);
 259            }
 921260        }
 261
 262        /// <inheritdoc />
 263        public override void SetColumnName(int columnIdentifier, string columnName)
 30264        {
 30265            AssertColumnIdentifierValid(columnIdentifier);
 30266            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 30267            m_AllColumnNames[(int)columnEntry.ColumnType][columnEntry.ColumnDenseIndex] = columnName;
 30268        }
 269
 270        /// <inheritdoc />
 271        public override string GetColumnName(int columnIdentifier)
 60272        {
 60273            AssertColumnIdentifierValid(columnIdentifier);
 60274            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 60275            return m_AllColumnNames[(int)columnEntry.ColumnType][columnEntry.ColumnDenseIndex];
 60276        }
 277
 278
 279        /// <inheritdoc />
 280        public override void SetRowName(int rowIdentifier, string rowName)
 10281        {
 10282            AssertRowIdentifierValid(rowIdentifier);
 10283            int rowDenseIndex = m_RowIdentifierToDenseIndexMap[rowIdentifier];
 10284            m_RowNames[rowDenseIndex] = rowName;
 10285        }
 286
 287        /// <inheritdoc />
 288        public override string GetRowName(int rowIdentifier)
 21289        {
 21290            AssertRowIdentifierValid(rowIdentifier);
 21291            int rowDenseIndex = m_RowIdentifierToDenseIndexMap[rowIdentifier];
 21292            return m_RowNames[rowDenseIndex];
 21293        }
 294
 295        public ref string GetRowNameRef(int rowIdentifier)
 20296        {
 20297            AssertRowIdentifierValid(rowIdentifier);
 20298            int rowDenseIndex = m_RowIdentifierToDenseIndexMap[rowIdentifier];
 20299            return ref m_RowNames[rowDenseIndex];
 20300        }
 301
 302        public ref string GetColumnNameRef(int columnIdentifier)
 60303        {
 60304            AssertColumnIdentifierValid(columnIdentifier);
 60305            ref ColumnEntry columnEntry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 60306            return ref m_AllColumnNames[(int)columnEntry.ColumnType][columnEntry.ColumnDenseIndex];
 60307        }
 308
 309        /// <inheritdoc />
 310        public override int AddRow(string rowName = null, int insertAtRowIdentifier = -1)
 56311        {
 56312            if (insertAtRowIdentifier >= 0)
 0313            {
 0314                AssertRowIdentifierValid(insertAtRowIdentifier);
 0315            }
 316
 56317            int rowID = m_RowEntriesFreeListHead;
 56318            int rowIDToDenseIndexMapLength = m_RowIdentifierToDenseIndexMap?.Length ?? 0;
 56319            if (rowID >= rowIDToDenseIndexMapLength)
 21320            {
 21321                int newSize = rowID * 2;
 21322                newSize = newSize == 0 ? 1 : newSize;
 21323                Array.Resize(ref m_RowIdentifierToDenseIndexMap, newSize);
 188324                for (int i = rowID; i < newSize; i++)
 73325                {
 73326                    m_RowIdentifierToDenseIndexMap[i] = i + 1;
 73327                }
 21328            }
 329
 56330            int denseIndexToIDMapLength = m_RowDenseIndexToIDMap?.Length ?? 0;
 56331            Array.Resize(ref m_RowDenseIndexToIDMap, denseIndexToIDMapLength + 1);
 56332            Array.Resize(ref m_RowNames, denseIndexToIDMapLength + 1);
 333
 56334            int insertAt = insertAtRowIdentifier < 0
 335                ? m_RowCount
 336                : m_RowIdentifierToDenseIndexMap[insertAtRowIdentifier];
 337
 112338            for (int i = denseIndexToIDMapLength; i > insertAt; i--)
 0339            {
 0340                int currentRowID = m_RowDenseIndexToIDMap[i - 1];
 0341                m_RowDenseIndexToIDMap[i] = currentRowID;
 342
 0343                m_RowIdentifierToDenseIndexMap[currentRowID] = i;
 344
 0345                m_RowNames[i] = m_RowNames[i - 1];
 0346            }
 347
 56348            m_RowEntriesFreeListHead = m_RowIdentifierToDenseIndexMap[rowID];
 56349            m_RowIdentifierToDenseIndexMap[rowID] = insertAt;
 56350            m_RowDenseIndexToIDMap[insertAt] = rowID;
 56351            m_RowNames[insertAt] = rowName == null ? rowID.ToString() : rowName;
 352
 56353            InsertRowsOfTypeInternal(ref m_AllStringColumns, insertAt, 1);
 56354            InsertRowsOfTypeInternal(ref m_AllBoolColumns, insertAt, 1);
 56355            InsertRowsOfTypeInternal(ref m_AllCharColumns, insertAt, 1);
 56356            InsertRowsOfTypeInternal(ref m_AllSByteColumns, insertAt, 1);
 56357            InsertRowsOfTypeInternal(ref m_AllByteColumns, insertAt, 1);
 56358            InsertRowsOfTypeInternal(ref m_AllShortColumns, insertAt, 1);
 56359            InsertRowsOfTypeInternal(ref m_AllUShortColumns, insertAt, 1);
 56360            InsertRowsOfTypeInternal(ref m_AllIntColumns, insertAt, 1);
 56361            InsertRowsOfTypeInternal(ref m_AllUIntColumns, insertAt, 1);
 56362            InsertRowsOfTypeInternal(ref m_AllLongColumns, insertAt, 1);
 56363            InsertRowsOfTypeInternal(ref m_AllULongColumns, insertAt, 1);
 56364            InsertRowsOfTypeInternal(ref m_AllFloatColumns, insertAt, 1);
 56365            InsertRowsOfTypeInternal(ref m_AllDoubleColumns, insertAt, 1);
 56366            InsertRowsOfTypeInternal(ref m_AllVector2Columns, insertAt, 1);
 56367            InsertRowsOfTypeInternal(ref m_AllVector3Columns, insertAt, 1);
 56368            InsertRowsOfTypeInternal(ref m_AllVector4Columns, insertAt, 1);
 56369            InsertRowsOfTypeInternal(ref m_AllVector2IntColumns, insertAt, 1);
 56370            InsertRowsOfTypeInternal(ref m_AllVector3IntColumns, insertAt, 1);
 56371            InsertRowsOfTypeInternal(ref m_AllQuaternionColumns, insertAt, 1);
 56372            InsertRowsOfTypeInternal(ref m_AllRectColumns, insertAt, 1);
 56373            InsertRowsOfTypeInternal(ref m_AllRectIntColumns, insertAt, 1);
 56374            InsertRowsOfTypeInternal(ref m_AllColorColumns, insertAt, 1);
 56375            InsertRowsOfTypeInternal(ref m_AllLayerMaskColumns, insertAt, 1);
 56376            InsertRowsOfTypeInternal(ref m_AllBoundsColumns, insertAt, 1);
 56377            InsertRowsOfTypeInternal(ref m_AllBoundsIntColumns, insertAt, 1);
 56378            InsertRowsOfTypeInternal(ref m_AllHash128Columns, insertAt, 1);
 56379            InsertRowsOfTypeInternal(ref m_AllGradientColumns, insertAt, 1);
 56380            InsertRowsOfTypeInternal(ref m_AllAnimationCurveColumns, insertAt, 1);
 56381            InsertRowsOfTypeInternal(ref m_AllObjectRefColumns, insertAt, 1);
 56382            InsertRowsOfTypeInternal(ref m_AllEnumIntColumns, insertAt, 1);
 383
 56384            ++m_RowCount;
 56385            m_DataVersion++;
 386
 56387            return rowID;
 56388        }
 389
 390        public void AddRows(int numberOfNewRows, string[] rowNames = null, int insertAtRowID = -1)
 0391        {
 0392            if (insertAtRowID >= 0)
 0393            {
 0394                AssertRowIdentifierValid(insertAtRowID);
 0395            }
 396
 0397            int rowIDToDenseIndexMapLength = m_RowIdentifierToDenseIndexMap?.Length ?? 0;
 0398            int newCount = m_RowCount + numberOfNewRows;
 0399            if (newCount > rowIDToDenseIndexMapLength)
 0400            {
 0401                int newSize = newCount;
 0402                --newSize;
 0403                newSize |= newSize >> 1;
 0404                newSize |= newSize >> 2;
 0405                newSize |= newSize >> 4;
 0406                newSize |= newSize >> 8;
 0407                newSize |= newSize >> 16;
 0408                ++newSize;
 409
 0410                newSize = newSize == 0 ? 1 : newSize;
 0411                Array.Resize(ref m_RowIdentifierToDenseIndexMap, newSize);
 0412                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0413                {
 0414                    m_RowIdentifierToDenseIndexMap[i] = i + 1;
 0415                }
 0416            }
 417
 0418            int denseIndexToIDMapLength = m_RowDenseIndexToIDMap?.Length ?? 0;
 0419            Array.Resize(ref m_RowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 0420            Array.Resize(ref rowNames, denseIndexToIDMapLength + numberOfNewRows);
 421
 0422            int insertAt = insertAtRowID < 0 ? m_RowCount : m_RowIdentifierToDenseIndexMap[insertAtRowID];
 423
 0424            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0425            {
 0426                int currentRowID = m_RowDenseIndexToIDMap[i - numberOfNewRows];
 0427                m_RowDenseIndexToIDMap[i] = currentRowID;
 428
 0429                m_RowIdentifierToDenseIndexMap[currentRowID] = i;
 430
 0431                rowNames[i] = rowNames[i - numberOfNewRows];
 0432            }
 433
 0434            int freeListHead = m_RowEntriesFreeListHead;
 435
 0436            for (int i = 0; i < numberOfNewRows; i++)
 0437            {
 0438                int rowID = freeListHead;
 0439                freeListHead = m_RowIdentifierToDenseIndexMap[rowID];
 0440                m_RowIdentifierToDenseIndexMap[rowID] = insertAt + i;
 0441                m_RowDenseIndexToIDMap[insertAt + i] = rowID;
 0442            }
 443
 0444            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0445            string emptyString = string.Empty;
 0446            for (int i = 0; i < numberOfNewRowNames; i++)
 0447            {
 0448                string currentRowName = rowNames[i];
 0449                int rowIDAt = m_RowDenseIndexToIDMap[insertAt + i];
 0450                rowNames[insertAt + i] = currentRowName == null ? rowIDAt.ToString() : currentRowName;
 0451            }
 452
 0453            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0454            {
 0455                int rowIDAt = m_RowDenseIndexToIDMap[insertAt + i];
 0456                rowNames[insertAt + i] = rowIDAt.ToString();
 0457            }
 458
 0459            m_RowEntriesFreeListHead = freeListHead;
 460
 0461            InsertRowsOfTypeInternal(ref m_AllStringColumns, insertAt, numberOfNewRows);
 0462            InsertRowsOfTypeInternal(ref m_AllBoolColumns, insertAt, numberOfNewRows);
 0463            InsertRowsOfTypeInternal(ref m_AllCharColumns, insertAt, numberOfNewRows);
 0464            InsertRowsOfTypeInternal(ref m_AllSByteColumns, insertAt, numberOfNewRows);
 0465            InsertRowsOfTypeInternal(ref m_AllByteColumns, insertAt, numberOfNewRows);
 0466            InsertRowsOfTypeInternal(ref m_AllShortColumns, insertAt, numberOfNewRows);
 0467            InsertRowsOfTypeInternal(ref m_AllUShortColumns, insertAt, numberOfNewRows);
 0468            InsertRowsOfTypeInternal(ref m_AllIntColumns, insertAt, numberOfNewRows);
 0469            InsertRowsOfTypeInternal(ref m_AllUIntColumns, insertAt, numberOfNewRows);
 0470            InsertRowsOfTypeInternal(ref m_AllLongColumns, insertAt, numberOfNewRows);
 0471            InsertRowsOfTypeInternal(ref m_AllULongColumns, insertAt, numberOfNewRows);
 0472            InsertRowsOfTypeInternal(ref m_AllFloatColumns, insertAt, numberOfNewRows);
 0473            InsertRowsOfTypeInternal(ref m_AllDoubleColumns, insertAt, numberOfNewRows);
 0474            InsertRowsOfTypeInternal(ref m_AllVector2Columns, insertAt, numberOfNewRows);
 0475            InsertRowsOfTypeInternal(ref m_AllVector3Columns, insertAt, numberOfNewRows);
 0476            InsertRowsOfTypeInternal(ref m_AllVector4Columns, insertAt, numberOfNewRows);
 0477            InsertRowsOfTypeInternal(ref m_AllVector2IntColumns, insertAt, numberOfNewRows);
 0478            InsertRowsOfTypeInternal(ref m_AllVector3IntColumns, insertAt, numberOfNewRows);
 0479            InsertRowsOfTypeInternal(ref m_AllQuaternionColumns, insertAt, numberOfNewRows);
 0480            InsertRowsOfTypeInternal(ref m_AllRectColumns, insertAt, numberOfNewRows);
 0481            InsertRowsOfTypeInternal(ref m_AllRectIntColumns, insertAt, numberOfNewRows);
 0482            InsertRowsOfTypeInternal(ref m_AllColorColumns, insertAt, numberOfNewRows);
 0483            InsertRowsOfTypeInternal(ref m_AllLayerMaskColumns, insertAt, numberOfNewRows);
 0484            InsertRowsOfTypeInternal(ref m_AllBoundsColumns, insertAt, numberOfNewRows);
 0485            InsertRowsOfTypeInternal(ref m_AllBoundsIntColumns, insertAt, numberOfNewRows);
 0486            InsertRowsOfTypeInternal(ref m_AllHash128Columns, insertAt, numberOfNewRows);
 0487            InsertRowsOfTypeInternal(ref m_AllGradientColumns, insertAt, numberOfNewRows);
 0488            InsertRowsOfTypeInternal(ref m_AllAnimationCurveColumns, insertAt, numberOfNewRows);
 0489            InsertRowsOfTypeInternal(ref m_AllObjectRefColumns, insertAt, numberOfNewRows);
 0490            InsertRowsOfTypeInternal(ref m_AllEnumIntColumns, insertAt, numberOfNewRows);
 491
 0492            m_RowCount += numberOfNewRows;
 0493            m_DataVersion++;
 0494        }
 495
 496        public void AddRows(int numberOfNewRows, ref int[] rowIDs, string[] rowNames = null, int insertAtRowID = -1)
 0497        {
 0498            if (insertAtRowID >= 0)
 0499            {
 0500                AssertRowIdentifierValid(insertAtRowID);
 0501            }
 502
 0503            int rowIDToDenseIndexMapLength = m_RowIdentifierToDenseIndexMap?.Length ?? 0;
 0504            int newCount = m_RowCount + numberOfNewRows;
 0505            if (newCount > rowIDToDenseIndexMapLength)
 0506            {
 0507                int newSize = newCount;
 0508                --newSize;
 0509                newSize |= newSize >> 1;
 0510                newSize |= newSize >> 2;
 0511                newSize |= newSize >> 4;
 0512                newSize |= newSize >> 8;
 0513                newSize |= newSize >> 16;
 0514                ++newSize;
 515
 0516                newSize = newSize == 0 ? 1 : newSize;
 0517                Array.Resize(ref m_RowIdentifierToDenseIndexMap, newSize);
 0518                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0519                {
 0520                    m_RowIdentifierToDenseIndexMap[i] = i + 1;
 0521                }
 0522            }
 523
 0524            int denseIndexToIDMapLength = m_RowDenseIndexToIDMap?.Length ?? 0;
 0525            Array.Resize(ref m_RowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 526
 0527            int insertAt = insertAtRowID < 0 ? m_RowCount : m_RowIdentifierToDenseIndexMap[insertAtRowID];
 528
 0529            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0530            {
 0531                int currentRowID = m_RowDenseIndexToIDMap[i - numberOfNewRows];
 0532                m_RowDenseIndexToIDMap[i] = currentRowID;
 533
 0534                m_RowIdentifierToDenseIndexMap[currentRowID] = i;
 535
 0536                rowNames[i] = rowNames[i - numberOfNewRows];
 0537            }
 538
 0539            int freeListHead = m_RowEntriesFreeListHead;
 540
 0541            for (int i = 0; i < numberOfNewRows; i++)
 0542            {
 0543                int rowID = freeListHead;
 0544                freeListHead = m_RowIdentifierToDenseIndexMap[rowID];
 0545                m_RowIdentifierToDenseIndexMap[rowID] = insertAt + i;
 0546                m_RowDenseIndexToIDMap[insertAt + i] = rowID;
 0547                rowIDs[i] = rowID;
 0548            }
 549
 0550            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0551            for (int i = 0; i < numberOfNewRowNames; i++)
 0552            {
 0553                string currentRowName = rowNames[i];
 0554                int rowIDAt = m_RowDenseIndexToIDMap[insertAt + i];
 0555                rowNames[insertAt + i] = currentRowName == null ? rowIDAt.ToString() : currentRowName;
 0556            }
 557
 0558            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0559            {
 0560                int rowIDAt = m_RowDenseIndexToIDMap[insertAt + i];
 0561                rowNames[insertAt + i] = rowIDAt.ToString();
 0562            }
 563
 0564            m_RowEntriesFreeListHead = freeListHead;
 565
 0566            InsertRowsOfTypeInternal(ref m_AllStringColumns, insertAt, numberOfNewRows);
 0567            InsertRowsOfTypeInternal(ref m_AllBoolColumns, insertAt, numberOfNewRows);
 0568            InsertRowsOfTypeInternal(ref m_AllCharColumns, insertAt, numberOfNewRows);
 0569            InsertRowsOfTypeInternal(ref m_AllSByteColumns, insertAt, numberOfNewRows);
 0570            InsertRowsOfTypeInternal(ref m_AllByteColumns, insertAt, numberOfNewRows);
 0571            InsertRowsOfTypeInternal(ref m_AllShortColumns, insertAt, numberOfNewRows);
 0572            InsertRowsOfTypeInternal(ref m_AllUShortColumns, insertAt, numberOfNewRows);
 0573            InsertRowsOfTypeInternal(ref m_AllIntColumns, insertAt, numberOfNewRows);
 0574            InsertRowsOfTypeInternal(ref m_AllUIntColumns, insertAt, numberOfNewRows);
 0575            InsertRowsOfTypeInternal(ref m_AllLongColumns, insertAt, numberOfNewRows);
 0576            InsertRowsOfTypeInternal(ref m_AllULongColumns, insertAt, numberOfNewRows);
 0577            InsertRowsOfTypeInternal(ref m_AllFloatColumns, insertAt, numberOfNewRows);
 0578            InsertRowsOfTypeInternal(ref m_AllDoubleColumns, insertAt, numberOfNewRows);
 0579            InsertRowsOfTypeInternal(ref m_AllVector2Columns, insertAt, numberOfNewRows);
 0580            InsertRowsOfTypeInternal(ref m_AllVector3Columns, insertAt, numberOfNewRows);
 0581            InsertRowsOfTypeInternal(ref m_AllVector4Columns, insertAt, numberOfNewRows);
 0582            InsertRowsOfTypeInternal(ref m_AllVector2IntColumns, insertAt, numberOfNewRows);
 0583            InsertRowsOfTypeInternal(ref m_AllVector3IntColumns, insertAt, numberOfNewRows);
 0584            InsertRowsOfTypeInternal(ref m_AllQuaternionColumns, insertAt, numberOfNewRows);
 0585            InsertRowsOfTypeInternal(ref m_AllRectColumns, insertAt, numberOfNewRows);
 0586            InsertRowsOfTypeInternal(ref m_AllRectIntColumns, insertAt, numberOfNewRows);
 0587            InsertRowsOfTypeInternal(ref m_AllColorColumns, insertAt, numberOfNewRows);
 0588            InsertRowsOfTypeInternal(ref m_AllLayerMaskColumns, insertAt, numberOfNewRows);
 0589            InsertRowsOfTypeInternal(ref m_AllBoundsColumns, insertAt, numberOfNewRows);
 0590            InsertRowsOfTypeInternal(ref m_AllBoundsIntColumns, insertAt, numberOfNewRows);
 0591            InsertRowsOfTypeInternal(ref m_AllHash128Columns, insertAt, numberOfNewRows);
 0592            InsertRowsOfTypeInternal(ref m_AllGradientColumns, insertAt, numberOfNewRows);
 0593            InsertRowsOfTypeInternal(ref m_AllAnimationCurveColumns, insertAt, numberOfNewRows);
 0594            InsertRowsOfTypeInternal(ref m_AllObjectRefColumns, insertAt, numberOfNewRows);
 0595            InsertRowsOfTypeInternal(ref m_AllEnumIntColumns, insertAt, numberOfNewRows);
 596
 0597            m_RowCount += numberOfNewRows;
 0598            m_DataVersion++;
 0599        }
 600
 601        /// <inheritdoc />
 602        public override void RemoveRow(int rowIdentifier)
 0603        {
 0604            AssertRowIdentifierValid(rowIdentifier);
 0605            int rowDenseIndex = m_RowIdentifierToDenseIndexMap[rowIdentifier];
 0606            for (int i = rowDenseIndex + 1; i < m_RowCount; i++)
 0607            {
 0608                int currentRowID = m_RowDenseIndexToIDMap[i];
 0609                m_RowIdentifierToDenseIndexMap[currentRowID] = i - 1;
 0610                m_RowDenseIndexToIDMap[i - 1] = currentRowID;
 0611                m_RowNames[i - 1] = m_RowNames[i];
 0612            }
 613
 0614            m_RowIdentifierToDenseIndexMap[rowIdentifier] = m_RowEntriesFreeListHead;
 0615            m_RowEntriesFreeListHead = rowIdentifier;
 0616            Array.Resize(ref m_RowDenseIndexToIDMap, m_RowCount - 1);
 0617            Array.Resize(ref m_RowNames, m_RowCount - 1);
 618
 0619            DeleteRowsOfTypeInternal(ref m_AllStringColumns, rowDenseIndex, 1);
 0620            DeleteRowsOfTypeInternal(ref m_AllBoolColumns, rowDenseIndex, 1);
 0621            DeleteRowsOfTypeInternal(ref m_AllCharColumns, rowDenseIndex, 1);
 0622            DeleteRowsOfTypeInternal(ref m_AllSByteColumns, rowDenseIndex, 1);
 0623            DeleteRowsOfTypeInternal(ref m_AllByteColumns, rowDenseIndex, 1);
 0624            DeleteRowsOfTypeInternal(ref m_AllShortColumns, rowDenseIndex, 1);
 0625            DeleteRowsOfTypeInternal(ref m_AllUShortColumns, rowDenseIndex, 1);
 0626            DeleteRowsOfTypeInternal(ref m_AllIntColumns, rowDenseIndex, 1);
 0627            DeleteRowsOfTypeInternal(ref m_AllUIntColumns, rowDenseIndex, 1);
 0628            DeleteRowsOfTypeInternal(ref m_AllLongColumns, rowDenseIndex, 1);
 0629            DeleteRowsOfTypeInternal(ref m_AllULongColumns, rowDenseIndex, 1);
 0630            DeleteRowsOfTypeInternal(ref m_AllFloatColumns, rowDenseIndex, 1);
 0631            DeleteRowsOfTypeInternal(ref m_AllDoubleColumns, rowDenseIndex, 1);
 0632            DeleteRowsOfTypeInternal(ref m_AllVector2Columns, rowDenseIndex, 1);
 0633            DeleteRowsOfTypeInternal(ref m_AllVector3Columns, rowDenseIndex, 1);
 0634            DeleteRowsOfTypeInternal(ref m_AllVector4Columns, rowDenseIndex, 1);
 0635            DeleteRowsOfTypeInternal(ref m_AllVector2IntColumns, rowDenseIndex, 1);
 0636            DeleteRowsOfTypeInternal(ref m_AllVector3IntColumns, rowDenseIndex, 1);
 0637            DeleteRowsOfTypeInternal(ref m_AllQuaternionColumns, rowDenseIndex, 1);
 0638            DeleteRowsOfTypeInternal(ref m_AllRectColumns, rowDenseIndex, 1);
 0639            DeleteRowsOfTypeInternal(ref m_AllRectIntColumns, rowDenseIndex, 1);
 0640            DeleteRowsOfTypeInternal(ref m_AllColorColumns, rowDenseIndex, 1);
 0641            DeleteRowsOfTypeInternal(ref m_AllLayerMaskColumns, rowDenseIndex, 1);
 0642            DeleteRowsOfTypeInternal(ref m_AllBoundsColumns, rowDenseIndex, 1);
 0643            DeleteRowsOfTypeInternal(ref m_AllBoundsIntColumns, rowDenseIndex, 1);
 0644            DeleteRowsOfTypeInternal(ref m_AllHash128Columns, rowDenseIndex, 1);
 0645            DeleteRowsOfTypeInternal(ref m_AllGradientColumns, rowDenseIndex, 1);
 0646            DeleteRowsOfTypeInternal(ref m_AllAnimationCurveColumns, rowDenseIndex, 1);
 0647            DeleteRowsOfTypeInternal(ref m_AllObjectRefColumns, rowDenseIndex, 1);
 0648            DeleteRowsOfTypeInternal(ref m_AllEnumIntColumns, rowDenseIndex, 1);
 649
 0650            --m_RowCount;
 0651            m_DataVersion++;
 0652        }
 653
 654        /// <inheritdoc />
 655        public override int AddColumn(Serializable.SerializableTypes columnType, string columnName,
 656            int insertAtColumnIdentifier = -1)
 114657        {
 114658            switch (columnType)
 659            {
 660                case Serializable.SerializableTypes.String:
 13661                    return AddColumnInternal(columnName, ref m_AllStringColumns, Serializable.SerializableTypes.String,
 662                        insertAtColumnIdentifier);
 663                case Serializable.SerializableTypes.Char:
 3664                    return AddColumnInternal(columnName, ref m_AllCharColumns, Serializable.SerializableTypes.Char,
 665                        insertAtColumnIdentifier);
 666                case Serializable.SerializableTypes.Bool:
 4667                    return AddColumnInternal(columnName, ref m_AllBoolColumns, Serializable.SerializableTypes.Bool,
 668                        insertAtColumnIdentifier);
 669                case Serializable.SerializableTypes.SByte:
 4670                    return AddColumnInternal(columnName, ref m_AllSByteColumns, Serializable.SerializableTypes.SByte,
 671                        insertAtColumnIdentifier);
 672                case Serializable.SerializableTypes.Byte:
 3673                    return AddColumnInternal(columnName, ref m_AllByteColumns, Serializable.SerializableTypes.Byte,
 674                        insertAtColumnIdentifier);
 675                case Serializable.SerializableTypes.Short:
 3676                    return AddColumnInternal(columnName, ref m_AllShortColumns, Serializable.SerializableTypes.Short,
 677                        insertAtColumnIdentifier);
 678                case Serializable.SerializableTypes.UShort:
 3679                    return AddColumnInternal(columnName, ref m_AllUShortColumns, Serializable.SerializableTypes.UShort,
 680                        insertAtColumnIdentifier);
 681                case Serializable.SerializableTypes.Int:
 3682                    return AddColumnInternal(columnName, ref m_AllIntColumns, Serializable.SerializableTypes.Int,
 683                        insertAtColumnIdentifier);
 684                case Serializable.SerializableTypes.UInt:
 3685                    return AddColumnInternal(columnName, ref m_AllUIntColumns, Serializable.SerializableTypes.UInt,
 686                        insertAtColumnIdentifier);
 687                case Serializable.SerializableTypes.Long:
 3688                    return AddColumnInternal(columnName, ref m_AllLongColumns, Serializable.SerializableTypes.Long,
 689                        insertAtColumnIdentifier);
 690                case Serializable.SerializableTypes.ULong:
 3691                    return AddColumnInternal(columnName, ref m_AllULongColumns, Serializable.SerializableTypes.ULong,
 692                        insertAtColumnIdentifier);
 693                case Serializable.SerializableTypes.Float:
 4694                    return AddColumnInternal(columnName, ref m_AllFloatColumns, Serializable.SerializableTypes.Float,
 695                        insertAtColumnIdentifier);
 696                case Serializable.SerializableTypes.Double:
 4697                    return AddColumnInternal(columnName, ref m_AllDoubleColumns, Serializable.SerializableTypes.Double,
 698                        insertAtColumnIdentifier);
 699                case Serializable.SerializableTypes.Vector2:
 5700                    return AddColumnInternal(columnName, ref m_AllVector2Columns,
 701                        Serializable.SerializableTypes.Vector2,
 702                        insertAtColumnIdentifier);
 703                case Serializable.SerializableTypes.Vector3:
 3704                    return AddColumnInternal(columnName, ref m_AllVector3Columns,
 705                        Serializable.SerializableTypes.Vector3,
 706                        insertAtColumnIdentifier);
 707                case Serializable.SerializableTypes.Vector4:
 3708                    return AddColumnInternal(columnName, ref m_AllVector4Columns,
 709                        Serializable.SerializableTypes.Vector4,
 710                        insertAtColumnIdentifier);
 711                case Serializable.SerializableTypes.Vector2Int:
 3712                    return AddColumnInternal(columnName, ref m_AllVector2IntColumns,
 713                        Serializable.SerializableTypes.Vector2Int, insertAtColumnIdentifier);
 714                case Serializable.SerializableTypes.Vector3Int:
 3715                    return AddColumnInternal(columnName, ref m_AllVector3IntColumns,
 716                        Serializable.SerializableTypes.Vector3Int, insertAtColumnIdentifier);
 717                case Serializable.SerializableTypes.Quaternion:
 4718                    return AddColumnInternal(columnName, ref m_AllQuaternionColumns,
 719                        Serializable.SerializableTypes.Quaternion, insertAtColumnIdentifier);
 720                case Serializable.SerializableTypes.Rect:
 3721                    return AddColumnInternal(columnName, ref m_AllRectColumns, Serializable.SerializableTypes.Rect,
 722                        insertAtColumnIdentifier);
 723                case Serializable.SerializableTypes.RectInt:
 3724                    return AddColumnInternal(columnName, ref m_AllRectIntColumns,
 725                        Serializable.SerializableTypes.RectInt,
 726                        insertAtColumnIdentifier);
 727                case Serializable.SerializableTypes.Color:
 3728                    return AddColumnInternal(columnName, ref m_AllColorColumns, Serializable.SerializableTypes.Color,
 729                        insertAtColumnIdentifier);
 730                case Serializable.SerializableTypes.LayerMask:
 3731                    return AddColumnInternal(columnName, ref m_AllLayerMaskColumns,
 732                        Serializable.SerializableTypes.LayerMask, insertAtColumnIdentifier);
 733                case Serializable.SerializableTypes.Bounds:
 9734                    return AddColumnInternal(columnName, ref m_AllBoundsColumns, Serializable.SerializableTypes.Bounds,
 735                        insertAtColumnIdentifier);
 736                case Serializable.SerializableTypes.BoundsInt:
 3737                    return AddColumnInternal(columnName, ref m_AllBoundsIntColumns,
 738                        Serializable.SerializableTypes.BoundsInt, insertAtColumnIdentifier);
 739                case Serializable.SerializableTypes.Hash128:
 3740                    return AddColumnInternal(columnName, ref m_AllHash128Columns,
 741                        Serializable.SerializableTypes.Hash128,
 742                        insertAtColumnIdentifier);
 743                case Serializable.SerializableTypes.Gradient:
 3744                    return AddColumnInternal(columnName, ref m_AllGradientColumns,
 745                        Serializable.SerializableTypes.Gradient, insertAtColumnIdentifier);
 746                case Serializable.SerializableTypes.AnimationCurve:
 3747                    return AddColumnInternal(columnName, ref m_AllAnimationCurveColumns,
 748                        Serializable.SerializableTypes.AnimationCurve, insertAtColumnIdentifier);
 749                case Serializable.SerializableTypes.Object:
 4750                    return AddColumnInternal(columnName, ref m_AllObjectRefColumns,
 751                        Serializable.SerializableTypes.Object,
 752                        insertAtColumnIdentifier);
 753                case Serializable.SerializableTypes.EnumInt:
 3754                    return AddColumnInternal(columnName, ref m_AllEnumIntColumns,
 755                        Serializable.SerializableTypes.EnumInt,
 756                        insertAtColumnIdentifier);
 757            }
 758
 0759            return -1;
 114760        }
 761
 762        /// <inheritdoc />
 763        public override void RemoveColumn(Serializable.SerializableTypes columnType, int columnIdentifier)
 4764        {
 4765            switch (columnType)
 766            {
 767                case Serializable.SerializableTypes.String:
 1768                    RemoveColumnInternal(ref m_AllStringColumns, Serializable.SerializableTypes.String,
 769                        columnIdentifier);
 1770                    break;
 771                case Serializable.SerializableTypes.Char:
 0772                    RemoveColumnInternal(ref m_AllCharColumns, Serializable.SerializableTypes.Char, columnIdentifier);
 0773                    break;
 774                case Serializable.SerializableTypes.Bool:
 0775                    RemoveColumnInternal(ref m_AllBoolColumns, Serializable.SerializableTypes.Bool, columnIdentifier);
 0776                    break;
 777                case Serializable.SerializableTypes.SByte:
 0778                    RemoveColumnInternal(ref m_AllSByteColumns, Serializable.SerializableTypes.SByte, columnIdentifier);
 0779                    break;
 780                case Serializable.SerializableTypes.Byte:
 0781                    RemoveColumnInternal(ref m_AllByteColumns, Serializable.SerializableTypes.Byte, columnIdentifier);
 0782                    break;
 783                case Serializable.SerializableTypes.Short:
 0784                    RemoveColumnInternal(ref m_AllShortColumns, Serializable.SerializableTypes.Short, columnIdentifier);
 0785                    break;
 786                case Serializable.SerializableTypes.UShort:
 0787                    RemoveColumnInternal(ref m_AllUShortColumns, Serializable.SerializableTypes.UShort,
 788                        columnIdentifier);
 0789                    break;
 790                case Serializable.SerializableTypes.Int:
 0791                    RemoveColumnInternal(ref m_AllIntColumns, Serializable.SerializableTypes.Int, columnIdentifier);
 0792                    break;
 793                case Serializable.SerializableTypes.UInt:
 0794                    RemoveColumnInternal(ref m_AllUIntColumns, Serializable.SerializableTypes.UInt, columnIdentifier);
 0795                    break;
 796                case Serializable.SerializableTypes.Long:
 0797                    RemoveColumnInternal(ref m_AllLongColumns, Serializable.SerializableTypes.Long, columnIdentifier);
 0798                    break;
 799                case Serializable.SerializableTypes.ULong:
 0800                    RemoveColumnInternal(ref m_AllULongColumns, Serializable.SerializableTypes.ULong, columnIdentifier);
 0801                    break;
 802                case Serializable.SerializableTypes.Float:
 0803                    RemoveColumnInternal(ref m_AllFloatColumns, Serializable.SerializableTypes.Float, columnIdentifier);
 0804                    break;
 805                case Serializable.SerializableTypes.Double:
 0806                    RemoveColumnInternal(ref m_AllDoubleColumns, Serializable.SerializableTypes.Double,
 807                        columnIdentifier);
 0808                    break;
 809                case Serializable.SerializableTypes.Vector2:
 0810                    RemoveColumnInternal(ref m_AllVector2Columns, Serializable.SerializableTypes.Vector2,
 811                        columnIdentifier);
 0812                    break;
 813                case Serializable.SerializableTypes.Vector3:
 0814                    RemoveColumnInternal(ref m_AllVector3Columns, Serializable.SerializableTypes.Vector3,
 815                        columnIdentifier);
 0816                    break;
 817                case Serializable.SerializableTypes.Vector4:
 0818                    RemoveColumnInternal(ref m_AllVector4Columns, Serializable.SerializableTypes.Vector4,
 819                        columnIdentifier);
 0820                    break;
 821                case Serializable.SerializableTypes.Vector2Int:
 0822                    RemoveColumnInternal(ref m_AllVector2IntColumns, Serializable.SerializableTypes.Vector2Int,
 823                        columnIdentifier);
 0824                    break;
 825                case Serializable.SerializableTypes.Vector3Int:
 0826                    RemoveColumnInternal(ref m_AllVector3IntColumns, Serializable.SerializableTypes.Vector3Int,
 827                        columnIdentifier);
 0828                    break;
 829                case Serializable.SerializableTypes.Quaternion:
 0830                    RemoveColumnInternal(ref m_AllQuaternionColumns, Serializable.SerializableTypes.Quaternion,
 831                        columnIdentifier);
 0832                    break;
 833                case Serializable.SerializableTypes.Rect:
 0834                    RemoveColumnInternal(ref m_AllRectColumns, Serializable.SerializableTypes.Rect, columnIdentifier);
 0835                    break;
 836                case Serializable.SerializableTypes.RectInt:
 0837                    RemoveColumnInternal(ref m_AllRectIntColumns, Serializable.SerializableTypes.RectInt,
 838                        columnIdentifier);
 0839                    break;
 840                case Serializable.SerializableTypes.Color:
 0841                    RemoveColumnInternal(ref m_AllColorColumns, Serializable.SerializableTypes.Color, columnIdentifier);
 0842                    break;
 843                case Serializable.SerializableTypes.LayerMask:
 0844                    RemoveColumnInternal(ref m_AllLayerMaskColumns, Serializable.SerializableTypes.LayerMask,
 845                        columnIdentifier);
 0846                    break;
 847                case Serializable.SerializableTypes.Bounds:
 3848                    RemoveColumnInternal(ref m_AllBoundsColumns, Serializable.SerializableTypes.Bounds,
 849                        columnIdentifier);
 3850                    break;
 851                case Serializable.SerializableTypes.BoundsInt:
 0852                    RemoveColumnInternal(ref m_AllBoundsIntColumns, Serializable.SerializableTypes.BoundsInt,
 853                        columnIdentifier);
 0854                    break;
 855                case Serializable.SerializableTypes.Hash128:
 0856                    RemoveColumnInternal(ref m_AllHash128Columns, Serializable.SerializableTypes.Hash128,
 857                        columnIdentifier);
 0858                    break;
 859                case Serializable.SerializableTypes.Gradient:
 0860                    RemoveColumnInternal(ref m_AllGradientColumns, Serializable.SerializableTypes.Gradient,
 861                        columnIdentifier);
 0862                    break;
 863                case Serializable.SerializableTypes.AnimationCurve:
 0864                    RemoveColumnInternal(ref m_AllAnimationCurveColumns, Serializable.SerializableTypes.AnimationCurve,
 865                        columnIdentifier);
 0866                    break;
 867                case Serializable.SerializableTypes.Object:
 0868                    RemoveColumnInternal(ref m_AllObjectRefColumns, Serializable.SerializableTypes.Object,
 869                        columnIdentifier);
 0870                    break;
 871                case Serializable.SerializableTypes.EnumInt:
 0872                    RemoveColumnInternal(ref m_AllEnumIntColumns, Serializable.SerializableTypes.EnumInt,
 873                        columnIdentifier);
 0874                    break;
 875            }
 4876        }
 877
 878        // Set
 879        /// <inheritdoc />
 880        public override ulong SetString(int rowIdentifier, int columnIdentifier, string newValue)
 10881        {
 10882            return SetCell(rowIdentifier, columnIdentifier, ref m_AllStringColumns, newValue);
 10883        }
 884
 885        /// <inheritdoc />
 886        public override ulong SetBool(int rowIdentifier, int columnIdentifier, bool newValue)
 10887        {
 10888            return SetCell(rowIdentifier, columnIdentifier, ref m_AllBoolColumns, newValue);
 10889        }
 890
 891        /// <inheritdoc />
 892        public override ulong SetChar(int rowIdentifier, int columnIdentifier, char newValue)
 10893        {
 10894            return SetCell(rowIdentifier, columnIdentifier, ref m_AllCharColumns, newValue);
 10895        }
 896
 897        /// <inheritdoc />
 898        public override ulong SetSByte(int rowIdentifier, int columnIdentifier, sbyte newValue)
 10899        {
 10900            return SetCell(rowIdentifier, columnIdentifier, ref m_AllSByteColumns, newValue);
 10901        }
 902
 903        /// <inheritdoc />
 904        public override ulong SetByte(int rowIdentifier, int columnIdentifier, byte newValue)
 10905        {
 10906            return SetCell(rowIdentifier, columnIdentifier, ref m_AllByteColumns, newValue);
 10907        }
 908
 909        /// <inheritdoc />
 910        public override ulong SetEnumInt(int rowIdentifier, int columnIdentifier, int newValue)
 0911        {
 0912            return SetCell(rowIdentifier, columnIdentifier, ref m_AllEnumIntColumns, newValue);
 0913        }
 914
 915        /// <inheritdoc />
 916        public override ulong SetShort(int rowIdentifier, int columnIdentifier, short newValue)
 10917        {
 10918            return SetCell(rowIdentifier, columnIdentifier, ref m_AllShortColumns, newValue);
 10919        }
 920
 921        /// <inheritdoc />
 922        public override ulong SetUShort(int rowIdentifier, int columnIdentifier, ushort newValue)
 10923        {
 10924            return SetCell(rowIdentifier, columnIdentifier, ref m_AllUShortColumns, newValue);
 10925        }
 926
 927        /// <inheritdoc />
 928        public override ulong SetInt(int rowIdentifier, int columnIdentifier, int newValue)
 10929        {
 10930            return SetCell(rowIdentifier, columnIdentifier, ref m_AllIntColumns, newValue);
 10931        }
 932
 933        /// <inheritdoc />
 934        public override ulong SetUInt(int rowIdentifier, int columnIdentifier, uint newValue)
 10935        {
 10936            return SetCell(rowIdentifier, columnIdentifier, ref m_AllUIntColumns, newValue);
 10937        }
 938
 939        /// <inheritdoc />
 940        public override ulong SetLong(int rowIdentifier, int columnIdentifier, long newValue)
 10941        {
 10942            return SetCell(rowIdentifier, columnIdentifier, ref m_AllLongColumns, newValue);
 10943        }
 944
 945        /// <inheritdoc />
 946        public override ulong SetULong(int rowIdentifier, int columnIdentifier, ulong newValue)
 10947        {
 10948            return SetCell(rowIdentifier, columnIdentifier, ref m_AllULongColumns, newValue);
 10949        }
 950
 951        /// <inheritdoc />
 952        public override ulong SetFloat(int rowIdentifier, int columnIdentifier, float newValue)
 10953        {
 10954            return SetCell(rowIdentifier, columnIdentifier, ref m_AllFloatColumns, newValue);
 10955        }
 956
 957        /// <inheritdoc />
 958        public override ulong SetDouble(int rowIdentifier, int columnIdentifier, double newValue)
 10959        {
 10960            return SetCell(rowIdentifier, columnIdentifier, ref m_AllDoubleColumns, newValue);
 10961        }
 962
 963        /// <inheritdoc />
 964        public override ulong SetVector2(int rowIdentifier, int columnIdentifier, Vector2 newStruct)
 10965        {
 10966            return SetCell(rowIdentifier, columnIdentifier, ref m_AllVector2Columns, newStruct);
 10967        }
 968
 969        /// <inheritdoc />
 970        public override ulong SetVector3(int rowIdentifier, int columnIdentifier, Vector3 newStruct)
 10971        {
 10972            return SetCell(rowIdentifier, columnIdentifier, ref m_AllVector3Columns, newStruct);
 10973        }
 974
 975        /// <inheritdoc />
 976        public override ulong SetVector4(int rowIdentifier, int columnIdentifier, Vector4 newStruct)
 10977        {
 10978            return SetCell(rowIdentifier, columnIdentifier, ref m_AllVector4Columns, newStruct);
 10979        }
 980
 981        /// <inheritdoc />
 982        public override ulong SetVector2Int(int rowIdentifier, int columnIdentifier, Vector2Int newStruct)
 10983        {
 10984            return SetCell(rowIdentifier, columnIdentifier, ref m_AllVector2IntColumns, newStruct);
 10985        }
 986
 987        /// <inheritdoc />
 988        public override ulong SetVector3Int(int rowIdentifier, int columnIdentifier, Vector3Int newStruct)
 10989        {
 10990            return SetCell(rowIdentifier, columnIdentifier, ref m_AllVector3IntColumns, newStruct);
 10991        }
 992
 993        /// <inheritdoc />
 994        public override ulong SetQuaternion(int rowIdentifier, int columnIdentifier, Quaternion newStruct)
 10995        {
 10996            return SetCell(rowIdentifier, columnIdentifier, ref m_AllQuaternionColumns, newStruct);
 10997        }
 998
 999        /// <inheritdoc />
 1000        public override ulong SetRect(int rowIdentifier, int columnIdentifier, Rect newStruct)
 101001        {
 101002            return SetCell(rowIdentifier, columnIdentifier, ref m_AllRectColumns, newStruct);
 101003        }
 1004
 1005        /// <inheritdoc />
 1006        public override ulong SetRectInt(int rowIdentifier, int columnIdentifier, RectInt newStruct)
 101007        {
 101008            return SetCell(rowIdentifier, columnIdentifier, ref m_AllRectIntColumns, newStruct);
 101009        }
 1010
 1011        /// <inheritdoc />
 1012        public override ulong SetColor(int rowIdentifier, int columnIdentifier, Color newStruct)
 101013        {
 101014            return SetCell(rowIdentifier, columnIdentifier, ref m_AllColorColumns, newStruct);
 101015        }
 1016
 1017        /// <inheritdoc />
 1018        public override ulong SetLayerMask(int rowIdentifier, int columnIdentifier, LayerMask newStruct)
 101019        {
 101020            return SetCell(rowIdentifier, columnIdentifier, ref m_AllLayerMaskColumns, newStruct);
 101021        }
 1022
 1023        /// <inheritdoc />
 1024        public override ulong SetBounds(int rowIdentifier, int columnIdentifier, Bounds newStruct)
 101025        {
 101026            return SetCell(rowIdentifier, columnIdentifier, ref m_AllBoundsColumns, newStruct);
 101027        }
 1028
 1029        /// <inheritdoc />
 1030        public override ulong SetBoundsInt(int rowIdentifier, int columnIdentifier, BoundsInt newStruct)
 101031        {
 101032            return SetCell(rowIdentifier, columnIdentifier, ref m_AllBoundsIntColumns, newStruct);
 101033        }
 1034
 1035        /// <inheritdoc />
 1036        public override ulong SetHash128(int rowIdentifier, int columnIdentifier, Hash128 newStruct)
 101037        {
 101038            return SetCell(rowIdentifier, columnIdentifier, ref m_AllHash128Columns, newStruct);
 101039        }
 1040
 1041        /// <inheritdoc />
 1042        public override ulong SetGradient(int rowIdentifier, int columnIdentifier, Gradient newObject)
 101043        {
 101044            return SetCell(rowIdentifier, columnIdentifier, ref m_AllGradientColumns, newObject);
 101045        }
 1046
 1047        /// <inheritdoc />
 1048        public override ulong SetAnimationCurve(int rowIdentifier, int columnIdentifier, AnimationCurve newObject)
 101049        {
 101050            return SetCell(rowIdentifier, columnIdentifier, ref m_AllAnimationCurveColumns, newObject);
 101051        }
 1052
 1053        /// <inheritdoc />
 1054        public override ulong SetObject(int rowIdentifier, int columnIdentifier, Object newObject)
 101055        {
 101056            return SetCell(rowIdentifier, columnIdentifier, ref m_AllObjectRefColumns, newObject);
 101057        }
 1058
 1059        /// <inheritdoc />
 1060        public override void SetTypeNameForColumn(int columnIdentifier, string assemblyQualifiedName)
 01061        {
 01062            ref ColumnEntry entry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 1063
 01064            if (entry.ColumnType == Serializable.SerializableTypes.Object)
 01065            {
 01066                m_AllObjectRefTypeNames[entry.ColumnDenseIndex] = assemblyQualifiedName;
 01067            }
 01068            else if (entry.ColumnType == Serializable.SerializableTypes.EnumInt)
 01069            {
 01070                m_AllEnumIntTypeNames[entry.ColumnDenseIndex] = assemblyQualifiedName;
 01071            }
 1072            else
 01073            {
 01074                throw new NotSupportedException(
 1075                    "Type name overloads are only supported for types inheriting from UnityEngine.Object or from System.
 1076            }
 01077        }
 1078
 1079        /// <inheritdoc />
 1080        public override string GetTypeNameForColumn(int columnIdentifier)
 01081        {
 01082            ref ColumnEntry entry = ref m_ColumnIdentifierToDenseIndexMap[columnIdentifier];
 01083            int denseIndex = entry.ColumnDenseIndex;
 1084
 01085            if (entry.ColumnType == Serializable.SerializableTypes.Object)
 01086            {
 01087                return m_AllObjectRefTypeNames[entry.ColumnDenseIndex];
 1088            }
 1089
 01090            if (entry.ColumnType == Serializable.SerializableTypes.EnumInt)
 01091            {
 01092                return m_AllEnumIntTypeNames[entry.ColumnDenseIndex];
 1093            }
 1094
 01095            throw new NotSupportedException(
 1096                "Type name overloads are only supported for types inheriting from UnityEngine.Object or from System.Enum
 01097        }
 1098
 1099        // Get
 1100        /// <inheritdoc />
 1101        public override string GetString(int rowIdentifier, int columnIdentifier)
 101102        {
 101103            return GetCell(rowIdentifier, columnIdentifier, ref m_AllStringColumns);
 101104        }
 1105
 1106        /// <inheritdoc />
 1107        public override bool GetBool(int rowIdentifier, int columnIdentifier)
 101108        {
 101109            return GetCell(rowIdentifier, columnIdentifier, ref m_AllBoolColumns);
 101110        }
 1111
 1112        /// <inheritdoc />
 1113        public override char GetChar(int rowIdentifier, int columnIdentifier)
 101114        {
 101115            return GetCell(rowIdentifier, columnIdentifier, ref m_AllCharColumns);
 101116        }
 1117
 1118        /// <inheritdoc />
 1119        public override int GetEnumInt(int rowIdentifier, int columnIdentifier)
 01120        {
 01121            return GetCell(rowIdentifier, columnIdentifier, ref m_AllEnumIntColumns);
 01122        }
 1123
 1124        /// <inheritdoc />
 1125        public override sbyte GetSByte(int rowIdentifier, int columnIdentifier)
 101126        {
 101127            return GetCell(rowIdentifier, columnIdentifier, ref m_AllSByteColumns);
 101128        }
 1129
 1130        /// <inheritdoc />
 1131        public override byte GetByte(int rowIdentifier, int columnIdentifier)
 101132        {
 101133            return GetCell(rowIdentifier, columnIdentifier, ref m_AllByteColumns);
 101134        }
 1135
 1136        /// <inheritdoc />
 1137        public override short GetShort(int rowIdentifier, int columnIdentifier)
 101138        {
 101139            return GetCell(rowIdentifier, columnIdentifier, ref m_AllShortColumns);
 101140        }
 1141
 1142        /// <inheritdoc />
 1143        public override ushort GetUShort(int rowIdentifier, int columnIdentifier)
 101144        {
 101145            return GetCell(rowIdentifier, columnIdentifier, ref m_AllUShortColumns);
 101146        }
 1147
 1148        /// <inheritdoc />
 1149        public override int GetInt(int rowIdentifier, int columnIdentifier)
 101150        {
 101151            return GetCell(rowIdentifier, columnIdentifier, ref m_AllIntColumns);
 101152        }
 1153
 1154        /// <inheritdoc />
 1155        public override uint GetUInt(int rowIdentifier, int columnIdentifier)
 101156        {
 101157            return GetCell(rowIdentifier, columnIdentifier, ref m_AllUIntColumns);
 101158        }
 1159
 1160        /// <inheritdoc />
 1161        public override long GetLong(int rowIdentifier, int columnIdentifier)
 101162        {
 101163            return GetCell(rowIdentifier, columnIdentifier, ref m_AllLongColumns);
 101164        }
 1165
 1166        /// <inheritdoc />
 1167        public override ulong GetULong(int rowIdentifier, int columnIdentifier)
 101168        {
 101169            return GetCell(rowIdentifier, columnIdentifier, ref m_AllULongColumns);
 101170        }
 1171
 1172        /// <inheritdoc />
 1173        public override float GetFloat(int rowIdentifier, int columnIdentifier)
 101174        {
 101175            return GetCell(rowIdentifier, columnIdentifier, ref m_AllFloatColumns);
 101176        }
 1177
 1178        /// <inheritdoc />
 1179        public override double GetDouble(int rowIdentifier, int columnIdentifier)
 101180        {
 101181            return GetCell(rowIdentifier, columnIdentifier, ref m_AllDoubleColumns);
 101182        }
 1183
 1184        /// <inheritdoc />
 1185        public override Vector2 GetVector2(int rowIdentifier, int columnIdentifier)
 101186        {
 101187            return GetCell(rowIdentifier, columnIdentifier, ref m_AllVector2Columns);
 101188        }
 1189
 1190        /// <inheritdoc />
 1191        public override Vector3 GetVector3(int rowIdentifier, int columnIdentifier)
 101192        {
 101193            return GetCell(rowIdentifier, columnIdentifier, ref m_AllVector3Columns);
 101194        }
 1195
 1196        /// <inheritdoc />
 1197        public override Vector4 GetVector4(int rowIdentifier, int columnIdentifier)
 101198        {
 101199            return GetCell(rowIdentifier, columnIdentifier, ref m_AllVector4Columns);
 101200        }
 1201
 1202        /// <inheritdoc />
 1203        public override Vector2Int GetVector2Int(int rowIdentifier, int columnIdentifier)
 101204        {
 101205            return GetCell(rowIdentifier, columnIdentifier, ref m_AllVector2IntColumns);
 101206        }
 1207
 1208        /// <inheritdoc />
 1209        public override Vector3Int GetVector3Int(int rowIdentifier, int columnIdentifier)
 101210        {
 101211            return GetCell(rowIdentifier, columnIdentifier, ref m_AllVector3IntColumns);
 101212        }
 1213
 1214        /// <inheritdoc />
 1215        public override Quaternion GetQuaternion(int rowIdentifier, int columnIdentifier)
 101216        {
 101217            return GetCell(rowIdentifier, columnIdentifier, ref m_AllQuaternionColumns);
 101218        }
 1219
 1220        /// <inheritdoc />
 1221        public override Rect GetRect(int rowIdentifier, int columnIdentifier)
 101222        {
 101223        &