Skip to content

Commit 59bdd4e

Browse files
committed
Overrided operators for pointer
1 parent e888613 commit 59bdd4e

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

DotnetNativeBase/pointer.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,24 @@ public unsafe struct pointer
55

66
public nint Address;
77

8+
#region Operators
9+
public static pointer operator +(pointer a, pointer b) => new(a.Address + b.Address);
10+
public static pointer operator -(pointer a, pointer b) => new(a.Address - b.Address);
11+
public static pointer operator ++(pointer self) => self.Address++;
12+
public static pointer operator --(pointer self) => self.Address--;
13+
public static pointer operator *(pointer a, pointer b) => new(a.Address * b.Address);
14+
public static pointer operator /(pointer a, pointer b) => new(a.Address / b.Address);
15+
public static pointer operator %(pointer a, pointer b) => new(a.Address % b.Address);
16+
public static pointer operator &(pointer a, pointer b) => new(a.Address & b.Address);
17+
public static pointer operator ^(pointer a, pointer b) => new(a.Address ^ b.Address);
18+
public static pointer operator |(pointer a, pointer b) => new(a.Address | b.Address);
19+
#endregion
20+
21+
#region Object
22+
public override string ToString() => $"0x{Address:X}";
23+
#endregion
24+
25+
#region Implicits
826
public static implicit operator pointer(nint address) => new(address);
927
public static implicit operator pointer(void* pointer) => new((nint)pointer);
1028
public static implicit operator pointer(void** pointer) => new((nint)pointer);
@@ -29,6 +47,5 @@ public unsafe struct pointer
2947
public static implicit operator nuint*(pointer pointer) => (nuint*)pointer.Address;
3048

3149
public static implicit operator delegate* unmanaged<void>(pointer pointer) => (delegate* unmanaged<void>)pointer;
32-
33-
public override string ToString() => $"0x{Address:X}";
50+
#endregion
3451
}

0 commit comments

Comments
 (0)