2 // System.Data.SqlTypes.SqlBoolean
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Daniel Morgan (danmorg@sc.rr.com)
7 // Tim Coleman (tim@timcoleman.com)
9 // (C) Ximian, Inc. 2002
10 // (C) Copyright 2002 Tim Coleman
13 namespace System.Data.SqlTypes
16 /// Represents an integer value that is either 1 or 0
17 /// to be stored in or retrieved from a database.
19 public struct SqlBoolean : INullable, IComparable
26 public static readonly SqlBoolean False = new SqlBoolean (false);
27 public static readonly SqlBoolean Null;
28 public static readonly SqlBoolean One = new SqlBoolean (1);
29 public static readonly SqlBoolean True = new SqlBoolean (true);
30 public static readonly SqlBoolean Zero = new SqlBoolean (0);
36 public SqlBoolean (bool value)
38 this.value = (byte) (value ? 1 : 0);
41 public SqlBoolean (int value)
43 this.value = (byte) (value != 0 ? 1 : 0);
46 #endregion // Constructors
50 public byte ByteValue {
53 throw new SqlNullValueException( "The property is set to null.");
69 get { return (bool) (this == Null); }
84 throw new SqlNullValueException( "The property is set to null.");
90 #endregion // Properties
92 public static SqlBoolean And (SqlBoolean x, SqlBoolean y)
98 public int CompareTo (object value)
100 throw new NotImplementedException ();
104 public override bool Equals(object value)
106 throw new NotImplementedException ();
109 public static SqlBoolean Equals(SqlBoolean x, SqlBoolean y)
114 public override int GetHashCode()
119 public static SqlBoolean NotEquals(SqlBoolean x, SqlBoolean y)
124 public static SqlBoolean OnesComplement(SqlBoolean x)
129 public static SqlBoolean Or(SqlBoolean x, SqlBoolean y)
134 public static SqlBoolean Parse(string s)
136 return new SqlBoolean (Boolean.Parse (s));
139 public SqlByte ToSqlByte()
141 return new SqlByte (value);
144 // **************************************************
145 // Conversion from SqlBoolean to other SqlTypes
146 // **************************************************
148 public SqlDecimal ToSqlDecimal()
150 return ((SqlDecimal)this);
153 public SqlDouble ToSqlDouble()
155 return ((SqlDouble)this);
158 public SqlInt16 ToSqlInt16()
160 return ((SqlInt16)this);
163 public SqlInt32 ToSqlInt32()
165 return ((SqlInt32)this);
168 public SqlInt64 ToSqlInt64()
170 return ((SqlInt64)this);
173 public SqlMoney ToSqlMoney()
175 return ((SqlMoney)this);
178 public SqlSingle ToSqlSingle()
180 return ((SqlSingle)this);
184 public SqlString ToSqlString()
186 throw new NotImplementedException ();
190 public override string ToString()
192 throw new NotImplementedException ();
195 // Bitwise exclusive-OR (XOR)
196 public static SqlBoolean Xor(SqlBoolean x, SqlBoolean y)
201 // **************************************************
203 // **************************************************
206 public static SqlBoolean operator & (SqlBoolean x, SqlBoolean y)
208 return new SqlBoolean (x.Value & y.Value);
212 public static SqlBoolean operator | (SqlBoolean x, SqlBoolean y)
214 return new SqlBoolean (x.Value | y.Value);
218 // Compares two instances for equality
219 public static SqlBoolean operator == (SqlBoolean x, SqlBoolean y)
221 if (x.IsNull || y.IsNull)
222 return SqlBoolean.Null;
224 return new SqlBoolean (x.Value == y.Value);
227 // Bitwize exclusive-OR (XOR)
228 public static SqlBoolean operator ^ (SqlBoolean x, SqlBoolean y)
230 return new SqlBoolean (x.Value ^ y.Value);
233 // test Value of SqlBoolean to determine it is false.
234 public static bool operator false (SqlBoolean x)
240 public static SqlBoolean operator != (SqlBoolean x, SqlBoolean y)
242 if (x.IsNull || y.IsNull)
243 return SqlBoolean.Null;
245 return new SqlBoolean (x.Value != y.Value);
249 public static SqlBoolean operator ! (SqlBoolean x)
252 return SqlBoolean.Null;
254 return new SqlBoolean (!x.Value);
258 public static SqlBoolean operator ~ (SqlBoolean x)
260 return new SqlBoolean (~x.ByteValue);
263 // test to see if value is true
264 public static bool operator true (SqlBoolean x)
269 // ****************************************
271 // ****************************************
274 // SqlBoolean to Boolean
275 public static explicit operator bool (SqlBoolean x)
281 // SqlByte to SqlBoolean
282 public static explicit operator SqlBoolean (SqlByte x)
287 return new SqlBoolean ((int)x.Value);
290 // SqlDecimal to SqlBoolean
291 public static explicit operator SqlBoolean (SqlDecimal x)
296 return new SqlBoolean ((int)x.Value);
299 // SqlDouble to SqlBoolean
300 public static explicit operator SqlBoolean (SqlDouble x)
305 return new SqlBoolean ((int)x.Value);
308 // SqlInt16 to SqlBoolean
309 public static explicit operator SqlBoolean (SqlInt16 x)
314 return new SqlBoolean ((int)x.Value);
317 // SqlInt32 to SqlBoolean
318 public static explicit operator SqlBoolean (SqlInt32 x)
323 return new SqlBoolean (x.Value);
326 // SqlInt64 to SqlBoolean
327 public static explicit operator SqlBoolean (SqlInt64 x)
332 return new SqlBoolean ((int)x.Value);
335 // SqlMoney to SqlBoolean
336 public static explicit operator SqlBoolean (SqlMoney x)
341 return new SqlBoolean ((int)x.Value);
344 // SqlSingle to SqlBoolean
345 public static explicit operator SqlBoolean (SqlSingle x)
350 return new SqlBoolean ((int)x.Value);
353 // SqlString to SqlBoolean
355 public static explicit operator SqlBoolean (SqlString x)
357 throw new NotImplementedException ();
360 // Boolean to SqlBoolean
361 public static implicit operator SqlBoolean (bool x)
363 return new SqlBoolean (x);