Esempio n. 1
0
 /// <summary>Get the value at index</summary>
 /// <param name="bitIndex">The index</param>
 /// <returns>Value at the index</returns>
 protected override bool GetBitAt_Internal(uint bitIndex)
 => BitArrayUtilities.Get256(
     bitIndex,
     (ulong)m_SerializedProperty.FindPropertyRelative("data1").longValue,
     (ulong)m_SerializedProperty.FindPropertyRelative("data2").longValue,
     (ulong)m_SerializedProperty.FindPropertyRelative("data3").longValue,
     (ulong)m_SerializedProperty.FindPropertyRelative("data4").longValue);
Esempio n. 2
0
 /// <summary>Set the bit at given index</summary>
 /// <param name="bitIndex">The index</param>
 /// <param name="value">The value</param>
 protected override void SetBitAt_Internal(uint bitIndex, bool value)
 {
     foreach (var property in GetOrInitializeSerializedProperties())
     {
         long  versionedData1 = property.FindPropertyRelative("data1").longValue;
         long  versionedData2 = property.FindPropertyRelative("data2").longValue;
         long  versionedData3 = property.FindPropertyRelative("data3").longValue;
         long  versionedData4 = property.FindPropertyRelative("data4").longValue;
         ulong trueData1;
         ulong trueData2;
         ulong trueData3;
         ulong trueData4;
         unsafe
         {
             trueData1 = *(ulong *)(&versionedData1);
             trueData2 = *(ulong *)(&versionedData2);
             trueData3 = *(ulong *)(&versionedData3);
             trueData4 = *(ulong *)(&versionedData4);
         }
         BitArrayUtilities.Set256(bitIndex, ref trueData1, ref trueData2, ref trueData3, ref trueData4, value);
         unsafe
         {
             versionedData1 = *(long *)(&trueData1);
             versionedData2 = *(long *)(&trueData2);
             versionedData3 = *(long *)(&trueData3);
             versionedData4 = *(long *)(&trueData4);
         }
         property.FindPropertyRelative("data1").longValue = versionedData1;
         property.FindPropertyRelative("data2").longValue = versionedData2;
         property.FindPropertyRelative("data3").longValue = versionedData3;
         property.FindPropertyRelative("data4").longValue = versionedData4;
     }
     ResyncSerialization();
 }
 static bool Get256(this SerializedProperty property, uint bitIndex)
 => BitArrayUtilities.Get256(
     bitIndex,
     (ulong)property.FindPropertyRelative("data1").longValue,
     (ulong)property.FindPropertyRelative("data2").longValue,
     (ulong)property.FindPropertyRelative("data3").longValue,
     (ulong)property.FindPropertyRelative("data4").longValue);
        static void Set8(this SerializedProperty property, uint bitIndex, bool value)
        {
            byte versionedData = (byte)property.FindPropertyRelative("data").intValue;

            BitArrayUtilities.Set8(bitIndex, ref versionedData, value);
            property.FindPropertyRelative("data").intValue = versionedData;
        }
        static void Set256(this SerializedProperty property, uint bitIndex, bool value)
        {
            long  versionedData1 = property.FindPropertyRelative("data1").longValue;
            long  versionedData2 = property.FindPropertyRelative("data2").longValue;
            long  versionedData3 = property.FindPropertyRelative("data3").longValue;
            long  versionedData4 = property.FindPropertyRelative("data4").longValue;
            ulong trueData1;
            ulong trueData2;
            ulong trueData3;
            ulong trueData4;

            unsafe
            {
                trueData1 = *(ulong *)(&versionedData1);
                trueData2 = *(ulong *)(&versionedData2);
                trueData3 = *(ulong *)(&versionedData3);
                trueData4 = *(ulong *)(&versionedData4);
            }
            BitArrayUtilities.Set256(bitIndex, ref trueData1, ref trueData2, ref trueData3, ref trueData4, value);
            unsafe
            {
                versionedData1 = *(long *)(&trueData1);
                versionedData2 = *(long *)(&trueData2);
                versionedData3 = *(long *)(&trueData3);
                versionedData4 = *(long *)(&trueData4);
            }
            property.FindPropertyRelative("data1").longValue = versionedData1;
            property.FindPropertyRelative("data2").longValue = versionedData2;
            property.FindPropertyRelative("data3").longValue = versionedData3;
            property.FindPropertyRelative("data4").longValue = versionedData4;
        }
Esempio n. 6
0
        public void CompareBitArrays_SimpleValues_NotEquals()
        {
            BitArray bitArray1 = new BitArray(new[] { false, false, false, false, true, true, true, true });
            BitArray bitArray2 = new BitArray(new[] { true, false, false, false, true, true, true, true });

            bool equals = BitArrayUtilities.CompareBitArray(bitArray1, bitArray2);

            Assert.IsFalse(equals);
        }
Esempio n. 7
0
        public void ReverseBitArray_SimpleOddValues_BitArrayReversed()
        {
            BitArray bitArray = new BitArray(new [] { true, false, true, false, false, true, true });

            BitArrayUtilities.ReverseBitArray(bitArray);

            BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true });

            Assert.AreEqual(bitArray, expectedBitArray);
        }
Esempio n. 8
0
        public void MakeBitArrayDivisible_SimpleValueHighDivisorRoundUp_Calculated()
        {
            BitArray bitArray = new BitArray(new[] { true, true, false, false, true, true, true, false });

            BitArrayUtilities.MakeBitArrayDivisible(bitArray, 10, true);

            BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, true, true, false, false, false });

            Assert.AreEqual(expectedBitArray, bitArray);
        }
Esempio n. 9
0
        public void CombineTwoBitArrays_SecondArrayEmpty_Calculated()
        {
            BitArray bitArray  = new BitArray(new[] { true, true, false, false, true, false, true, false });
            BitArray bitArray2 = new BitArray(0);

            BitArray resultArray = BitArrayUtilities.CombineTwoBitArrays(bitArray, bitArray2);

            BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true, false });

            Assert.AreEqual(expectedBitArray, resultArray);
        }
Esempio n. 10
0
        public void OverwriteBitArrayAtIndex_ReplaceNothing_Calculated()
        {
            BitArray bitArray  = new BitArray(new[] { true, true, false, false, true, false, true, false });
            BitArray bitArray2 = new BitArray(0);

            BitArrayUtilities.OverwriteBitArrayAtIndex(bitArray, bitArray2, 2);

            BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true, false });

            Assert.AreEqual(expectedBitArray, bitArray);
        }
Esempio n. 11
0
        public void ReverseEndianOnBitArray_SimpleValues_ChangedEndian()
        {
            BitArray bitArray = new BitArray(new[] { true, true, false, false, true, false, true, false,
                                                     true, true, true, true, false, false, false, false });

            BitArrayUtilities.ChangeEndianOnBitArray(bitArray);

            BitArray expectedBitArray = new BitArray(new[] { false, true, false, true, false, false, true, true,
                                                             false, false, false, false, true, true, true, true });

            Assert.AreEqual(bitArray, expectedBitArray);
        }
Esempio n. 12
0
        public void TakeSubBitArrayFromEnd_SimpleValue_Calculated()
        {
            BitArray bitArray = new BitArray(new[] { true, true, false, false, true, true, true, false });

            BitArray resultArray = BitArrayUtilities.TakeSubBitArrayFromEnd(bitArray, 3);

            BitArray expectedTakenBitArray = new BitArray(new[] { false, true, true });
            BitArray expectedBitArray      = new BitArray(new [] { true, true, false, false, true });

            Assert.AreEqual(expectedBitArray, bitArray);
            Assert.AreEqual(expectedTakenBitArray, resultArray);
        }
        static void Set64(this SerializedProperty property, uint bitIndex, bool value)
        {
            long  versionedData = property.FindPropertyRelative("data").longValue;
            ulong trueData;

            unsafe
            {
                trueData = *(ulong *)(&versionedData);
            }
            BitArrayUtilities.Set64(bitIndex, ref trueData, value);
            unsafe
            {
                versionedData = *(long *)(&trueData);
            }
            property.FindPropertyRelative("data").longValue = versionedData;
        }
        static void Set32(this SerializedProperty property, uint bitIndex, bool value)
        {
            int  versionedData = property.FindPropertyRelative("data").intValue;
            uint trueData;

            unsafe
            {
                trueData = *(uint *)(&versionedData);
            }
            BitArrayUtilities.Set32(bitIndex, ref trueData, value);
            unsafe
            {
                versionedData = *(int *)(&trueData);
            }
            property.FindPropertyRelative("data").intValue = versionedData;
        }
 static bool Get32(this SerializedProperty property, uint bitIndex)
 => BitArrayUtilities.Get32(bitIndex, (uint)property.FindPropertyRelative("data").intValue);