@@ -5,21 +5,33 @@ public unsafe struct pointer
5
5
6
6
public nint Address ;
7
7
8
+ public byte this [ nint index ] => ( ( byte * ) Address ) [ index ] ;
9
+
10
+ public override string ToString ( ) => $ "0x{ Address : X} ";
11
+ public override bool Equals ( object ? obj ) => obj is null ? false : obj is pointer ? ( ( ( pointer ) obj ) . Address == Address ) : false ;
12
+ public override int GetHashCode ( ) => ( ( int ) Address ) ^ ( ( int ) ( Address >> 32 ) ) ;
13
+
8
14
#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 ) ;
15
+ public static pointer operator + ( pointer a , pointer b ) => a . Address + b . Address ;
16
+ public static pointer operator - ( pointer a , pointer b ) => a . Address - b . Address ;
11
17
public static pointer operator ++ ( pointer self ) => self . Address ++ ;
12
18
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} ";
19
+ public static pointer operator ~ ( pointer self ) => ~ self . Address ;
20
+ public static pointer operator * ( pointer a , pointer b ) => a . Address * b . Address ;
21
+ public static pointer operator / ( pointer a , pointer b ) => a . Address / b . Address ;
22
+ public static pointer operator % ( pointer a , pointer b ) => a . Address % b . Address ;
23
+ public static pointer operator & ( pointer a , pointer b ) => a . Address & b . Address ;
24
+ public static pointer operator ^ ( pointer a , pointer b ) => a . Address ^ b . Address ;
25
+ public static pointer operator | ( pointer a , pointer b ) => a . Address | b . Address ;
26
+ public static pointer operator >> ( pointer a , int shift ) => a . Address >> shift ;
27
+ public static pointer operator << ( pointer a , int shift ) => a . Address << shift ;
28
+ public static pointer operator >>> ( pointer a , int shift ) => a . Address >>> shift ;
29
+ public static bool operator < ( pointer a , pointer b ) => a . Address < b . Address ;
30
+ public static bool operator <= ( pointer a , pointer b ) => a . Address <= b . Address ;
31
+ public static bool operator > ( pointer a , pointer b ) => a . Address > b . Address ;
32
+ public static bool operator >= ( pointer a , pointer b ) => a . Address >= b . Address ;
33
+ public static bool operator == ( pointer a , pointer b ) => a . Address == b . Address ;
34
+ public static bool operator != ( pointer a , pointer b ) => a . Address != b . Address ;
23
35
#endregion
24
36
25
37
#region Implicits
0 commit comments