2 // System.Data.SqlTypes.SqlMoney
5 // Tim Coleman <tim@timcoleman.com>
7 // (C) Copyright 2002 Tim Coleman
11 using System.Globalization;
13 namespace System.Data.SqlTypes
15 public struct SqlMoney : INullable, IComparable
21 public static readonly SqlMoney MaxValue = new SqlMoney (922337203685475.5807);
22 public static readonly SqlMoney MinValue = new SqlMoney (-922337203685477.5808);
23 public static readonly SqlMoney Null;
24 public static readonly SqlMoney Zero = new SqlMoney (0);
30 public SqlMoney (decimal value)
35 public SqlMoney (double value)
37 this.value = (decimal)value;
40 public SqlMoney (int value)
42 this.value = (decimal)value;
45 public SqlMoney (long value)
47 this.value = (decimal)value;
56 get { return (bool) (this == Null); }
59 public decimal Value {
62 throw new SqlNullValueException ();
72 public static SqlMoney Add (SqlMoney x, SqlMoney y)
77 public int CompareTo (object value)
81 else if (!(value is SqlMoney))
82 throw new ArgumentException (Locale.GetText ("Value is not a System.Data.SqlTypes.SqlMoney"));
83 else if (((SqlMoney)value).IsNull)
86 return this.value.CompareTo (((SqlMoney)value).Value);
89 public static SqlMoney Divide (SqlMoney x, SqlMoney y)
94 public override bool Equals (object value)
96 if (!(value is SqlMoney))
99 return (bool) (this == (SqlMoney)value);
102 public static SqlBoolean Equals (SqlMoney x, SqlMoney y)
108 public override int GetHashCode ()
113 public static SqlBoolean GreaterThan (SqlMoney x, SqlMoney y)
118 public static SqlBoolean GreaterThanOrEqual (SqlMoney x, SqlMoney y)
123 public static SqlBoolean LessThan (SqlMoney x, SqlMoney y)
128 public static SqlBoolean LessThanOrEqual (SqlMoney x, SqlMoney y)
133 public static SqlMoney Multiply (SqlMoney x, SqlMoney y)
138 public static SqlBoolean NotEquals (SqlMoney x, SqlMoney y)
144 public static SqlMoney Parse (string s)
146 throw new NotImplementedException ();
149 public static SqlMoney Subtract (SqlMoney x, SqlMoney y)
154 public decimal ToDecimal ()
159 public double ToDouble ()
161 return (double)value;
164 public int ToInt32 ()
169 public long ToInt64 ()
174 public SqlBoolean ToSqlBoolean ()
176 return ((SqlBoolean)this);
179 public SqlByte ToSqlByte ()
181 return ((SqlByte)this);
184 public SqlDecimal ToSqlDecimal ()
186 return ((SqlDecimal)this);
189 public SqlDouble ToSqlDouble ()
191 return ((SqlDouble)this);
194 public SqlInt16 ToSqlInt16 ()
196 return ((SqlInt16)this);
199 public SqlInt32 ToSqlInt32 ()
201 return ((SqlInt32)this);
204 public SqlInt64 ToSqlInt64 ()
206 return ((SqlInt64)this);
209 public SqlSingle ToSqlSingle ()
211 return ((SqlSingle)this);
214 public SqlString ToSqlString ()
216 return ((SqlString)this);
219 public override string ToString ()
224 return value.ToString ();
227 public static SqlMoney operator + (SqlMoney x, SqlMoney y)
229 return new SqlMoney (x.Value + y.Value);
232 public static SqlMoney operator / (SqlMoney x, SqlMoney y)
234 return new SqlMoney (x.Value / y.Value);
237 public static SqlBoolean operator == (SqlMoney x, SqlMoney y)
239 if (x.IsNull || y.IsNull)
240 return SqlBoolean.Null;
242 return new SqlBoolean (x.Value == y.Value);
245 public static SqlBoolean operator > (SqlMoney x, SqlMoney y)
247 if (x.IsNull || y.IsNull)
248 return SqlBoolean.Null;
250 return new SqlBoolean (x.Value > y.Value);
253 public static SqlBoolean operator >= (SqlMoney x, SqlMoney y)
255 if (x.IsNull || y.IsNull)
256 return SqlBoolean.Null;
258 return new SqlBoolean (x.Value >= y.Value);
261 public static SqlBoolean operator != (SqlMoney x, SqlMoney y)
263 if (x.IsNull || y.IsNull)
264 return SqlBoolean.Null;
266 return new SqlBoolean (!(x.Value == y.Value));
269 public static SqlBoolean operator < (SqlMoney x, SqlMoney y)
271 if (x.IsNull || y.IsNull)
272 return SqlBoolean.Null;
274 return new SqlBoolean (x.Value < y.Value);
277 public static SqlBoolean operator <= (SqlMoney x, SqlMoney y)
279 if (x.IsNull || y.IsNull) return SqlBoolean.Null;
280 return new SqlBoolean (x.Value <= y.Value);
283 public static SqlMoney operator * (SqlMoney x, SqlMoney y)
285 return new SqlMoney (x.Value * y.Value);
288 public static SqlMoney operator - (SqlMoney x, SqlMoney y)
290 return new SqlMoney (x.Value - y.Value);
293 public static SqlMoney operator - (SqlMoney n)
295 return new SqlMoney (-(n.Value));
298 public static explicit operator SqlMoney (SqlBoolean x)
303 return new SqlMoney ((decimal)x.ByteValue);
306 public static explicit operator SqlMoney (SqlDecimal x)
311 return new SqlMoney (x.Value);
314 public static explicit operator SqlMoney (SqlDouble x)
319 return new SqlMoney ((decimal)x.Value);
322 public static explicit operator decimal (SqlMoney x)
327 public static explicit operator SqlMoney (SqlSingle x)
332 return new SqlMoney ((decimal)x.Value);
336 public static explicit operator SqlMoney (SqlString x)
338 throw new NotImplementedException ();
341 public static implicit operator SqlMoney (decimal x)
343 return new SqlMoney (x);
346 public static implicit operator SqlMoney (SqlByte x)
351 return new SqlMoney ((decimal)x.Value);
354 public static implicit operator SqlMoney (SqlInt16 x)
359 return new SqlMoney ((decimal)x.Value);
362 public static implicit operator SqlMoney (SqlInt32 x)
367 return new SqlMoney ((decimal)x.Value);
370 public static implicit operator SqlMoney (SqlInt64 x)
375 return new SqlMoney ((decimal)x.Value);