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()); }
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 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); } }
public void SetBytePointer(ushort address) => BytePointer.FromInt(address);
public void SetBytePointer(Address address) => BytePointer.FromInt(address.Value);
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); }
public BytePointerVariable BytePointer(string name, BytePointer optionalInitialValue = null) { return((BytePointerVariable)DeclareHelper(name, new BytePointerVariable(), optionalInitialValue)); }