public unsafe void EqualityTest1()
        {
            byte *sample   = stackalloc byte[4];
            int   checksum = 0;

            int address1 = (int)sample;

            Console.WriteLine("Original Address: {0:X}", address1);
            checksum += address1;

            IntPtr address2 = new IntPtr(sample);

            Console.WriteLine("IntPtr Address: {0:X}", address2.ToInt32());
            checksum += address2.ToInt32();

            BytePointer address3 = new BytePointer(address2);

            Console.WriteLine("BytePointer Address (from IntPtr): {0:X}", address3.ToInt32());
            checksum += address3.ToInt32();

            BytePointer address4 = new BytePointer(address1);

            Console.WriteLine("BytePointer Address (from Int32): {0:X}", address4.ToInt32());
            checksum += address4.ToInt32();

            int checksumDigest = checksum / 4;

            Assert.AreEqual(checksumDigest, address1);
            Assert.AreEqual(checksumDigest, address2.ToInt32());
            Assert.AreEqual(checksumDigest, address3.ToInt32());
            Assert.AreEqual(checksumDigest, address4.ToInt32());
        }
Esempio n. 2
0
		public unsafe void AddPointer(byte* ptr, int length)
		{
			_availableLength += length;

			var pointer = new BytePointer(ptr, length);

			_pointers.AddLast(pointer);

			if (_currentPointer == null)
				_currentPointer = _pointers.First;
		}
Esempio n. 3
0
        public unsafe void AddPointer(byte *ptr, int length)
        {
            _availableLength += length;

            var pointer = new BytePointer(ptr, length);

            _pointers.AddLast(pointer);

            if (_currentPointer == null)
            {
                _currentPointer = _pointers.First;
            }
        }
        public unsafe void AddressTest1()
        {
            byte *      sample = stackalloc byte[4];
            BytePointer a      = new BytePointer(sample);
            BytePointer b      = (a + 1);

            Console.WriteLine("Address offset: {0}", b.ToInt32() - a.ToInt32());

            Assert.AreEqual(sizeof(byte), b.ToInt32() - a.ToInt32());
            Assert.False(Object.ReferenceEquals(a, b));

            // xPlatform's typed pointers are value type.
            BytePointer c = new BytePointer(sample + 1);
            BytePointer d = (++c);

            Console.WriteLine("Address offset: {0}", d.ToInt32() - c.ToInt32());

            Assert.AreEqual(0, d.ToInt32() - c.ToInt32());
            Assert.False(Object.ReferenceEquals(c, d));
        }
        public unsafe void StackallocTest3()
        {
            const int   bufferSize = 4;
            byte *      sample     = stackalloc byte[bufferSize];
            BytePointer pointer    = new BytePointer(sample);

            byte[] results = new byte[bufferSize];

            for (int i = 0; i < bufferSize; i++)
            {
                results[i] = *(sample + i) = GenerateRandomNumber();
            }

            // Pointer conversion test
            for (int i = 0; i < bufferSize; i++)
            {
                object x = results[i];
                object y = *(byte *)(pointer + i);
                Console.WriteLine("[{0}] <Left: {1}> {2} <Right: {3}>", i, x, x.Equals(y) ? "==" : "<>", y);
                Assert.AreEqual(x, y);
            }
        }
        public unsafe void StackallocTest4()
        {
            const int   bufferSize = 4;
            byte *      sample     = stackalloc byte[bufferSize];
            BytePointer pointer    = new BytePointer(sample);

            byte[] results = new byte[bufferSize];

            // SetData method
            for (int i = 0; i < bufferSize; i++)
            {
                pointer.SetData(results[i] = GenerateRandomNumber(), i);
            }

            // GetData method
            for (int i = 0; i < bufferSize; i++)
            {
                object x = results[i];
                object y = pointer.GetData(i);
                Console.WriteLine("[{0}] <Left: {1}> {2} <Right: {3}>", i, x, x.Equals(y) ? "==" : "<>", y);
                Assert.AreEqual(x, y);
            }
        }
        public unsafe void StackallocTest5()
        {
            const int   bufferSize = 4;
            byte *      sample     = stackalloc byte[bufferSize];
            BytePointer pointer    = new BytePointer(sample);

            byte[] results = new byte[bufferSize];

            // Indexer based memory writing
            for (int i = 0; i < bufferSize; i++)
            {
                results[i] = pointer[i] = GenerateRandomNumber();
            }

            // Indexer based memory navigation
            for (int i = 0; i < bufferSize; i++)
            {
                object x = results[i];
                object y = pointer[i];
                Console.WriteLine("[{0}] <Left: {1}> {2} <Right: {3}>", i, x, x.Equals(y) ? "==" : "<>", y);
                Assert.AreEqual(x, y);
            }
        }
Esempio n. 8
0
 public void SetBytePointer(ushort address) =>
 BytePointer.FromInt(address);
Esempio n. 9
0
 public void SetBytePointer(Address address) =>
 BytePointer.FromInt(address.Value);
Esempio n. 10
0
 public virtual PointerPointer put(params byte[][] array)
 {
   this.pointerArray = new Pointer[array.Length];
   for (int index1 = 0; index1 < array.Length; ++index1)
   {
     Pointer[] pointerArray = this.pointerArray;
     int index2 = index1;
     BytePointer.__\u003Cclinit\u003E();
     BytePointer bytePointer = new BytePointer(array[index1]);
     pointerArray[index2] = (Pointer) bytePointer;
   }
   return this.put(this.pointerArray);
 }
Esempio n. 11
0
 public BytePointerVariable BytePointer(string name, BytePointer optionalInitialValue = null)
 {
     return((BytePointerVariable)DeclareHelper(name, new BytePointerVariable(), optionalInitialValue));
 }