2 // Mono.Data.TdsTypes.TdsInt32
5 // Tim Coleman (tim@timcoleman.com)
7 // (C) Copyright Tim Coleman, 2002
10 using Mono.Data.TdsClient;
12 using System.Data.SqlTypes;
13 using System.Globalization;
15 namespace Mono.Data.TdsTypes {
16 public struct TdsInt32 : INullable, IComparable
23 public static readonly TdsInt32 MaxValue = new TdsInt32 (2147483647);
24 public static readonly TdsInt32 MinValue = new TdsInt32 (-2147483648);
25 public static readonly TdsInt32 Null;
26 public static readonly TdsInt32 Zero = new TdsInt32 (0);
32 public TdsInt32(int value)
43 get { return !notNull; }
49 throw new TdsNullValueException ();
59 public static TdsInt32 Add (TdsInt32 x, TdsInt32 y)
64 public static TdsInt32 BitwiseAnd(TdsInt32 x, TdsInt32 y)
69 public static TdsInt32 BitwiseOr(TdsInt32 x, TdsInt32 y)
74 public int CompareTo(object value)
78 else if (!(value is TdsInt32))
79 throw new ArgumentException (Locale.GetText ("Value is not a System.Data.TdsTypes.TdsInt32"));
80 else if (((TdsInt32)value).IsNull)
83 return this.value.CompareTo (((TdsInt32)value).Value);
86 public static TdsInt32 Divide(TdsInt32 x, TdsInt32 y)
91 public override bool Equals(object value)
93 if (!(value is TdsInt32))
96 return (bool) (this == (TdsInt32)value);
99 public static TdsBoolean Equals(TdsInt32 x, TdsInt32 y)
104 public override int GetHashCode()
109 public static TdsBoolean GreaterThan (TdsInt32 x, TdsInt32 y)
114 public static TdsBoolean GreaterThanOrEqual (TdsInt32 x, TdsInt32 y)
119 public static TdsBoolean LessThan(TdsInt32 x, TdsInt32 y)
124 public static TdsBoolean LessThanOrEqual(TdsInt32 x, TdsInt32 y)
129 public static TdsInt32 Mod(TdsInt32 x, TdsInt32 y)
134 public static TdsInt32 Multiply(TdsInt32 x, TdsInt32 y)
139 public static TdsBoolean NotEquals(TdsInt32 x, TdsInt32 y)
144 public static TdsInt32 OnesComplement(TdsInt32 x)
149 public static TdsInt32 Parse(string s)
151 return new TdsInt32 (Int32.Parse (s));
154 public static TdsInt32 Subtract(TdsInt32 x, TdsInt32 y)
159 public TdsBoolean ToTdsBoolean()
161 return ((TdsBoolean)this);
164 public TdsByte ToTdsByte()
166 return ((TdsByte)this);
169 public TdsDecimal ToTdsDecimal()
171 return ((TdsDecimal)this);
174 public TdsDouble ToTdsDouble()
176 return ((TdsDouble)this);
179 public TdsInt16 ToTdsInt16()
181 return ((TdsInt16)this);
184 public TdsInt64 ToTdsInt64()
186 return ((TdsInt64)this);
189 public TdsMoney ToTdsMoney()
191 return ((TdsMoney)this);
194 public TdsSingle ToTdsSingle()
196 return ((TdsSingle)this);
199 public TdsString ToTdsString ()
201 return ((TdsString)this);
204 public override string ToString()
209 return value.ToString ();
212 public static TdsInt32 Xor(TdsInt32 x, TdsInt32 y)
222 public static TdsInt32 operator + (TdsInt32 x, TdsInt32 y)
224 return new TdsInt32 (x.Value + y.Value);
228 public static TdsInt32 operator & (TdsInt32 x, TdsInt32 y)
230 return new TdsInt32 (x.Value & y.Value);
234 public static TdsInt32 operator | (TdsInt32 x, TdsInt32 y)
236 return new TdsInt32 (x.Value | y.Value);
240 public static TdsInt32 operator / (TdsInt32 x, TdsInt32 y)
242 return new TdsInt32 (x.Value / y.Value);
246 public static TdsBoolean operator == (TdsInt32 x, TdsInt32 y)
248 if (x.IsNull || y.IsNull)
249 return TdsBoolean.Null;
251 return new TdsBoolean (x.Value == y.Value);
254 // Bitwise Exclusive-OR (XOR)
255 public static TdsInt32 operator ^ (TdsInt32 x, TdsInt32 y)
257 return new TdsInt32 (x.Value ^ y.Value);
261 public static TdsBoolean operator >(TdsInt32 x, TdsInt32 y)
263 if (x.IsNull || y.IsNull)
264 return TdsBoolean.Null;
266 return new TdsBoolean (x.Value > y.Value);
270 public static TdsBoolean operator >= (TdsInt32 x, TdsInt32 y)
272 if (x.IsNull || y.IsNull)
273 return TdsBoolean.Null;
275 return new TdsBoolean (x.Value >= y.Value);
278 // != Inequality Compare
279 public static TdsBoolean operator != (TdsInt32 x, TdsInt32 y)
281 if (x.IsNull || y.IsNull)
282 return TdsBoolean.Null;
284 return new TdsBoolean (x.Value != y.Value);
288 public static TdsBoolean operator < (TdsInt32 x, TdsInt32 y)
290 if (x.IsNull || y.IsNull)
291 return TdsBoolean.Null;
293 return new TdsBoolean (x.Value < y.Value);
297 public static TdsBoolean operator <= (TdsInt32 x, TdsInt32 y)
299 if (x.IsNull || y.IsNull)
300 return TdsBoolean.Null;
302 return new TdsBoolean (x.Value <= y.Value);
306 public static TdsInt32 operator % (TdsInt32 x, TdsInt32 y)
308 return new TdsInt32 (x.Value % y.Value);
311 // Compute Multiplication
312 public static TdsInt32 operator * (TdsInt32 x, TdsInt32 y)
314 return new TdsInt32 (x.Value * y.Value);
318 public static TdsInt32 operator ~ (TdsInt32 x)
320 return new TdsInt32 (~x.Value);
324 public static TdsInt32 operator - (TdsInt32 x, TdsInt32 y)
326 return new TdsInt32 (x.Value - y.Value);
330 public static TdsInt32 operator - (TdsInt32 x)
332 return new TdsInt32 (-x.Value);
336 public static explicit operator TdsInt32 (TdsBoolean x)
341 return new TdsInt32 ((int)x.ByteValue);
344 public static explicit operator TdsInt32 (TdsDecimal x)
349 return new TdsInt32 ((int)x.Value);
352 public static explicit operator TdsInt32 (TdsDouble x)
357 return new TdsInt32 ((int)x.Value);
360 public static explicit operator int (TdsInt32 x)
365 public static explicit operator TdsInt32 (TdsInt64 x)
370 return new TdsInt32 ((int)x.Value);
373 public static explicit operator TdsInt32(TdsMoney x)
378 return new TdsInt32 ((int)x.Value);
381 public static explicit operator TdsInt32(TdsSingle x)
386 return new TdsInt32 ((int)x.Value);
389 public static explicit operator TdsInt32(TdsString x)
391 return TdsInt32.Parse (x.Value);
394 public static implicit operator TdsInt32(int x)
396 return new TdsInt32 (x);
399 public static implicit operator TdsInt32(TdsByte x)
404 return new TdsInt32 ((int)x.Value);
407 public static implicit operator TdsInt32(TdsInt16 x)
412 return new TdsInt32 ((int)x.Value);