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
12 namespace System.Data.SqlTypes
15 /// Represents an integer value that is either 1 or 0
16 /// to be stored in or retrieved from a database.
18 public struct SqlBoolean : INullable, IComparable
25 public static readonly SqlBoolean False = new SqlBoolean (false);
26 public static readonly SqlBoolean Null;
27 public static readonly SqlBoolean One = new SqlBoolean (1);
28 public static readonly SqlBoolean True = new SqlBoolean (true);
29 public static readonly SqlBoolean Zero = new SqlBoolean (0);
35 public SqlBoolean (bool value)
37 this.value = (byte) (value ? 1 : 0);
40 public SqlBoolean (int value)
42 this.value = (byte) (value != 0 ? 1 : 0);
45 #endregion // Constructors
49 public byte ByteValue {
55 if (this.IsNull) return false;
56 else return (value == 0);
61 get { return (bool) (this == SqlBoolean.Null); }
66 if (this.IsNull) return false;
67 else return (value != 0);
74 throw new SqlNullValueException( "The property is set to null.");
80 #endregion // Properties
82 public static SqlBoolean And (SqlBoolean x, SqlBoolean y)
88 public int CompareTo (object value)
90 throw new NotImplementedException ();
94 public override bool Equals(object value)
96 throw new NotImplementedException ();
99 public static SqlBoolean Equals(SqlBoolean x, SqlBoolean y)
104 public override int GetHashCode()
109 public static SqlBoolean NotEquals(SqlBoolean x, SqlBoolean y)
114 public static SqlBoolean OnesComplement(SqlBoolean x)
119 public static SqlBoolean Or(SqlBoolean x, SqlBoolean y)
124 public static SqlBoolean Parse(string s)
126 return new SqlBoolean (Boolean.Parse (s));
129 public SqlByte ToSqlByte()
131 return new SqlByte (value);
134 // **************************************************
135 // Conversion from SqlBoolean to other SqlTypes
136 // **************************************************
138 public SqlDecimal ToSqlDecimal()
140 return ((SqlDecimal)this);
143 public SqlDouble ToSqlDouble()
145 return ((SqlDouble)this);
148 public SqlInt16 ToSqlInt16()
150 return ((SqlInt16)this);
153 public SqlInt32 ToSqlInt32()
155 return ((SqlInt32)this);
158 public SqlInt64 ToSqlInt64()
160 return ((SqlInt64)this);
163 public SqlMoney ToSqlMoney()
165 return ((SqlMoney)this);
168 public SqlSingle ToSqlSingle()
170 return ((SqlSingle)this);
174 public SqlString ToSqlString()
176 throw new NotImplementedException ();
180 public override string ToString()
182 throw new NotImplementedException ();
185 // Bitwise exclusive-OR (XOR)
186 public static SqlBoolean Xor(SqlBoolean x, SqlBoolean y)
191 // **************************************************
193 // **************************************************
196 public static SqlBoolean operator & (SqlBoolean x, SqlBoolean y)
198 return new SqlBoolean (x.Value & y.Value);
202 public static SqlBoolean operator | (SqlBoolean x, SqlBoolean y)
204 return new SqlBoolean (x.Value | y.Value);
208 // Compares two instances for equality
209 public static SqlBoolean operator == (SqlBoolean x, SqlBoolean y)
211 return new SqlBoolean (x.Value == y.Value);
214 // Bitwize exclusive-OR (XOR)
215 public static SqlBoolean operator ^ (SqlBoolean x, SqlBoolean y)
217 return new SqlBoolean (x.Value ^ y.Value);
220 // test Value of SqlBoolean to determine it is false.
221 public static bool operator false (SqlBoolean x)
227 public static SqlBoolean operator != (SqlBoolean x, SqlBoolean y)
229 return new SqlBoolean (x.Value != y.Value);
233 public static SqlBoolean operator ! (SqlBoolean x)
235 return new SqlBoolean (!x.Value);
239 public static SqlBoolean operator ~ (SqlBoolean x)
241 return new SqlBoolean (~x.ByteValue);
244 // test to see if value is true
245 public static bool operator true (SqlBoolean x)
250 // ****************************************
252 // ****************************************
255 // SqlBoolean to Boolean
256 public static explicit operator bool (SqlBoolean x)
262 // SqlByte to SqlBoolean
263 public static explicit operator SqlBoolean (SqlByte x)
266 return SqlBoolean.Null;
268 return new SqlBoolean ((int)x.Value);
271 // SqlDecimal to SqlBoolean
272 public static explicit operator SqlBoolean (SqlDecimal x)
275 return SqlBoolean.Null;
277 return new SqlBoolean ((int)x.Value);
280 // SqlDouble to SqlBoolean
281 public static explicit operator SqlBoolean (SqlDouble x)
284 return SqlBoolean.Null;
286 return new SqlBoolean ((int)x.Value);
289 // SqlInt16 to SqlBoolean
290 public static explicit operator SqlBoolean (SqlInt16 x)
293 return SqlBoolean.Null;
295 return new SqlBoolean ((int)x.Value);
298 // SqlInt32 to SqlBoolean
299 public static explicit operator SqlBoolean (SqlInt32 x)
302 return SqlBoolean.Null;
304 return new SqlBoolean (x.Value);
307 // SqlInt64 to SqlBoolean
308 public static explicit operator SqlBoolean (SqlInt64 x)
311 return SqlBoolean.Null;
313 return new SqlBoolean ((int)x.Value);
316 // SqlMoney to SqlBoolean
317 public static explicit operator SqlBoolean (SqlMoney x)
320 return SqlBoolean.Null;
322 return new SqlBoolean ((int)x.Value);
325 // SqlSingle to SqlBoolean
326 public static explicit operator SqlBoolean (SqlSingle x)
329 return SqlBoolean.Null;
331 return new SqlBoolean ((int)x.Value);
334 // SqlString to SqlBoolean
336 public static explicit operator SqlBoolean (SqlString x)
338 throw new NotImplementedException ();
341 // Boolean to SqlBoolean
342 public static implicit operator SqlBoolean (bool x)
344 return new SqlBoolean (x);