rubyfb 0.5.2-x86-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. data/CHANGELOG +6 -0
  2. data/LICENSE +411 -0
  3. data/Manifest +73 -0
  4. data/README +460 -0
  5. data/Rakefile +20 -0
  6. data/examples/example01.rb +65 -0
  7. data/ext/AddUser.c +464 -0
  8. data/ext/AddUser.h +37 -0
  9. data/ext/Backup.c +783 -0
  10. data/ext/Backup.h +37 -0
  11. data/ext/Blob.c +421 -0
  12. data/ext/Blob.h +65 -0
  13. data/ext/Common.c +54 -0
  14. data/ext/Common.h +37 -0
  15. data/ext/Connection.c +863 -0
  16. data/ext/Connection.h +50 -0
  17. data/ext/DataArea.c +274 -0
  18. data/ext/DataArea.h +38 -0
  19. data/ext/Database.c +449 -0
  20. data/ext/Database.h +48 -0
  21. data/ext/FireRuby.c +240 -0
  22. data/ext/FireRuby.h +50 -0
  23. data/ext/FireRubyException.c +268 -0
  24. data/ext/FireRubyException.h +51 -0
  25. data/ext/Generator.c +689 -0
  26. data/ext/Generator.h +53 -0
  27. data/ext/RemoveUser.c +212 -0
  28. data/ext/RemoveUser.h +37 -0
  29. data/ext/Restore.c +855 -0
  30. data/ext/Restore.h +37 -0
  31. data/ext/ResultSet.c +809 -0
  32. data/ext/ResultSet.h +60 -0
  33. data/ext/Row.c +965 -0
  34. data/ext/Row.h +55 -0
  35. data/ext/ServiceManager.c +316 -0
  36. data/ext/ServiceManager.h +48 -0
  37. data/ext/Services.c +124 -0
  38. data/ext/Services.h +42 -0
  39. data/ext/Statement.c +785 -0
  40. data/ext/Statement.h +62 -0
  41. data/ext/Transaction.c +684 -0
  42. data/ext/Transaction.h +50 -0
  43. data/ext/TypeMap.c +1182 -0
  44. data/ext/TypeMap.h +51 -0
  45. data/ext/extconf.rb +28 -0
  46. data/ext/mkmf.bat +1 -0
  47. data/lib/SQLType.rb +224 -0
  48. data/lib/active_record/connection_adapters/rubyfb_adapter.rb +805 -0
  49. data/lib/mkdoc +1 -0
  50. data/lib/rubyfb.rb +2 -0
  51. data/lib/rubyfb_lib.so +0 -0
  52. data/lib/src.rb +1800 -0
  53. data/rubyfb.gemspec +31 -0
  54. data/test/AddRemoveUserTest.rb +56 -0
  55. data/test/BackupRestoreTest.rb +99 -0
  56. data/test/BlobTest.rb +57 -0
  57. data/test/CharacterSetTest.rb +63 -0
  58. data/test/ConnectionTest.rb +111 -0
  59. data/test/DDLTest.rb +54 -0
  60. data/test/DatabaseTest.rb +83 -0
  61. data/test/GeneratorTest.rb +50 -0
  62. data/test/KeyTest.rb +140 -0
  63. data/test/ResultSetTest.rb +162 -0
  64. data/test/RoleTest.rb +73 -0
  65. data/test/RowCountTest.rb +65 -0
  66. data/test/RowTest.rb +203 -0
  67. data/test/SQLTest.rb +182 -0
  68. data/test/SQLTypeTest.rb +101 -0
  69. data/test/ServiceManagerTest.rb +29 -0
  70. data/test/StatementTest.rb +135 -0
  71. data/test/TestSetup.rb +11 -0
  72. data/test/TransactionTest.rb +112 -0
  73. data/test/TypeTest.rb +92 -0
  74. data/test/UnitTest.rb +65 -0
  75. metadata +149 -0
data/ext/FireRuby.c ADDED
@@ -0,0 +1,240 @@
1
+ /*------------------------------------------------------------------------------
2
+ * FireRuby.c
3
+ *----------------------------------------------------------------------------*/
4
+ /**
5
+ * Copyright � Peter Wood, 2005
6
+ *
7
+ * The contents of this file are subject to the Mozilla Public License Version
8
+ * 1.1 (the "License"); you may not use this file except in compliance with the
9
+ * License. You may obtain a copy of the License at
10
+ *
11
+ * http://www.mozilla.org/MPL/
12
+ *
13
+ * Software distributed under the License is distributed on an "AS IS" basis,
14
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
15
+ * the specificlanguage governing rights and limitations under the License.
16
+ *
17
+ * The Original Code is the FireRuby extension for the Ruby language.
18
+ *
19
+ * The Initial Developer of the Original Code is Peter Wood. All Rights
20
+ * Reserved.
21
+ *
22
+ * @author Peter Wood
23
+ * @version 1.0
24
+ */
25
+
26
+ /* Includes. */
27
+ #include "FireRuby.h"
28
+ #include <string.h>
29
+ #include "AddUser.h"
30
+ #include "Blob.h"
31
+ #include "Backup.h"
32
+ #include "Database.h"
33
+ #include "Connection.h"
34
+ #include "FireRubyException.h"
35
+ #include "Generator.h"
36
+ #include "RemoveUser.h"
37
+ #include "ResultSet.h"
38
+ #include "ServiceManager.h"
39
+ #include "Statement.h"
40
+ #include "Transaction.h"
41
+ #include "Restore.h"
42
+ #include "Row.h"
43
+
44
+
45
+ /**
46
+ * This function provides an encapsulation of extracting a setting from the
47
+ * global FireRuby settings hash.
48
+ *
49
+ * @param key A string containing the name of the key to be retrieved.
50
+ *
51
+ */
52
+ VALUE getFireRubySetting(const char *key)
53
+ {
54
+ VALUE settings = rb_gv_get("$FireRubySettings");
55
+
56
+ return(rb_hash_aref(settings, toSymbol(key)));
57
+ }
58
+
59
+
60
+ /**
61
+ * This function provides a convenience mechanism to obtain the class name for
62
+ * an object, useful in debugging.
63
+ *
64
+ * @param object A reference to the objec to get the class name for.
65
+ * @param name A string that will be populated with the class name.
66
+ *
67
+ */
68
+ void getClassName(VALUE object, char *name)
69
+ {
70
+ VALUE klass = rb_funcall(object, rb_intern("class"), 0),
71
+ string = rb_funcall(klass, rb_intern("name"), 0);
72
+
73
+ strcpy(name, STR2CSTR(string));
74
+ }
75
+
76
+
77
+ /**
78
+ * This method takes a string and generates a Symbol object from it.
79
+ *
80
+ * @param name A string containing the text to be made into a Symbol.
81
+ *
82
+ * @return A Symbol object for the string passed in.
83
+ *
84
+ */
85
+ VALUE toSymbol(const char *name)
86
+ {
87
+ return(rb_funcall(rb_str_new2(name), rb_intern("intern"), 0));
88
+ }
89
+
90
+
91
+ /**
92
+ * This function attempts to deduce the type for a SQL field from the XSQLVAR
93
+ * structure that is used to describe it.
94
+ *
95
+ * @param column A pointer to the XSQLVAR structure for the column to work
96
+ * the type out for.
97
+ *
98
+ * @return A symbol giving the base type for the column.
99
+ *
100
+ */
101
+ VALUE getColumnType(const XSQLVAR *column)
102
+ {
103
+ VALUE type = Qnil;
104
+
105
+ switch((column->sqltype & ~1))
106
+ {
107
+ case SQL_BLOB:
108
+ type = toSymbol("BLOB");
109
+ break;
110
+
111
+ case SQL_TYPE_DATE:
112
+ type = toSymbol("DATE");
113
+ break;
114
+
115
+ case SQL_DOUBLE:
116
+ type = toSymbol("DOUBLE");
117
+ break;
118
+
119
+ case SQL_FLOAT:
120
+ type = toSymbol("FLOAT");
121
+ break;
122
+
123
+ case SQL_INT64:
124
+ if(column->sqlsubtype != 0)
125
+ {
126
+ if(column->sqlsubtype == 1)
127
+ {
128
+ type = toSymbol("NUMERIC");
129
+ }
130
+ else if(column->sqlsubtype == 2)
131
+ {
132
+ type = toSymbol("DECIMAL");
133
+ }
134
+ }
135
+ else
136
+ {
137
+ type = toSymbol("BIGINT");
138
+ }
139
+ break;
140
+
141
+ case SQL_LONG:
142
+ if(column->sqlsubtype != 0)
143
+ {
144
+ if(column->sqlsubtype == 1)
145
+ {
146
+ type = toSymbol("NUMERIC");
147
+ }
148
+ else if(column->sqlsubtype == 2)
149
+ {
150
+ type = toSymbol("DECIMAL");
151
+ }
152
+ }
153
+ else
154
+ {
155
+ type = toSymbol("INTEGER");
156
+ }
157
+ break;
158
+
159
+ case SQL_SHORT:
160
+ if(column->sqlsubtype != 0)
161
+ {
162
+ if(column->sqlsubtype == 1)
163
+ {
164
+ type = toSymbol("NUMERIC");
165
+ }
166
+ else if(column->sqlsubtype == 2)
167
+ {
168
+ type = toSymbol("DECIMAL");
169
+ }
170
+ }
171
+ else
172
+ {
173
+ type = toSymbol("SMALLINT");
174
+ }
175
+ break;
176
+
177
+ case SQL_TEXT:
178
+ type = toSymbol("CHAR");
179
+ break;
180
+
181
+ case SQL_TYPE_TIME:
182
+ type = toSymbol("TIME");
183
+ break;
184
+
185
+ case SQL_TIMESTAMP:
186
+ type = toSymbol("TIMESTAMP");
187
+ break;
188
+
189
+ case SQL_VARYING:
190
+ type = toSymbol("VARCHAR");
191
+ break;
192
+
193
+ default:
194
+ type = toSymbol("UNKNOWN");
195
+ }
196
+
197
+ return(type);
198
+ }
199
+
200
+
201
+ /**
202
+ * This function is required by the Ruby interpreter to load and initialize
203
+ * the extension details. The function creates a module called 'FireRuby'
204
+ * and then creates the various extension classes within this module.
205
+ *
206
+ */
207
+ void Init_rubyfb_lib(void)
208
+ {
209
+ VALUE module = rb_define_module("FireRuby"),
210
+ array = rb_ary_new(),
211
+ hash = rb_hash_new();
212
+
213
+ /* Initialise the configuration and make it available. */
214
+ rb_ary_push(array, INT2FIX(MAJOR_VERSION_NO));
215
+ rb_ary_push(array, INT2FIX(MINOR_VERSION_NO));
216
+ rb_ary_push(array, INT2FIX(BUILD_NO));
217
+ rb_hash_aset(hash, toSymbol("ALIAS_KEYS"), Qtrue);
218
+ rb_hash_aset(hash, toSymbol("DATE_AS_DATE"), Qtrue);
219
+ rb_gv_set("$FireRubyVersion", array);
220
+ rb_gv_set("$FireRubySettings", hash);
221
+
222
+ /* Require needed libraries. */
223
+ rb_require("date");
224
+
225
+ /* Initialise the library classes. */
226
+ Init_Database(module);
227
+ Init_Connection(module);
228
+ Init_Transaction(module);
229
+ Init_Statement(module);
230
+ Init_ResultSet(module);
231
+ Init_Generator(module);
232
+ Init_FireRubyException(module);
233
+ Init_Blob(module);
234
+ Init_Row(module);
235
+ Init_ServiceManager(module);
236
+ Init_Backup(module);
237
+ Init_AddUser(module);
238
+ Init_RemoveUser(module);
239
+ Init_Restore(module);
240
+ }
data/ext/FireRuby.h ADDED
@@ -0,0 +1,50 @@
1
+ /*------------------------------------------------------------------------------
2
+ * FireRuby.h
3
+ *----------------------------------------------------------------------------*/
4
+ /**
5
+ * Copyright � Peter Wood, 2005
6
+ *
7
+ * The contents of this file are subject to the Mozilla Public License Version
8
+ * 1.1 (the "License"); you may not use this file except in compliance with the
9
+ * License. You may obtain a copy of the License at
10
+ *
11
+ * http://www.mozilla.org/MPL/
12
+ *
13
+ * Software distributed under the License is distributed on an "AS IS" basis,
14
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
15
+ * the specificlanguage governing rights and limitations under the License.
16
+ *
17
+ * The Original Code is the FireRuby extension for the Ruby language.
18
+ *
19
+ * The Initial Developer of the Original Code is Peter Wood. All Rights
20
+ * Reserved.
21
+ *
22
+ * @author Peter Wood
23
+ * @version 1.0
24
+ */
25
+ #ifndef FIRERUBY_FIRE_RUBY_H
26
+ #define FIRERUBY_FIRE_RUBY_H
27
+
28
+ /* Includes. */
29
+ #ifndef RUBY_H_INCLUDED
30
+ #include "ruby.h"
31
+ #define RUBY_H_INCLUDED
32
+ #endif
33
+
34
+ #ifndef IBASE_H_INCLUDED
35
+ #include "ibase.h"
36
+ #define IBASE_H_INCLUDED
37
+ #endif
38
+
39
+ /* Definitions. */
40
+ #define MAJOR_VERSION_NO 0
41
+ #define MINOR_VERSION_NO 4
42
+ #define BUILD_NO 3
43
+
44
+ /* Function definitions. */
45
+ VALUE getFireRubySetting(const char *);
46
+ void getClassName(VALUE, char *);
47
+ VALUE toSymbol(const char *);
48
+ VALUE getColumnType(const XSQLVAR *);
49
+
50
+ #endif /* FIRERUBY_FIRE_RUBY_H */
@@ -0,0 +1,268 @@
1
+ /*------------------------------------------------------------------------------
2
+ * FireRubyException.c
3
+ *----------------------------------------------------------------------------*/
4
+ /**
5
+ * Copyright � Peter Wood, 2005
6
+ *
7
+ * The contents of this file are subject to the Mozilla Public License Version
8
+ * 1.1 (the "License"); you may not use this file except in compliance with the
9
+ * License. You may obtain a copy of the License at
10
+ *
11
+ * http://www.mozilla.org/MPL/
12
+ *
13
+ * Software distributed under the License is distributed on an "AS IS" basis,
14
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
15
+ * the specificlanguage governing rights and limitations under the License.
16
+ *
17
+ * The Original Code is the FireRuby extension for the Ruby language.
18
+ *
19
+ * The Initial Developer of the Original Code is Peter Wood. All Rights
20
+ * Reserved.
21
+ *
22
+ * @author Peter Wood
23
+ * @version 1.0
24
+ */
25
+
26
+ /* Includes. */
27
+ #include "FireRubyException.h"
28
+ #include "time.h"
29
+
30
+ /* Function prototypes. */
31
+ static VALUE allocateFireRubyException(VALUE);
32
+ static VALUE initializeFireRubyException(VALUE, VALUE);
33
+ static VALUE getFireRubyExceptionSQLCode(VALUE);
34
+ static VALUE getFireRubyExceptionDBCode(VALUE);
35
+ static VALUE getFireRubyExceptionMessage(VALUE);
36
+ VALUE decodeError(ISC_STATUS *, const char *, VALUE);
37
+
38
+ /* Globals. */
39
+ VALUE cFireRubyException;
40
+
41
+
42
+ /**
43
+ * This function integrates with the Ruby language to allow for the allocation
44
+ * of new FireRubyException objects.
45
+ *
46
+ * @param klass A reference to the FireRubyException Class object.
47
+ *
48
+ * @return An instance of the FireRubyException class.
49
+ *
50
+ */
51
+ static VALUE allocateFireRubyException(VALUE klass)
52
+ {
53
+ VALUE instance;
54
+ ExceptionHandle *exception = ALLOC(ExceptionHandle);
55
+
56
+ if(exception != NULL)
57
+ {
58
+ exception->when = (long)time(NULL);
59
+ instance = Data_Wrap_Struct(klass, NULL, firerubyExceptionFree,
60
+ exception);
61
+ }
62
+ else
63
+ {
64
+ rb_raise(rb_eNoMemError,
65
+ "Memory allocation failure creating a FireRubyException object.");
66
+ }
67
+
68
+ return(instance);
69
+ }
70
+
71
+
72
+ /**
73
+ * This function provides the initialize method for the FireRubyException
74
+ * class.
75
+ *
76
+ * @param self A reference to the exception object being initialized.
77
+ * @param message A string containing an error message for the exception.
78
+ *
79
+ * @return A reference to the initialized exception object.
80
+ *
81
+ */
82
+ static VALUE initializeFireRubyException(VALUE self, VALUE message)
83
+ {
84
+ /* Check the input type. */
85
+ if(TYPE(message) != T_STRING)
86
+ {
87
+ rb_raise(rb_eException,
88
+ "Invalid message parameter specified for exception.");
89
+ }
90
+
91
+ rb_iv_set(self, "@message", message);
92
+ rb_iv_set(self, "@sql_code", 0);
93
+ rb_iv_set(self, "@db_code", 0);
94
+
95
+ return(self);
96
+ }
97
+
98
+
99
+ /**
100
+ * This function provides the accessor for the SQL code attribute of the
101
+ * FireRubyException class.
102
+ *
103
+ * @param self A reference to the exception to fetch the code from.
104
+ *
105
+ * @return A reference to the requested code value.
106
+ *
107
+ */
108
+ static VALUE getFireRubyExceptionSQLCode(VALUE self)
109
+ {
110
+ return(rb_iv_get(self, "@sql_code"));
111
+ }
112
+
113
+
114
+ /**
115
+ * This function provides the accessor for the database code attribute of the
116
+ * FireRubyException class.
117
+ *
118
+ * @param self A reference to the exception to fetch the code from.
119
+ *
120
+ * @return A reference to the requested code value.
121
+ *
122
+ */
123
+ static VALUE getFireRubyExceptionDBCode(VALUE self)
124
+ {
125
+ return(rb_iv_get(self, "@db_code"));
126
+ }
127
+
128
+
129
+ /**
130
+ * This function provides the message method for the FireRubyException class.
131
+ *
132
+ * @param self A reference to the exception object to fetch the message from.
133
+ *
134
+ * @return A reference to the message for the exception.
135
+ *
136
+ */
137
+ static VALUE getFireRubyExceptionMessage(VALUE self)
138
+ {
139
+ return(rb_iv_get(self, "@message"));
140
+ }
141
+
142
+
143
+ /**
144
+ * This function decodes the contents of a Firebird ISC_STATUS array into a
145
+ * String object.
146
+ *
147
+ * @param status A pointer to the status array to be decoded.
148
+ * @param prefix An initial message that may be added to the exception as
149
+ * part of the decoding. Ignored if it is NULL or has zero
150
+ * length.
151
+ *
152
+ * @return A reference to the full decode error message string.
153
+ *
154
+ */
155
+ VALUE decodeException(ISC_STATUS *status, const char *prefix)
156
+ {
157
+ VALUE message = rb_str_new2(""),
158
+ eol = rb_str_new2("\n");
159
+ char text[512];
160
+ int sqlCode = isc_sqlcode(status),
161
+ dbCode = 0;
162
+ ISC_STATUS **ptr = &status;
163
+
164
+ /* Add the prefix message if it exists. */
165
+ if(prefix != NULL && strlen(prefix) > 0)
166
+ {
167
+ rb_str_concat(message, rb_str_new2(prefix));
168
+ rb_str_concat(message, eol);
169
+ }
170
+
171
+ if(status != NULL)
172
+ {
173
+ /* Decode the status array. */
174
+ dbCode = status[1];
175
+ while(fb_interpret(text, 512, ptr) != 0)
176
+ {
177
+ rb_str_concat(message, rb_str_new2(text));
178
+ rb_str_concat(message, eol);
179
+ memset(text, 0, 512);
180
+ }
181
+
182
+ isc_sql_interprete(sqlCode, text, 512);
183
+ if(strlen(text) > 0)
184
+ {
185
+ rb_str_concat(message, rb_str_new2(text));
186
+ }
187
+
188
+ sprintf(text, "\nSQL Code = %d\n", sqlCode);
189
+ rb_str_concat(message, rb_str_new2(text));
190
+ sprintf(text, "Firebird Code = %d\n", dbCode);
191
+ rb_str_concat(message, rb_str_new2(text));
192
+ }
193
+
194
+ return(message);
195
+ }
196
+
197
+
198
+ /**
199
+ * This function provides a means to programmatically create a new instance of
200
+ * the FireRubyException class.
201
+ *
202
+ * @param message A string containing the error message for the exception.
203
+ *
204
+ * @return A reference to a newly created FireRubyException object.
205
+ *
206
+ */
207
+ VALUE rb_fireruby_exception_new(const char *message)
208
+ {
209
+ VALUE exception = allocateFireRubyException(cFireRubyException);
210
+
211
+ initializeFireRubyException(exception, rb_str_new2(message));
212
+
213
+ return(exception);
214
+ }
215
+
216
+
217
+ /**
218
+ * This function raises a new FireRuby exception.
219
+ *
220
+ * @param status A pointer to the Firebird status vector containing the error
221
+ * details.
222
+ * @param message A string containing a message to be prefixed to the error
223
+ * text generated by the decoding.
224
+ *
225
+ */
226
+ void rb_fireruby_raise(ISC_STATUS *status, const char *message)
227
+ {
228
+ VALUE text = decodeException(status, message);
229
+
230
+ rb_raise(cFireRubyException, STR2CSTR(text));
231
+ }
232
+
233
+
234
+ /**
235
+ * This function integrates with the Ruby garbage collector to insure that the
236
+ * resources associated with a FireRubyException object are completely released
237
+ * when an object of this type is collected.
238
+ *
239
+ * @param exception A pointer to the ExceptionHandle structure associated
240
+ * with a FireRubyException object that is being collected.
241
+ *
242
+ */
243
+ void firerubyExceptionFree(void *exception)
244
+ {
245
+ if(exception != NULL)
246
+ {
247
+ free((ExceptionHandle *)exception);
248
+ }
249
+ }
250
+
251
+
252
+ /**
253
+ * This function creates the FireRubyException class within the Ruby environment
254
+ * under the module specified as a parameter.
255
+ *
256
+ * @param module The module to create the class under.
257
+ *
258
+ */
259
+ void Init_FireRubyException(VALUE module)
260
+ {
261
+ cFireRubyException = rb_define_class_under(module, "FireRubyException",
262
+ rb_eStandardError);
263
+ rb_define_alloc_func(cFireRubyException, allocateFireRubyException);
264
+ rb_define_method(cFireRubyException, "initialize", initializeFireRubyException, 1);
265
+ rb_define_method(cFireRubyException, "sql_code", getFireRubyExceptionSQLCode, 0);
266
+ rb_define_method(cFireRubyException, "db_code", getFireRubyExceptionDBCode, 0);
267
+ rb_define_method(cFireRubyException, "message", getFireRubyExceptionMessage, 0);
268
+ }
@@ -0,0 +1,51 @@
1
+ /*------------------------------------------------------------------------------
2
+ * FireRubyException.h
3
+ *----------------------------------------------------------------------------*/
4
+ /**
5
+ * Copyright � Peter Wood, 2005
6
+ *
7
+ * The contents of this file are subject to the Mozilla Public License Version
8
+ * 1.1 (the "License"); you may not use this file except in compliance with the
9
+ * License. You may obtain a copy of the License at
10
+ *
11
+ * http://www.mozilla.org/MPL/
12
+ *
13
+ * Software distributed under the License is distributed on an "AS IS" basis,
14
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
15
+ * the specificlanguage governing rights and limitations under the License.
16
+ *
17
+ * The Original Code is the FireRuby extension for the Ruby language.
18
+ *
19
+ * The Initial Developer of the Original Code is Peter Wood. All Rights
20
+ * Reserved.
21
+ *
22
+ * @author Peter Wood
23
+ * @version 1.0
24
+ */
25
+ #ifndef FIRERUBY_FIRE_RUBY_EXCEPTION_H
26
+ #define FIRERUBY_FIRE_RUBY_EXCEPTION_H
27
+
28
+ /* Includes. */
29
+ #ifndef RUBY_H_INCLUDED
30
+ #include "ruby.h"
31
+ #define RUBY_H_INCLUDED
32
+ #endif
33
+
34
+ #ifndef IBASE_H_INCLUDED
35
+ #include "ibase.h"
36
+ #define IBASE_H_INCLUDED
37
+ #endif
38
+
39
+ /* Type definitions. */
40
+ typedef struct
41
+ {
42
+ long when;
43
+ } ExceptionHandle;
44
+
45
+ /* Function prototypes. */
46
+ void Init_FireRubyException(VALUE);
47
+ VALUE rb_fireruby_exception_new(const char *);
48
+ void rb_fireruby_raise(ISC_STATUS *, const char *);
49
+ void firerubyExceptionFree(void *);
50
+
51
+ #endif /* FIRERUBY_FIRE_RUBY_EXCEPTION_H */