aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/General/Types/UUID.cs
blob: 9e9654d4069db904e191ba28372d478943f68659 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using libsecondlife;

namespace OpenSim.Framework.Types
{
    class UUID
    {
        public LLUUID llUUID;

        public UUID(string uuid)
        {
            llUUID = new LLUUID(uuid);
        }

        public UUID(byte[] uuid)
        {
            llUUID = new LLUUID(uuid, 0);
        }

        public UUID(byte[] uuid, int offset)
        {
            llUUID = new LLUUID(uuid, offset);
        }

        public UUID()
        {
            llUUID = LLUUID.Zero;
        }

        public UUID(ulong uuid)
        {
            llUUID = new LLUUID(uuid);
        }

        public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth)
        {
            byte[] uuid = new byte[16];

            byte[] n = BitConverter.GetBytes(first);
            n.CopyTo(uuid, 0);
            n = BitConverter.GetBytes(second);
            n.CopyTo(uuid, 4);
            n = BitConverter.GetBytes(third);
            n.CopyTo(uuid, 8);
            n = BitConverter.GetBytes(fourth);
            n.CopyTo(uuid, 12);

            llUUID = new LLUUID(uuid,0);
        }

        public override string ToString()
        {
            return llUUID.ToString();
        }

        public string ToStringHyphenated()
        {
            return llUUID.ToStringHyphenated();
        }

        public byte[] GetBytes()
        {
            return llUUID.GetBytes();
        }

        public UInt32[] GetInts()
        {
            UInt32[] ints = new UInt32[4];
            ints[0] = BitConverter.ToUInt32(llUUID.Data, 0);
            ints[1] = BitConverter.ToUInt32(llUUID.Data, 4);
            ints[2] = BitConverter.ToUInt32(llUUID.Data, 8);
            ints[3] = BitConverter.ToUInt32(llUUID.Data, 12);

            return ints;
        }

        public LLUUID GetLLUUID()
        {
            return llUUID;
        }

        public uint CRC()
        {
            return llUUID.CRC();
        }

        public override int GetHashCode()
        {
            return llUUID.GetHashCode();
        }

        public void Combine(UUID other)
        {
            llUUID.Combine(other.GetLLUUID());
        }

        public void Combine(LLUUID other)
        {
            llUUID.Combine(other);
        }

        public override bool Equals(Object other)
        {
            return llUUID.Equals(other);
        }

        public static bool operator ==(UUID a, UUID b)
        {
            return a.llUUID.Equals(b.GetLLUUID());
        }

        public static bool operator !=(UUID a, UUID b)
        {
            return !a.llUUID.Equals(b.GetLLUUID());
        }

        public static bool operator ==(UUID a, LLUUID b)
        {
            return a.Equals(b);
        }

        public static bool operator !=(UUID a, LLUUID b)
        {
            return !a.Equals(b);
        }
    }
}