Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NamespaceDefinitionHandle.cs
Go to the documentation of this file.
3
5
6public readonly struct NamespaceDefinitionHandle : IEquatable<NamespaceDefinitionHandle>
7{
8 private readonly uint _value;
9
10 public bool IsNil => _value == 0;
11
12 internal bool IsVirtual => (_value & 0x80000000u) != 0;
13
14 internal bool HasFullName => !IsVirtual;
15
17 {
18 _value = value;
19 }
20
21 internal static NamespaceDefinitionHandle FromFullNameOffset(int stringHeapOffset)
22 {
23 return new NamespaceDefinitionHandle((uint)stringHeapOffset);
24 }
25
26 internal static NamespaceDefinitionHandle FromVirtualIndex(uint virtualIndex)
27 {
28 if (!HeapHandleType.IsValidHeapOffset(virtualIndex))
29 {
31 }
32 return new NamespaceDefinitionHandle(0x80000000u | virtualIndex);
33 }
34
35 public static implicit operator Handle(NamespaceDefinitionHandle handle)
36 {
37 return new Handle((byte)(((handle._value & 0x80000000u) >> 24) | 0x7Cu), (int)(handle._value & 0x1FFFFFFF));
38 }
39
40 public static explicit operator NamespaceDefinitionHandle(Handle handle)
41 {
42 if ((handle.VType & 0x7F) != 124)
43 {
45 }
46 return new NamespaceDefinitionHandle((uint)(((handle.VType & 0x80) << 24) | handle.Offset));
47 }
48
49 internal int GetHeapOffset()
50 {
51 return (int)(_value & 0x1FFFFFFF);
52 }
53
55 {
57 }
58
59 public override bool Equals([NotNullWhen(true)] object? obj)
60 {
62 {
63 return Equals(other);
64 }
65 return false;
66 }
67
69 {
70 return _value == other._value;
71 }
72
73 public override int GetHashCode()
74 {
75 return (int)_value;
76 }
77
79 {
80 return left.Equals(right);
81 }
82
84 {
85 return !left.Equals(right);
86 }
87}
static void TooManySubnamespaces()
Definition Throw.cs:271
static void InvalidCast()
Definition Throw.cs:12
static NamespaceDefinitionHandle FromVirtualIndex(uint virtualIndex)
static bool operator==(NamespaceDefinitionHandle left, NamespaceDefinitionHandle right)
static NamespaceDefinitionHandle FromFullNameOffset(int stringHeapOffset)
static bool operator!=(NamespaceDefinitionHandle left, NamespaceDefinitionHandle right)
override bool Equals([NotNullWhen(true)] object? obj)
static StringHandle FromOffset(int heapOffset)