Applied patch from: David Pickens <dsp@rci.rutgers.edu>
[mono.git] / mcs / class / System.Data.OracleClient / System.Data.OracleClient / OracleBinary.cs
1 //
2 // OracleBinary.cs 
3 //
4 // Part of the Mono class libraries at
5 // mcs/class/System.Data.OracleClient/System.Data.OracleClient
6 //
7 // Assembly: System.Data.OracleClient.dll
8 // Namespace: System.Data.OracleClient
9 //
10 // Author: Tim Coleman <tim@timcoleman.com>
11 //
12 // Copyright (C) Tim Coleman, 2003
13 //
14 // Licensed under the MIT/X11 License.
15 //
16
17 using System;
18 using System.IO;
19 using System.Data.SqlTypes;
20
21 namespace System.Data.OracleClient {
22         public struct OracleBinary : IComparable, INullable
23         {
24                 #region Fields
25
26                 public static readonly OracleBinary Null = new OracleBinary ();
27
28                 bool notNull; 
29                 byte[] value; 
30
31                 #endregion // Fields
32
33                 #region Constructors
34
35                 public OracleBinary (byte[] b)
36                 {
37                         value = b;
38                         notNull = true;
39                 }
40
41                 #endregion // Constructors
42
43                 #region Properties
44
45                 public bool IsNull {
46                         get { return !notNull; }
47                 }
48
49                 public byte this [int index] {
50                         get { 
51                                 if (IsNull)
52                                         throw new Exception ("Data is null.");
53                                 return value [index];
54                         }
55                 }
56
57                 public int Length {
58                         get {
59                                 if (IsNull)
60                                         throw new Exception ("Data is null.");
61                                 return value.Length;
62                         }
63                 }
64
65                 public byte[] Value {
66                         get {
67                                 if (IsNull)
68                                         throw new Exception ("Data is null.");
69                                 return value;
70                         }
71                 }
72
73                 #endregion // Properties
74
75                 #region Methods
76
77                 [MonoTODO]
78                 public int CompareTo (object obj)
79                 {
80                         throw new NotImplementedException ();
81                 }
82
83                 [MonoTODO]
84                 public static OracleBinary Concat (OracleBinary x, OracleBinary y)
85                 {
86                         throw new NotImplementedException ();
87                 }
88
89                 [MonoTODO]
90                 public override bool Equals (object value)
91                 {
92                         throw new NotImplementedException ();
93                 }
94
95                 public static OracleBoolean Equals (OracleBinary x, OracleBinary y)
96                 {
97                         if (x.IsNull || y.IsNull)
98                                 return OracleBoolean.Null;
99                         return new OracleBoolean (x.Value == y.Value);
100                 }
101
102                 [MonoTODO]
103                 public override int GetHashCode ()
104                 {
105                         throw new NotImplementedException ();
106                 }
107
108                 [MonoTODO]
109                 public static OracleBoolean GreaterThan (OracleBinary x, OracleBinary y)
110                 {
111                         if (x.IsNull || y.IsNull)
112                                 return OracleBoolean.Null;
113                         //return (x.Value > y.Value);
114                         throw new NotImplementedException ();
115                 }
116
117                 [MonoTODO]
118                 public static OracleBoolean GreaterThanOrEqual (OracleBinary x, OracleBinary y)
119                 {
120                         if (x.IsNull || y.IsNull)
121                                 return OracleBoolean.Null;
122                         //return (x.Value >= y.Value);
123                         throw new NotImplementedException ();
124                 }
125
126                 [MonoTODO]
127                 public static OracleBoolean LessThan (OracleBinary x, OracleBinary y)
128                 {
129                         if (x.IsNull || y.IsNull)
130                                 return OracleBoolean.Null;
131                         //return (x.Value < y.Value);
132                         throw new NotImplementedException ();
133                 }
134
135                 [MonoTODO]
136                 public static OracleBoolean LessThanOrEqual (OracleBinary x, OracleBinary y)
137                 {
138                         if (x.IsNull || y.IsNull)
139                                 return OracleBoolean.Null;
140                         //return (x.Value <= y.Value);
141                         throw new NotImplementedException ();
142                 }
143
144                 [MonoTODO]
145                 public static OracleBoolean NotEquals (OracleBinary x, OracleBinary y)
146                 {
147                         if (x.IsNull || y.IsNull)
148                                 return OracleBoolean.Null;
149                         //return (x.Value != y.Value);
150                         throw new NotImplementedException ();
151                 }
152
153                 #endregion // Methods
154
155                 #region Operators and Type Conversions
156
157                 public static OracleBinary operator + (OracleBinary x, OracleBinary y)
158                 {
159                         return Concat (x, y);
160                 }
161
162                 public static OracleBoolean operator == (OracleBinary x, OracleBinary y)
163                 {
164                         return Equals (x, y);
165                 }
166
167                 public static OracleBoolean operator > (OracleBinary x, OracleBinary y)
168                 {
169                         return GreaterThan (x, y);
170                 }
171
172                 public static OracleBoolean operator >= (OracleBinary x, OracleBinary y)
173                 {
174                         return GreaterThanOrEqual (x, y);
175                 }
176
177                 public static OracleBoolean operator != (OracleBinary x, OracleBinary y)
178                 {
179                         return NotEquals (x, y);
180                 }
181
182                 public static OracleBoolean operator < (OracleBinary x, OracleBinary y)
183                 {
184                         return LessThan (x, y);
185                 }
186
187                 public static OracleBoolean operator <= (OracleBinary x, OracleBinary y)
188                 {
189                         return LessThan (x, y);
190                 }
191
192                 public static explicit operator byte[] (OracleBinary x)
193                 {
194                         return x.Value;
195                 }
196
197                 public static implicit operator OracleBinary (byte[] b)
198                 {
199                         return new OracleBinary (b);
200                 }
201
202                 #endregion // Operators and Type Conversions
203         }
204 }