1 // System.Data.SqlTypes.SqlGuid
\r
4 // Konstantin Triger <kostat@mainsoft.com>
5 // Boris Kirzner <borisk@mainsoft.com>
7 // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 namespace System.Data.SqlTypes
\r
39 public struct SqlGuid : INullable, IComparable
\r
41 private Guid _value;
\r
42 private bool _isNull;
\r
43 public static readonly SqlGuid Null = new SqlGuid();
\r
46 private SqlGuid(bool isNull)
\r
49 _value = Guid.Empty;
\r
52 public SqlGuid(byte[] value)
\r
54 _value = new Guid(value);
\r
58 public SqlGuid(String s)
\r
60 _value = new Guid(s);
\r
64 public SqlGuid(Guid g)
\r
70 public SqlGuid(int a, short b, short c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k)
\r
72 _value = new Guid(a, b, c, d, e, f, g, h, i, j, k);
\r
77 public int CompareTo(Object obj)
\r
84 SqlGuid g = (SqlGuid)obj;
91 return this._value.CompareTo(g._value);
94 throw new ArgumentException("parameter obj is not SqlGuid : " + obj.GetType().Name);
106 public override int GetHashCode()
\r
108 return _value.GetHashCode();
\r
111 public override bool Equals(Object obj)
\r
118 SqlGuid g = (SqlGuid)obj;
120 if (IsNull && g.IsNull)
123 if (IsNull || g.IsNull)
126 return _value == g._value;
132 public override String ToString()
\r
138 return _value.ToString();
\r
146 throw new SqlNullValueException();
\r
151 public static SqlGuid op_Implicit(Guid x)
\r
153 return new SqlGuid(x);
\r
156 public static Guid op_Explicit(SqlGuid x)
\r
161 public byte[] ToByteArray()
\r
164 throw new SqlNullValueException();
\r
165 return _value.ToByteArray();
\r
168 public static SqlGuid Parse(String s)
\r
170 return new SqlGuid(s);
\r
173 public static SqlGuid op_Explicit(SqlString x)
\r
175 return new SqlGuid(x.Value);
\r
178 public static SqlGuid op_Explicit(SqlBinary x)
\r
180 return new SqlGuid(x.Value);
\r
183 public static SqlBoolean op_Equality(SqlGuid x, SqlGuid y)
\r
185 return Equals(x, y);
\r
188 public static SqlBoolean op_Inequality(SqlGuid x, SqlGuid y)
\r
190 return NotEquals(x, y);
\r
193 public static SqlBoolean op_LessThan(SqlGuid x, SqlGuid y)
\r
195 return LessThan(x, y);
\r
198 public static SqlBoolean op_GreaterThan(SqlGuid x, SqlGuid y)
\r
200 return GreaterThan(x, y);
\r
203 public static SqlBoolean op_LessThanOrEqual(SqlGuid x, SqlGuid y)
\r
205 return LessThanOrEqual(x, y);
\r
208 public static SqlBoolean op_GreaterThanOrEqual(SqlGuid x, SqlGuid y)
\r
210 return GreaterThanOrEqual(x, y);
\r
213 public static SqlBoolean Equals(SqlGuid x, SqlGuid y)
\r
215 if(x.IsNull || y.IsNull)
\r
216 return SqlBoolean.Null;
\r
218 return new SqlBoolean(x.Value.Equals(y.Value));
\r
221 public static SqlBoolean NotEquals(SqlGuid x, SqlGuid y)
\r
223 SqlBoolean res = Equals(x, y);
\r
225 return SqlBoolean.True;
\r
226 return SqlBoolean.False;
\r
229 public static SqlBoolean LessThan(SqlGuid x, SqlGuid y)
\r
231 if(x.IsNull || y.IsNull)
\r
232 return SqlBoolean.Null;
\r
234 int res = x.CompareTo(y);
\r
236 return SqlBoolean.True;
\r
237 return SqlBoolean.False;
\r
240 public static SqlBoolean GreaterThan(SqlGuid x, SqlGuid y)
\r
242 if(x.IsNull || y.IsNull)
\r
243 return SqlBoolean.Null;
\r
245 int res = x.CompareTo(y);
\r
247 return SqlBoolean.True;
\r
248 return SqlBoolean.False;
\r
251 public static SqlBoolean LessThanOrEqual(SqlGuid x, SqlGuid y)
\r
253 if(x.IsNull || y.IsNull)
\r
254 return SqlBoolean.Null;
\r
256 int res = x.CompareTo(y);
\r
258 return SqlBoolean.True;
\r
259 return SqlBoolean.False;
\r
262 public static SqlBoolean GreaterThanOrEqual(SqlGuid x, SqlGuid y)
\r
264 if(x.IsNull || y.IsNull)
\r
265 return SqlBoolean.Null;
\r
267 int res = x.CompareTo(y);
\r
269 return SqlBoolean.True;
\r
270 return SqlBoolean.False;
\r
273 public SqlString ToSqlString()
\r
276 return SqlString.Null;
\r
278 return new SqlString(ToString());
\r
281 public SqlBinary ToSqlBinary()
\r
284 return SqlBinary.Null;
\r
286 return new SqlBinary(ToByteArray());
\r