2002-08-25 Rodrigo Moya <rodrigo@ximian.com>
[mono.git] / mcs / class / System.Data / System.Data.OleDb / libgda.cs
1 //
2 // System.Data.OleDb.libgda
3 //
4 // Authors:
5 //   Rodrigo Moya (rodrigo@ximian.com)
6 //   Tim Coleman (tim@timcoleman.com)
7 //
8 // Copyright (C) Rodrigo Moya, 2002
9 // Copyright (C) Tim Coleman, 2002
10 //
11
12 using System.Data;
13 using System.Data.Common;
14 using System.Runtime.InteropServices;
15
16 namespace System.Data.OleDb
17 {
18         internal enum GdaCommandOptions {
19                 IgnoreErrors = 1,
20                 StopOnErrors = 1 << 1,
21                 BadOption = 1 << 2,
22         };
23
24         internal enum GdaCommandType {
25                 Sql = 0,
26                 Xml = 1,
27                 Procedure = 2,
28                 Table = 3,
29                 Schema = 4,
30                 Invalid = 5
31         };
32
33         internal enum GdaTransactionIsolation {
34                 Unknown,
35                 ReadCommitted,
36                 ReadUncommitted,
37                 RepeatableRead,
38                 Serializable
39         };
40         
41         internal enum GdaValueType {
42                 Null = 0,
43                 Bigint = 1,
44                 Binary = 2,
45                 Boolean = 3,
46                 Date = 4,
47                 Double = 5,
48                 GeometricPoint = 6,
49                 Integer = 7,
50                 List = 8,
51                 Numeric = 9,
52                 Single = 10,
53                 Smallint = 11,
54                 String = 12,
55                 Time = 13,
56                 Timestamp = 14,
57                 Tinyint = 15,
58                 Type = 16,
59                 Unknown = 17
60         };
61
62         [StructLayout(LayoutKind.Sequential)]
63         internal class GdaDate
64         {
65                 public short year;
66                 public ushort month;
67                 public ushort day;
68         }
69
70         [StructLayout(LayoutKind.Sequential)]
71         internal class GdaTime
72         {
73                 public ushort hour;
74                 public ushort minute;
75                 public ushort second;
76                 public long timezone;
77         }
78         
79         [StructLayout(LayoutKind.Sequential)]
80         internal class GdaTimestamp
81         {
82                 public short year;
83                 public ushort month;
84                 public ushort day;
85                 public ushort hour;
86                 public ushort minute;
87                 public ushort second;
88                 public ulong fraction;
89                 public long timezone;
90         }
91         
92         [StructLayout(LayoutKind.Sequential)]
93         internal class GdaList
94         {
95                 public IntPtr data;
96                 public IntPtr next;
97                 public IntPtr prev;
98         }
99         
100         sealed internal class libgda
101         {
102                 private static IntPtr gdaClient = IntPtr.Zero;
103
104                 public static IntPtr GdaClient
105                 {
106                         get {
107                                 if (gdaClient == IntPtr.Zero)
108                                         gdaClient = gda_client_new ();
109
110                                 return gdaClient;
111                         }
112                 }
113
114                 [DllImport("gobject-2.0",
115                            EntryPoint="g_object_unref")]
116                 public static extern void FreeObject (IntPtr obj);
117
118                 [DllImport("gda-2")]
119                 public static extern void gda_init (string app_id, string version, int nargs, string[] args);
120
121                 [DllImport("gda-2")]
122                 public static extern GdaValueType gda_value_get_type (IntPtr value);
123
124                 [DllImport("gda-2")]
125                 public static extern long gda_value_get_bigint (IntPtr value);
126                 
127                 [DllImport("gda-2")]
128                 public static extern bool gda_value_get_boolean (IntPtr value);
129
130                 [DllImport("gda-2")]
131                 public static extern IntPtr gda_value_get_date (IntPtr value);
132                 
133                 [DllImport("gda-2")]
134                 public static extern double gda_value_get_double (IntPtr value);
135
136                 [DllImport("gda-2")]
137                 public static extern int gda_value_get_integer (IntPtr value);
138                 
139                 [DllImport("gda-2")]
140                 public static extern float gda_value_get_single (IntPtr value);
141                 
142                 [DllImport("gda-2")]
143                 public static extern int gda_value_get_smallint (IntPtr value);
144
145                 [DllImport("gda-2")]
146                 public static extern string gda_value_get_string (IntPtr value);
147
148                 [DllImport("gda-2")]
149                 public static extern IntPtr gda_value_get_time (IntPtr value);
150                 
151                 [DllImport("gda-2")]
152                 public static extern IntPtr gda_value_get_timestamp (IntPtr value);
153                 
154                 [DllImport("gda-2")]
155                 public static extern byte gda_value_get_tinyint (IntPtr value);
156
157                 [DllImport("gda-2")]
158                 public static extern bool gda_value_is_null (IntPtr value);
159                 
160                 [DllImport("gda-2")]
161                 public static extern string gda_value_stringify (IntPtr value);
162                 
163                 [DllImport("gda-2")]
164                 public static extern IntPtr gda_parameter_list_new ();
165
166                 [DllImport("gda-2")]
167                 public static extern string gda_type_to_string (GdaValueType type);
168                 
169                 [DllImport("gda-2")]
170                 public static extern int gda_data_model_get_n_rows (IntPtr model);
171
172                 [DllImport("gda-2")]
173                 public static extern int gda_data_model_get_n_columns (IntPtr model);
174
175                 [DllImport("gda-2")]
176                 public static extern IntPtr gda_data_model_get_value_at (IntPtr model, int col, int row);
177
178                 [DllImport("gda-2")]
179                 public static extern string gda_data_model_get_column_title (IntPtr model, int col);
180
181                 [DllImport("gda-2")]
182                 public static extern IntPtr gda_data_model_describe_column (IntPtr model, int col);
183
184                 [DllImport("gda-2")]
185                 public static extern int gda_data_model_get_column_position (IntPtr model, string name);
186                 
187                 [DllImport("gda-2")]
188                 public static extern void gda_field_attributes_free (IntPtr fa);
189
190                 [DllImport("gda-2")]
191                 public static extern string gda_field_attributes_get_name (IntPtr fa);
192
193                 [DllImport("gda-2")]
194                 public static extern GdaValueType gda_field_attributes_get_gdatype (IntPtr fa);
195                 
196                 [DllImport("gda-2")]
197                 public static extern IntPtr gda_client_new ();
198
199                 [DllImport("gda-2")]
200                 public static extern IntPtr gda_client_open_connection (IntPtr client, string dsn, string username, string password);
201
202                 [DllImport("gda-2")]
203                 public static extern bool gda_connection_is_open (IntPtr cnc);
204                 
205                 [DllImport("gda-2")]
206                 public static extern bool gda_connection_close (IntPtr cnc);
207
208                 [DllImport("gda-2")]
209                 public static extern string gda_connection_get_server_version (IntPtr cnc);
210                 
211                 [DllImport("gda-2")]
212                 public static extern string gda_connection_get_database (IntPtr cnc);
213
214                 [DllImport("gda-2")]
215                 public static extern string gda_connection_get_dsn (IntPtr cnc);
216
217                 [DllImport("gda-2")]
218                 public static extern string gda_connection_get_cnc_string (IntPtr cnc);
219
220                 [DllImport("gda-2")]
221                 public static extern string gda_connection_get_provider (IntPtr cnc);
222
223                 [DllImport("gda-2")]
224                 public static extern string gda_connection_get_username (IntPtr cnc);
225
226                 [DllImport("gda-2")]
227                 public static extern string gda_connection_get_password (IntPtr cnc);
228
229                 [DllImport("gda-2")]
230                 public static extern bool gda_connection_change_database (IntPtr cnc, string name);
231                 
232                 [DllImport("gda-2")]
233                 public static extern IntPtr gda_transaction_new (string name);
234
235                 [DllImport("gda-2")]
236                 public static extern IntPtr gda_transaction_get_name (IntPtr xaction);
237
238                 [DllImport("gda-2")]
239                 public static extern IntPtr gda_transaction_set_name (IntPtr xaction, string name);
240
241                 [DllImport("gda-2")]
242                 public static extern GdaTransactionIsolation gda_transaction_get_isolation_level (IntPtr xaction);
243
244                 [DllImport("gda-2")]
245                 public static extern void gda_transaction_set_isolation_level (IntPtr xaction,
246                                                                                GdaTransactionIsolation level);
247                 
248                 [DllImport("gda-2")]
249                 public static extern bool gda_connection_begin_transaction (IntPtr cnc, IntPtr xaction);
250
251                 [DllImport("gda-2")]
252                 public static extern bool gda_connection_commit_transaction (IntPtr cnc, IntPtr xaction);
253
254                 [DllImport("gda-2")]
255                 public static extern bool gda_connection_rollback_transaction (IntPtr cnc, IntPtr xaction);
256
257                 [DllImport("gda-2")]
258                 public static extern IntPtr gda_connection_execute_command (IntPtr cnc, IntPtr cmd, IntPtr parameterList);
259                 
260                 [DllImport("gda-2")]
261                 public static extern int gda_connection_execute_non_query (IntPtr cnc, IntPtr command, IntPtr parameterList);
262
263                 [DllImport("gda-2")]
264                 public static extern IntPtr gda_connection_execute_single_command (IntPtr cnc, IntPtr command, IntPtr parameterList);
265
266                 [DllImport("gda-2")]
267                 public static extern IntPtr gda_connection_get_errors (IntPtr cnc);
268
269                 [DllImport("gda-2")]
270                 public static extern IntPtr gda_command_new (string text, GdaCommandType type, GdaCommandOptions options);
271
272                 [DllImport("gda-2")]
273                 public static extern void gda_command_set_text (IntPtr cmd, string text);
274
275                 [DllImport("gda-2")]
276                 public static extern void gda_command_set_command_type (IntPtr cmd, GdaCommandType type);
277
278                 [DllImport("gda-2")]
279                 public static extern string gda_error_get_description (IntPtr error);
280
281                 [DllImport("gda-2")]
282                 public static extern long gda_error_get_number (IntPtr error);
283
284                 [DllImport("gda-2")]
285                 public static extern string gda_error_get_source (IntPtr error);
286                 
287                 [DllImport("gda-2")]
288                 public static extern string gda_error_get_sqlstate (IntPtr error);
289                 
290         }
291 }