rsfbclient_native/
ibase.rs

1//! Constants, structs and functions from the native fbclient
2#![allow(unused_macros)]
3
4pub use rsfbclient_core::ibase::*;
5
6//Generates the IBase trait and one or both of its implementations
7//(dynamic linking version, libloading version)
8macro_rules! parse_functions {
9    ($(
10        extern "C" {
11            pub fn $name:ident $items:tt $( -> $ret:ty )? ;
12        }
13    )*) =>
14    {
15      pub trait IBase : Send{
16        $( gen_dynlink_signature_only!( $name ~ $items ~ $($ret)? ); )*
17      }
18
19      #[cfg(feature = "linking")]
20      pub struct IBaseLinking;
21      #[cfg(feature = "linking")]
22      impl IBase for IBaseLinking {
23        $( gen_dynlink_definition!( $name ~ $items ~ $($ret)? ); )*
24      }
25
26      #[cfg(feature = "dynamic_loading")]
27      pub struct IBaseDynLoading(std::sync::Arc<libloading::Library>);
28      #[cfg(feature = "dynamic_loading")]
29      impl IBase for IBaseDynLoading {
30        $( gen_libloading_definition!( $name ~ $items ~ $($ret)? ); )*
31      }
32    }
33}
34
35#[cfg(feature = "dynamic_loading")]
36use std::ffi::OsStr;
37#[cfg(feature = "dynamic_loading")]
38impl IBaseDynLoading {
39    pub fn with_client(fbclient: &OsStr) -> Result<Self, libloading::Error> {
40        #[cfg(not(target_os = "macos"))]
41        let lib = unsafe { libloading::Library::new(fbclient)? };
42
43        #[cfg(target_os = "macos")]
44        let lib = unsafe {
45            libloading::os::unix::Library::open(Some(fbclient), libloading::os::unix::RTLD_NOW)?
46                .into()
47        };
48
49        Ok(IBaseDynLoading(std::sync::Arc::new(lib)))
50    }
51}
52
53//Generates a signature like
54//unsafe fn isc_xyz(&self)
55//-> unsafe extern "C"
56//   fn(arg1: isc_handle_type, arg2: other_isc_handle_type...) -> SOME_ISC_RETURN_TYPE;
57//
58//from the C decls
59//That is, an unsafe function returning an unsafe extern C function pointer
60macro_rules! gen_dynlink_signature_only {
61  ( $name:ident ~ ( $( $params:tt )* ) ~ $($ret:ty)? )
62  => ( unsafe fn$name(&self) -> unsafe extern "C" fn(  $($params)* ) -> $($ret)? ;)
63}
64
65//Generates a definition like
66//unsafe fn isc_xyz(&self)
67//-> unsafe extern "C" fn(arg1: isc_handle_type, arg2: other_isc_handle_type...) -> SOME_ISC_RETURN_TYPE {
68//  extern "C" {
69//    pub fn isc_xyz(arg1: isc_handle_type, arg2: other_isc_handle_type...) -> SOME_ISC_RETURN_TYPE
70//  }
71//  function_name
72//}
73//
74//from the C decls
75//That is, an unsafe function returning an unsafe extern C function pointer
76macro_rules! gen_dynlink_definition {
77  ( $name:ident ~ ( $( $params:tt )* ) ~ $($ret:ty)? )
78  => {
79   unsafe fn $name(&self) -> unsafe extern "C" fn(  $($params)* ) -> $($ret)? {
80      extern "C" {
81         pub fn $name (  $($params)* ) -> $($ret)?;
82      }
83      $name
84    }
85  }
86}
87
88//Generates a definition like
89//unsafe fn isc_xyz(&self)
90//-> unsafe extern "C" fn(arg1: isc_handle_type, arg2: other_isc_handle_type...) -> SOME_ISC_RETURN_TYPE {
91//    *self.0.get( stringify!($name).as_bytes() ).unwrap()
92//}
93//
94//from the C decls
95//where Self is struct IBaseDynLoading(std::sync::Arc<libloading::Library>);
96//That is, an unsafe function returning an unsafe extern C function pointer using
97//the libloading crate
98macro_rules! gen_libloading_definition {
99  ( $name:ident ~ ( $( $params:tt )* ) ~ $($ret:ty)? )
100  => {
101    unsafe fn $name(&self) -> unsafe extern "C" fn(  $($params)* ) -> $($ret)? {
102      *self.0.get( stringify!($name).as_bytes() ).unwrap()
103    }
104  }
105}
106
107parse_functions! {
108    extern "C" {
109        pub fn isc_attach_database(
110            arg1: *mut ISC_STATUS,
111            arg2: ::std::os::raw::c_short,
112            arg3: *const ISC_SCHAR,
113            arg4: *mut isc_db_handle,
114            arg5: ::std::os::raw::c_short,
115            arg6: *const ISC_SCHAR,
116        ) -> ISC_STATUS;
117    }
118    // extern "C" {
119    //     pub fn isc_array_gen_sdl(
120    //         arg1: *mut ISC_STATUS,
121    //         arg2: *const ISC_ARRAY_DESC,
122    //         arg3: *mut ISC_SHORT,
123    //         arg4: *mut ISC_UCHAR,
124    //         arg5: *mut ISC_SHORT,
125    //     ) -> ISC_STATUS;
126    // }
127    // extern "C" {
128    //     pub fn isc_array_get_slice(
129    //         arg1: *mut ISC_STATUS,
130    //         arg2: *mut isc_db_handle,
131    //         arg3: *mut isc_tr_handle,
132    //         arg4: *mut ISC_QUAD,
133    //         arg5: *const ISC_ARRAY_DESC,
134    //         arg6: *mut ::std::os::raw::c_void,
135    //         arg7: *mut ISC_LONG,
136    //     ) -> ISC_STATUS;
137    // }
138    // extern "C" {
139    //     pub fn isc_array_lookup_bounds(
140    //         arg1: *mut ISC_STATUS,
141    //         arg2: *mut isc_db_handle,
142    //         arg3: *mut isc_tr_handle,
143    //         arg4: *const ISC_SCHAR,
144    //         arg5: *const ISC_SCHAR,
145    //         arg6: *mut ISC_ARRAY_DESC,
146    //     ) -> ISC_STATUS;
147    // }
148    // extern "C" {
149    //     pub fn isc_array_lookup_desc(
150    //         arg1: *mut ISC_STATUS,
151    //         arg2: *mut isc_db_handle,
152    //         arg3: *mut isc_tr_handle,
153    //         arg4: *const ISC_SCHAR,
154    //         arg5: *const ISC_SCHAR,
155    //         arg6: *mut ISC_ARRAY_DESC,
156    //     ) -> ISC_STATUS;
157    // }
158    // extern "C" {
159    //     pub fn isc_array_set_desc(
160    //         arg1: *mut ISC_STATUS,
161    //         arg2: *const ISC_SCHAR,
162    //         arg3: *const ISC_SCHAR,
163    //         arg4: *const ::std::os::raw::c_short,
164    //         arg5: *const ::std::os::raw::c_short,
165    //         arg6: *const ::std::os::raw::c_short,
166    //         arg7: *mut ISC_ARRAY_DESC,
167    //     ) -> ISC_STATUS;
168    // }
169    // extern "C" {
170    //     pub fn isc_array_put_slice(
171    //         arg1: *mut ISC_STATUS,
172    //         arg2: *mut isc_db_handle,
173    //         arg3: *mut isc_tr_handle,
174    //         arg4: *mut ISC_QUAD,
175    //         arg5: *const ISC_ARRAY_DESC,
176    //         arg6: *mut ::std::os::raw::c_void,
177    //         arg7: *mut ISC_LONG,
178    //     ) -> ISC_STATUS;
179    // }
180    // extern "C" {
181    //     pub fn isc_blob_default_desc(
182    //         arg1: *mut ISC_BLOB_DESC,
183    //         arg2: *const ISC_UCHAR,
184    //         arg3: *const ISC_UCHAR,
185    //     );
186    // }
187    // extern "C" {
188    //     pub fn isc_blob_gen_bpb(
189    //         arg1: *mut ISC_STATUS,
190    //         arg2: *const ISC_BLOB_DESC,
191    //         arg3: *const ISC_BLOB_DESC,
192    //         arg4: ::std::os::raw::c_ushort,
193    //         arg5: *mut ISC_UCHAR,
194    //         arg6: *mut ::std::os::raw::c_ushort,
195    //     ) -> ISC_STATUS;
196    // }
197    // extern "C" {
198    //     pub fn isc_blob_info(
199    //         arg1: *mut ISC_STATUS,
200    //         arg2: *mut isc_blob_handle,
201    //         arg3: ::std::os::raw::c_short,
202    //         arg4: *const ISC_SCHAR,
203    //         arg5: ::std::os::raw::c_short,
204    //         arg6: *mut ISC_SCHAR,
205    //     ) -> ISC_STATUS;
206    // }
207    // extern "C" {
208    //     pub fn isc_blob_lookup_desc(
209    //         arg1: *mut ISC_STATUS,
210    //         arg2: *mut isc_db_handle,
211    //         arg3: *mut isc_tr_handle,
212    //         arg4: *const ISC_UCHAR,
213    //         arg5: *const ISC_UCHAR,
214    //         arg6: *mut ISC_BLOB_DESC,
215    //         arg7: *mut ISC_UCHAR,
216    //     ) -> ISC_STATUS;
217    // }
218    // extern "C" {
219    //     pub fn isc_blob_set_desc(
220    //         arg1: *mut ISC_STATUS,
221    //         arg2: *const ISC_UCHAR,
222    //         arg3: *const ISC_UCHAR,
223    //         arg4: ::std::os::raw::c_short,
224    //         arg5: ::std::os::raw::c_short,
225    //         arg6: ::std::os::raw::c_short,
226    //         arg7: *mut ISC_BLOB_DESC,
227    //     ) -> ISC_STATUS;
228    // }
229    // extern "C" {
230    //     pub fn isc_cancel_blob(arg1: *mut ISC_STATUS, arg2: *mut isc_blob_handle) -> ISC_STATUS;
231    // }
232    // extern "C" {
233    //     pub fn isc_cancel_events(
234    //         arg1: *mut ISC_STATUS,
235    //         arg2: *mut isc_db_handle,
236    //         arg3: *mut ISC_LONG,
237    //     ) -> ISC_STATUS;
238    // }
239    extern "C" {
240        pub fn isc_close_blob(arg1: *mut ISC_STATUS, arg2: *mut isc_blob_handle) -> ISC_STATUS;
241    }
242    extern "C" {
243        pub fn isc_commit_retaining(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle) -> ISC_STATUS;
244    }
245    extern "C" {
246        pub fn isc_commit_transaction(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle) -> ISC_STATUS;
247    }
248    extern "C" {
249        pub fn isc_create_blob(
250            arg1: *mut ISC_STATUS,
251            arg2: *mut isc_db_handle,
252            arg3: *mut isc_tr_handle,
253            arg4: *mut isc_blob_handle,
254            arg5: *mut ISC_QUAD,
255        ) -> ISC_STATUS;
256    }
257    // extern "C" {
258    //     pub fn isc_create_blob2(
259    //         arg1: *mut ISC_STATUS,
260    //         arg2: *mut isc_db_handle,
261    //         arg3: *mut isc_tr_handle,
262    //         arg4: *mut isc_blob_handle,
263    //         arg5: *mut ISC_QUAD,
264    //         arg6: ::std::os::raw::c_short,
265    //         arg7: *const ISC_SCHAR,
266    //     ) -> ISC_STATUS;
267    // }
268    extern "C" {
269        pub fn isc_create_database(
270           arg1: *mut ISC_STATUS,
271           arg2: ::std::os::raw::c_short,
272           arg3: *const ISC_SCHAR,
273           arg4: *mut isc_db_handle,
274           arg5: ::std::os::raw::c_short,
275           arg6: *const ISC_SCHAR,
276           arg7: ::std::os::raw::c_short,
277        ) -> ISC_STATUS;
278    }
279    // extern "C" {
280    //     pub fn isc_database_info(
281    //         arg1: *mut ISC_STATUS,
282    //         arg2: *mut isc_db_handle,
283    //         arg3: ::std::os::raw::c_short,
284    //         arg4: *const ISC_SCHAR,
285    //         arg5: ::std::os::raw::c_short,
286    //         arg6: *mut ISC_SCHAR,
287    //     ) -> ISC_STATUS;
288    // }
289    // extern "C" {
290    //     pub fn isc_decode_date(arg1: *const ISC_QUAD, arg2: *mut ::std::os::raw::c_void);
291    // }
292    // extern "C" {
293    //     pub fn isc_decode_sql_date(arg1: *const ISC_DATE, arg2: *mut ::std::os::raw::c_void);
294    // }
295    // extern "C" {
296    //     pub fn isc_decode_sql_time(arg1: *const ISC_TIME, arg2: *mut ::std::os::raw::c_void);
297    // }
298    // extern "C" {
299    //     pub fn isc_decode_timestamp(arg1: *const ISC_TIMESTAMP, arg2: *mut ::std::os::raw::c_void);
300    // }
301    extern "C" {
302        pub fn isc_detach_database(arg1: *mut ISC_STATUS, arg2: *mut isc_db_handle) -> ISC_STATUS;
303    }
304    extern "C" {
305        pub fn isc_drop_database(arg1: *mut ISC_STATUS, arg2: *mut isc_db_handle) -> ISC_STATUS;
306    }
307    extern "C" {
308        pub fn isc_dsql_allocate_statement(
309            arg1: *mut ISC_STATUS,
310            arg2: *mut isc_db_handle,
311            arg3: *mut isc_stmt_handle,
312        ) -> ISC_STATUS;
313    }
314    // extern "C" {
315    //     pub fn isc_dsql_alloc_statement2(
316    //         arg1: *mut ISC_STATUS,
317    //         arg2: *mut isc_db_handle,
318    //         arg3: *mut isc_stmt_handle,
319    //     ) -> ISC_STATUS;
320    // }
321    extern "C" {
322        pub fn isc_dsql_describe(
323            arg1: *mut ISC_STATUS,
324            arg2: *mut isc_stmt_handle,
325            arg3: ::std::os::raw::c_ushort,
326            arg4: *mut XSQLDA,
327        ) -> ISC_STATUS;
328    }
329    extern "C" {
330        pub fn isc_dsql_describe_bind(
331            arg1: *mut ISC_STATUS,
332            arg2: *mut isc_stmt_handle,
333            arg3: ::std::os::raw::c_ushort,
334            arg4: *mut XSQLDA,
335        ) -> ISC_STATUS;
336    }
337    // extern "C" {
338    //     pub fn isc_dsql_exec_immed2(
339    //         arg1: *mut ISC_STATUS,
340    //         arg2: *mut isc_db_handle,
341    //         arg3: *mut isc_tr_handle,
342    //         arg4: ::std::os::raw::c_ushort,
343    //         arg5: *const ISC_SCHAR,
344    //         arg6: ::std::os::raw::c_ushort,
345    //         arg7: *const XSQLDA,
346    //         arg8: *const XSQLDA,
347    //     ) -> ISC_STATUS;
348    // }
349    extern "C" {
350        pub fn isc_dsql_execute(
351            arg1: *mut ISC_STATUS,
352            arg2: *mut isc_tr_handle,
353            arg3: *mut isc_stmt_handle,
354            arg4: ::std::os::raw::c_ushort,
355            arg5: *const XSQLDA,
356        ) -> ISC_STATUS;
357    }
358    extern "C" {
359         pub fn isc_dsql_execute2(
360             arg1: *mut ISC_STATUS,
361             arg2: *mut isc_tr_handle,
362             arg3: *mut isc_stmt_handle,
363             arg4: ::std::os::raw::c_ushort,
364             arg5: *const XSQLDA,
365             arg6: *const XSQLDA,
366         ) -> ISC_STATUS;
367    }
368    extern "C" {
369        pub fn isc_dsql_execute_immediate(
370            arg1: *mut ISC_STATUS,
371            arg2: *mut isc_db_handle,
372            arg3: *mut isc_tr_handle,
373            arg4: ::std::os::raw::c_ushort,
374            arg5: *const ISC_SCHAR,
375            arg6: ::std::os::raw::c_ushort,
376            arg7: *const XSQLDA,
377        ) -> ISC_STATUS;
378    }
379    extern "C" {
380        pub fn isc_dsql_fetch(
381            arg1: *mut ISC_STATUS,
382            arg2: *mut isc_stmt_handle,
383            arg3: ::std::os::raw::c_ushort,
384            arg4: *const XSQLDA,
385        ) -> ISC_STATUS;
386    }
387    // extern "C" {
388    //     pub fn isc_dsql_finish(arg1: *mut isc_db_handle) -> ISC_STATUS;
389    // }
390    extern "C" {
391        pub fn isc_dsql_free_statement(
392            arg1: *mut ISC_STATUS,
393            arg2: *mut isc_stmt_handle,
394            arg3: ::std::os::raw::c_ushort,
395        ) -> ISC_STATUS;
396    }
397    // extern "C" {
398    //     pub fn isc_dsql_insert(
399    //         arg1: *mut ISC_STATUS,
400    //         arg2: *mut isc_stmt_handle,
401    //         arg3: ::std::os::raw::c_ushort,
402    //         arg4: *mut XSQLDA,
403    //     ) -> ISC_STATUS;
404    // }
405    extern "C" {
406        pub fn isc_dsql_prepare(
407            arg1: *mut ISC_STATUS,
408            arg2: *mut isc_tr_handle,
409            arg3: *mut isc_stmt_handle,
410            arg4: ::std::os::raw::c_ushort,
411            arg5: *const ISC_SCHAR,
412            arg6: ::std::os::raw::c_ushort,
413            arg7: *mut XSQLDA,
414        ) -> ISC_STATUS;
415    }
416    // extern "C" {
417    //     pub fn isc_dsql_set_cursor_name(
418    //         arg1: *mut ISC_STATUS,
419    //         arg2: *mut isc_stmt_handle,
420    //         arg3: *const ISC_SCHAR,
421    //         arg4: ::std::os::raw::c_ushort,
422    //     ) -> ISC_STATUS;
423    // }
424    extern "C" {
425        pub fn isc_dsql_sql_info(
426            arg1: *mut ISC_STATUS,
427            arg2: *mut isc_stmt_handle,
428            arg3: ::std::os::raw::c_short,
429            arg4: *const ISC_SCHAR,
430            arg5: ::std::os::raw::c_short,
431            arg6: *mut ISC_SCHAR,
432        ) -> ISC_STATUS;
433    }
434    // extern "C" {
435    //     pub fn isc_encode_date(arg1: *const ::std::os::raw::c_void, arg2: *mut ISC_QUAD);
436    // }
437    // extern "C" {
438    //     pub fn isc_encode_sql_date(arg1: *const ::std::os::raw::c_void, arg2: *mut ISC_DATE);
439    // }
440    // extern "C" {
441    //     pub fn isc_encode_sql_time(arg1: *const ::std::os::raw::c_void, arg2: *mut ISC_TIME);
442    // }
443    // extern "C" {
444    //     pub fn isc_encode_timestamp(arg1: *const ::std::os::raw::c_void, arg2: *mut ISC_TIMESTAMP);
445    // }
446    extern "C" {
447        pub fn isc_event_block(
448            arg1: *mut *mut ISC_UCHAR,
449            arg2: *mut *mut ISC_UCHAR,
450            arg3: ISC_USHORT,
451            ...
452        ) -> ISC_LONG;
453    }
454    // extern "C" {
455    //     pub fn isc_event_block_a(
456    //         arg1: *mut *mut ISC_SCHAR,
457    //         arg2: *mut *mut ISC_SCHAR,
458    //         arg3: ISC_USHORT,
459    //         arg4: *mut *mut ISC_SCHAR,
460    //     ) -> ISC_USHORT;
461    // }
462    // extern "C" {
463    //     pub fn isc_event_block_s(
464    //         arg1: *mut *mut ISC_SCHAR,
465    //         arg2: *mut *mut ISC_SCHAR,
466    //         arg3: ISC_USHORT,
467    //         arg4: *mut *mut ISC_SCHAR,
468    //         arg5: *mut ISC_USHORT,
469    //     );
470    // }
471    extern "C" {
472        pub fn isc_event_counts(
473            arg1: *mut ISC_STATUS,
474            arg2: ::std::os::raw::c_short,
475            arg3: *mut ISC_UCHAR,
476            arg4: *const ISC_UCHAR,
477        ) -> ::std::os::raw::c_void;
478    }
479    // extern "C" {
480    //     pub fn isc_expand_dpb(arg1: *mut *mut ISC_SCHAR, arg2: *mut ::std::os::raw::c_short, ...);
481    // }
482    // extern "C" {
483    //     pub fn isc_modify_dpb(
484    //         arg1: *mut *mut ISC_SCHAR,
485    //         arg2: *mut ::std::os::raw::c_short,
486    //         arg3: ::std::os::raw::c_ushort,
487    //         arg4: *const ISC_SCHAR,
488    //         arg5: ::std::os::raw::c_short,
489    //     ) -> ::std::os::raw::c_int;
490    // }
491    extern "C" {
492        pub fn isc_free(arg1: *mut ISC_UCHAR) -> ISC_LONG;
493    }
494    extern "C" {
495        pub fn isc_get_segment(
496            arg1: *mut ISC_STATUS,
497            arg2: *mut isc_blob_handle,
498            arg3: *mut ::std::os::raw::c_ushort,
499            arg4: ::std::os::raw::c_ushort,
500            arg5: *mut ISC_SCHAR,
501        ) -> ISC_STATUS;
502    }
503    // extern "C" {
504    //     pub fn isc_get_slice(
505    //         arg1: *mut ISC_STATUS,
506    //         arg2: *mut isc_db_handle,
507    //         arg3: *mut isc_tr_handle,
508    //         arg4: *mut ISC_QUAD,
509    //         arg5: ::std::os::raw::c_short,
510    //         arg6: *const ISC_SCHAR,
511    //         arg7: ::std::os::raw::c_short,
512    //         arg8: *const ISC_LONG,
513    //         arg9: ISC_LONG,
514    //         arg10: *mut ::std::os::raw::c_void,
515    //         arg11: *mut ISC_LONG,
516    //     ) -> ISC_STATUS;
517    // }
518    // extern "C" {
519    //     pub fn isc_interprete(arg1: *mut ISC_SCHAR, arg2: *mut *mut ISC_STATUS) -> ISC_LONG;
520    // }
521    extern "C" {
522        pub fn fb_interpret(
523            arg1: *mut ISC_SCHAR,
524            arg2: ::std::os::raw::c_uint,
525            arg3: *mut *const ISC_STATUS,
526        ) -> ISC_LONG;
527    }
528    extern "C" {
529        pub fn isc_open_blob(
530            arg1: *mut ISC_STATUS,
531            arg2: *mut isc_db_handle,
532            arg3: *mut isc_tr_handle,
533            arg4: *mut isc_blob_handle,
534            arg5: *mut ISC_QUAD,
535        ) -> ISC_STATUS;
536    }
537    // extern "C" {
538    //     pub fn isc_open_blob2(
539    //         arg1: *mut ISC_STATUS,
540    //         arg2: *mut isc_db_handle,
541    //         arg3: *mut isc_tr_handle,
542    //         arg4: *mut isc_blob_handle,
543    //         arg5: *mut ISC_QUAD,
544    //         arg6: ISC_USHORT,
545    //         arg7: *const ISC_UCHAR,
546    //     ) -> ISC_STATUS;
547    // }
548    // extern "C" {
549    //     pub fn isc_prepare_transaction2(
550    //         arg1: *mut ISC_STATUS_ARRAY,
551    //         arg2: *mut isc_tr_handle,
552    //         arg3: ISC_USHORT,
553    //         arg4: *const ISC_UCHAR,
554    //     ) -> ISC_STATUS;
555    // }
556    // extern "C" {
557    //     pub fn isc_print_sqlerror(arg1: ISC_SHORT, arg2: *const ISC_STATUS);
558    // }
559    // extern "C" {
560    //     pub fn isc_print_status(arg1: *const ISC_STATUS_ARRAY) -> ISC_STATUS;
561    // }
562    extern "C" {
563        pub fn isc_put_segment(
564            arg1: *mut ISC_STATUS,
565            arg2: *mut isc_blob_handle,
566            arg3: ::std::os::raw::c_ushort,
567            arg4: *const ISC_SCHAR,
568        ) -> ISC_STATUS;
569    }
570    // extern "C" {
571    //     pub fn isc_put_slice(
572    //         arg1: *mut ISC_STATUS,
573    //         arg2: *mut isc_db_handle,
574    //         arg3: *mut isc_tr_handle,
575    //         arg4: *mut ISC_QUAD,
576    //         arg5: ::std::os::raw::c_short,
577    //         arg6: *const ISC_SCHAR,
578    //         arg7: ::std::os::raw::c_short,
579    //         arg8: *const ISC_LONG,
580    //         arg9: ISC_LONG,
581    //         arg10: *mut ::std::os::raw::c_void,
582    //     ) -> ISC_STATUS;
583    // }
584    // extern "C" {
585    //     pub fn isc_que_events(
586    //         arg1: *mut ISC_STATUS,
587    //         arg2: *mut isc_db_handle,
588    //         arg3: *mut ISC_LONG,
589    //         arg4: ::std::os::raw::c_short,
590    //         arg5: *const ISC_UCHAR,
591    //         arg6: ISC_EVENT_CALLBACK,
592    //         arg7: *mut ::std::os::raw::c_void,
593    //     ) -> ISC_STATUS;
594    // }
595    extern "C" {
596        pub fn isc_rollback_retaining(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle) -> ISC_STATUS;
597    }
598    extern "C" {
599        pub fn isc_rollback_transaction(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle) -> ISC_STATUS;
600    }
601    extern "C" {
602        pub fn isc_start_multiple(
603            arg1: *mut ISC_STATUS,
604            arg2: *mut isc_tr_handle,
605            arg3: ::std::os::raw::c_short,
606            arg4: *mut ::std::os::raw::c_void,
607        ) -> ISC_STATUS;
608    }
609    // extern "C" {
610    //     pub fn isc_start_transaction(
611    //         arg1: *mut ISC_STATUS,
612    //         arg2: *mut isc_tr_handle,
613    //         arg3: ::std::os::raw::c_short,
614    //         ...
615    //     ) -> ISC_STATUS;
616    // }
617    // extern "C" {
618    //     pub fn fb_disconnect_transaction(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle)
619    //         -> ISC_STATUS;
620    // }
621    extern "C" {
622        pub fn isc_sqlcode(arg1: *const ISC_STATUS) -> ISC_LONG;
623    }
624    // extern "C" {
625    //     pub fn isc_sqlcode_s(arg1: *const ISC_STATUS, arg2: *mut ISC_ULONG);
626    // }
627    // extern "C" {
628    //     pub fn fb_sqlstate(arg1: *mut ::std::os::raw::c_char, arg2: *const ISC_STATUS);
629    // }
630    // extern "C" {
631    //     pub fn isc_sql_interprete(
632    //         arg1: ::std::os::raw::c_short,
633    //         arg2: *mut ISC_SCHAR,
634    //         arg3: ::std::os::raw::c_short,
635    //     );
636    // }
637    // extern "C" {
638    //     pub fn isc_transaction_info(
639    //         arg1: *mut ISC_STATUS,
640    //         arg2: *mut isc_tr_handle,
641    //         arg3: ::std::os::raw::c_short,
642    //         arg4: *const ISC_SCHAR,
643    //         arg5: ::std::os::raw::c_short,
644    //         arg6: *mut ISC_SCHAR,
645    //     ) -> ISC_STATUS;
646    // }
647    // extern "C" {
648    //     pub fn isc_transact_request(
649    //         arg1: *mut ISC_STATUS,
650    //         arg2: *mut isc_db_handle,
651    //         arg3: *mut isc_tr_handle,
652    //         arg4: ::std::os::raw::c_ushort,
653    //         arg5: *mut ISC_SCHAR,
654    //         arg6: ::std::os::raw::c_ushort,
655    //         arg7: *mut ISC_SCHAR,
656    //         arg8: ::std::os::raw::c_ushort,
657    //         arg9: *mut ISC_SCHAR,
658    //     ) -> ISC_STATUS;
659    // }
660//    extern "C" {
661//        pub fn isc_vax_integer(arg1: *const ISC_SCHAR, arg2: ::std::os::raw::c_short) -> ISC_LONG;
662//    }
663    // extern "C" {
664    //     pub fn isc_portable_integer(arg1: *const ISC_UCHAR, arg2: ::std::os::raw::c_short)
665    //         -> ISC_INT64;
666    // }
667    // extern "C" {
668    //     pub fn isc_add_user(arg1: *mut ISC_STATUS, arg2: *const USER_SEC_DATA) -> ISC_STATUS;
669    // }
670    // extern "C" {
671    //     pub fn isc_delete_user(arg1: *mut ISC_STATUS, arg2: *const USER_SEC_DATA) -> ISC_STATUS;
672    // }
673    // extern "C" {
674    //     pub fn isc_modify_user(arg1: *mut ISC_STATUS, arg2: *const USER_SEC_DATA) -> ISC_STATUS;
675    // }
676    // extern "C" {
677    //     pub fn isc_compile_request(
678    //         arg1: *mut ISC_STATUS,
679    //         arg2: *mut isc_db_handle,
680    //         arg3: *mut isc_req_handle,
681    //         arg4: ::std::os::raw::c_short,
682    //         arg5: *const ISC_SCHAR,
683    //     ) -> ISC_STATUS;
684    // }
685    // extern "C" {
686    //     pub fn isc_compile_request2(
687    //         arg1: *mut ISC_STATUS,
688    //         arg2: *mut isc_db_handle,
689    //         arg3: *mut isc_req_handle,
690    //         arg4: ::std::os::raw::c_short,
691    //         arg5: *const ISC_SCHAR,
692    //     ) -> ISC_STATUS;
693    // }
694    // extern "C" {
695    //     pub fn isc_ddl(
696    //         arg1: *mut ISC_STATUS,
697    //         arg2: *mut isc_db_handle,
698    //         arg3: *mut isc_tr_handle,
699    //         arg4: ::std::os::raw::c_short,
700    //         arg5: *const ISC_SCHAR,
701    //     ) -> ISC_STATUS;
702    // }
703    // extern "C" {
704    //     pub fn isc_prepare_transaction(arg1: *mut ISC_STATUS, arg2: *mut isc_tr_handle) -> ISC_STATUS;
705    // }
706    // extern "C" {
707    //     pub fn isc_receive(
708    //         arg1: *mut ISC_STATUS,
709    //         arg2: *mut isc_req_handle,
710    //         arg3: ::std::os::raw::c_short,
711    //         arg4: ::std::os::raw::c_short,
712    //         arg5: *mut ::std::os::raw::c_void,
713    //         arg6: ::std::os::raw::c_short,
714    //     ) -> ISC_STATUS;
715    // }
716    // extern "C" {
717    //     pub fn isc_reconnect_transaction(
718    //         arg1: *mut ISC_STATUS,
719    //         arg2: *mut isc_db_handle,
720    //         arg3: *mut isc_tr_handle,
721    //         arg4: ::std::os::raw::c_short,
722    //         arg5: *const ISC_SCHAR,
723    //     ) -> ISC_STATUS;
724    // }
725    // extern "C" {
726    //     pub fn isc_release_request(arg1: *mut ISC_STATUS, arg2: *mut isc_req_handle) -> ISC_STATUS;
727    // }
728    // extern "C" {
729    //     pub fn isc_request_info(
730    //         arg1: *mut ISC_STATUS,
731    //         arg2: *mut isc_req_handle,
732    //         arg3: ::std::os::raw::c_short,
733    //         arg4: ::std::os::raw::c_short,
734    //         arg5: *const ISC_SCHAR,
735    //         arg6: ::std::os::raw::c_short,
736    //         arg7: *mut ISC_SCHAR,
737    //     ) -> ISC_STATUS;
738    // }
739    // extern "C" {
740    //     pub fn isc_seek_blob(
741    //         arg1: *mut ISC_STATUS,
742    //         arg2: *mut isc_blob_handle,
743    //         arg3: ::std::os::raw::c_short,
744    //         arg4: ISC_LONG,
745    //         arg5: *mut ISC_LONG,
746    //     ) -> ISC_STATUS;
747    // }
748    // extern "C" {
749    //     pub fn isc_send(
750    //         arg1: *mut ISC_STATUS,
751    //         arg2: *mut isc_req_handle,
752    //         arg3: ::std::os::raw::c_short,
753    //         arg4: ::std::os::raw::c_short,
754    //         arg5: *const ::std::os::raw::c_void,
755    //         arg6: ::std::os::raw::c_short,
756    //     ) -> ISC_STATUS;
757    // }
758    // extern "C" {
759    //     pub fn isc_start_and_send(
760    //         arg1: *mut ISC_STATUS,
761    //         arg2: *mut isc_req_handle,
762    //         arg3: *mut isc_tr_handle,
763    //         arg4: ::std::os::raw::c_short,
764    //         arg5: ::std::os::raw::c_short,
765    //         arg6: *const ::std::os::raw::c_void,
766    //         arg7: ::std::os::raw::c_short,
767    //     ) -> ISC_STATUS;
768    // }
769    // extern "C" {
770    //     pub fn isc_start_request(
771    //         arg1: *mut ISC_STATUS,
772    //         arg2: *mut isc_req_handle,
773    //         arg3: *mut isc_tr_handle,
774    //         arg4: ::std::os::raw::c_short,
775    //     ) -> ISC_STATUS;
776    // }
777    // extern "C" {
778    //     pub fn isc_unwind_request(
779    //         arg1: *mut ISC_STATUS,
780    //         arg2: *mut isc_tr_handle,
781    //         arg3: ::std::os::raw::c_short,
782    //     ) -> ISC_STATUS;
783    // }
784    extern "C" {
785        pub fn isc_wait_for_event(
786            arg1: *mut ISC_STATUS,
787            arg2: *mut isc_db_handle,
788            arg3: ::std::os::raw::c_short,
789            arg4: *const ISC_UCHAR,
790            arg5: *mut ISC_UCHAR,
791        ) -> ISC_STATUS;
792    }
793    // extern "C" {
794    //     pub fn isc_close(arg1: *mut ISC_STATUS, arg2: *const ISC_SCHAR) -> ISC_STATUS;
795    // }
796    // extern "C" {
797    //     pub fn isc_declare(
798    //         arg1: *mut ISC_STATUS,
799    //         arg2: *const ISC_SCHAR,
800    //         arg3: *const ISC_SCHAR,
801    //     ) -> ISC_STATUS;
802    // }
803    // extern "C" {
804    //     pub fn isc_describe(
805    //         arg1: *mut ISC_STATUS,
806    //         arg2: *const ISC_SCHAR,
807    //         arg3: *mut XSQLDA,
808    //     ) -> ISC_STATUS;
809    // }
810    // extern "C" {
811    //     pub fn isc_describe_bind(
812    //         arg1: *mut ISC_STATUS,
813    //         arg2: *const ISC_SCHAR,
814    //         arg3: *mut XSQLDA,
815    //     ) -> ISC_STATUS;
816    // }
817    // extern "C" {
818    //     pub fn isc_execute(
819    //         arg1: *mut ISC_STATUS,
820    //         arg2: *mut isc_tr_handle,
821    //         arg3: *const ISC_SCHAR,
822    //         arg4: *mut XSQLDA,
823    //     ) -> ISC_STATUS;
824    // }
825    // extern "C" {
826    //     pub fn isc_execute_immediate(
827    //         arg1: *mut ISC_STATUS,
828    //         arg2: *mut isc_db_handle,
829    //         arg3: *mut isc_tr_handle,
830    //         arg4: *mut ::std::os::raw::c_short,
831    //         arg5: *const ISC_SCHAR,
832    //     ) -> ISC_STATUS;
833    // }
834    // extern "C" {
835    //     pub fn isc_fetch(
836    //         arg1: *mut ISC_STATUS,
837    //         arg2: *const ISC_SCHAR,
838    //         arg3: *mut XSQLDA,
839    //     ) -> ISC_STATUS;
840    // }
841    // extern "C" {
842    //     pub fn isc_open(
843    //         arg1: *mut ISC_STATUS,
844    //         arg2: *mut isc_tr_handle,
845    //         arg3: *const ISC_SCHAR,
846    //         arg4: *mut XSQLDA,
847    //     ) -> ISC_STATUS;
848    // }
849    // extern "C" {
850    //     pub fn isc_prepare(
851    //         arg1: *mut ISC_STATUS,
852    //         arg2: *mut isc_db_handle,
853    //         arg3: *mut isc_tr_handle,
854    //         arg4: *const ISC_SCHAR,
855    //         arg5: *const ::std::os::raw::c_short,
856    //         arg6: *const ISC_SCHAR,
857    //         arg7: *mut XSQLDA,
858    //     ) -> ISC_STATUS;
859    // }
860    // extern "C" {
861    //     pub fn isc_dsql_execute_m(
862    //         arg1: *mut ISC_STATUS,
863    //         arg2: *mut isc_tr_handle,
864    //         arg3: *mut isc_stmt_handle,
865    //         arg4: ::std::os::raw::c_ushort,
866    //         arg5: *const ISC_SCHAR,
867    //         arg6: ::std::os::raw::c_ushort,
868    //         arg7: ::std::os::raw::c_ushort,
869    //         arg8: *mut ISC_SCHAR,
870    //     ) -> ISC_STATUS;
871    // }
872    // extern "C" {
873    //     pub fn isc_dsql_execute2_m(
874    //         arg1: *mut ISC_STATUS,
875    //         arg2: *mut isc_tr_handle,
876    //         arg3: *mut isc_stmt_handle,
877    //         arg4: ::std::os::raw::c_ushort,
878    //         arg5: *const ISC_SCHAR,
879    //         arg6: ::std::os::raw::c_ushort,
880    //         arg7: ::std::os::raw::c_ushort,
881    //         arg8: *mut ISC_SCHAR,
882    //         arg9: ::std::os::raw::c_ushort,
883    //         arg10: *mut ISC_SCHAR,
884    //         arg11: ::std::os::raw::c_ushort,
885    //         arg12: ::std::os::raw::c_ushort,
886    //         arg13: *mut ISC_SCHAR,
887    //     ) -> ISC_STATUS;
888    // }
889    // extern "C" {
890    //     pub fn isc_dsql_execute_immediate_m(
891    //         arg1: *mut ISC_STATUS,
892    //         arg2: *mut isc_db_handle,
893    //         arg3: *mut isc_tr_handle,
894    //         arg4: ::std::os::raw::c_ushort,
895    //         arg5: *const ISC_SCHAR,
896    //         arg6: ::std::os::raw::c_ushort,
897    //         arg7: ::std::os::raw::c_ushort,
898    //         arg8: *mut ISC_SCHAR,
899    //         arg9: ::std::os::raw::c_ushort,
900    //         arg10: ::std::os::raw::c_ushort,
901    //         arg11: *mut ISC_SCHAR,
902    //     ) -> ISC_STATUS;
903    // }
904    // extern "C" {
905    //     pub fn isc_dsql_exec_immed3_m(
906    //         arg1: *mut ISC_STATUS,
907    //         arg2: *mut isc_db_handle,
908    //         arg3: *mut isc_tr_handle,
909    //         arg4: ::std::os::raw::c_ushort,
910    //         arg5: *const ISC_SCHAR,
911    //         arg6: ::std::os::raw::c_ushort,
912    //         arg7: ::std::os::raw::c_ushort,
913    //         arg8: *mut ISC_SCHAR,
914    //         arg9: ::std::os::raw::c_ushort,
915    //         arg10: ::std::os::raw::c_ushort,
916    //         arg11: *const ISC_SCHAR,
917    //         arg12: ::std::os::raw::c_ushort,
918    //         arg13: *mut ISC_SCHAR,
919    //         arg14: ::std::os::raw::c_ushort,
920    //         arg15: ::std::os::raw::c_ushort,
921    //         arg16: *mut ISC_SCHAR,
922    //     ) -> ISC_STATUS;
923    // }
924    // extern "C" {
925    //     pub fn isc_dsql_fetch_m(
926    //         arg1: *mut ISC_STATUS,
927    //         arg2: *mut isc_stmt_handle,
928    //         arg3: ::std::os::raw::c_ushort,
929    //         arg4: *mut ISC_SCHAR,
930    //         arg5: ::std::os::raw::c_ushort,
931    //         arg6: ::std::os::raw::c_ushort,
932    //         arg7: *mut ISC_SCHAR,
933    //     ) -> ISC_STATUS;
934    // }
935    // extern "C" {
936    //     pub fn isc_dsql_insert_m(
937    //         arg1: *mut ISC_STATUS,
938    //         arg2: *mut isc_stmt_handle,
939    //         arg3: ::std::os::raw::c_ushort,
940    //         arg4: *const ISC_SCHAR,
941    //         arg5: ::std::os::raw::c_ushort,
942    //         arg6: ::std::os::raw::c_ushort,
943    //         arg7: *const ISC_SCHAR,
944    //     ) -> ISC_STATUS;
945    // }
946    // extern "C" {
947    //     pub fn isc_dsql_prepare_m(
948    //         arg1: *mut ISC_STATUS,
949    //         arg2: *mut isc_tr_handle,
950    //         arg3: *mut isc_stmt_handle,
951    //         arg4: ::std::os::raw::c_ushort,
952    //         arg5: *const ISC_SCHAR,
953    //         arg6: ::std::os::raw::c_ushort,
954    //         arg7: ::std::os::raw::c_ushort,
955    //         arg8: *const ISC_SCHAR,
956    //         arg9: ::std::os::raw::c_ushort,
957    //         arg10: *mut ISC_SCHAR,
958    //     ) -> ISC_STATUS;
959    // }
960    // extern "C" {
961    //     pub fn isc_dsql_release(arg1: *mut ISC_STATUS, arg2: *const ISC_SCHAR) -> ISC_STATUS;
962    // }
963    // extern "C" {
964    //     pub fn isc_embed_dsql_close(arg1: *mut ISC_STATUS, arg2: *const ISC_SCHAR) -> ISC_STATUS;
965    // }
966    // extern "C" {
967    //     pub fn isc_embed_dsql_declare(
968    //         arg1: *mut ISC_STATUS,
969    //         arg2: *const ISC_SCHAR,
970    //         arg3: *const ISC_SCHAR,
971    //     ) -> ISC_STATUS;
972    // }
973    // extern "C" {
974    //     pub fn isc_embed_dsql_describe(
975    //         arg1: *mut ISC_STATUS,
976    //         arg2: *const ISC_SCHAR,
977    //         arg3: ::std::os::raw::c_ushort,
978    //         arg4: *mut XSQLDA,
979    //     ) -> ISC_STATUS;
980    // }
981    // extern "C" {
982    //     pub fn isc_embed_dsql_describe_bind(
983    //         arg1: *mut ISC_STATUS,
984    //         arg2: *const ISC_SCHAR,
985    //         arg3: ::std::os::raw::c_ushort,
986    //         arg4: *mut XSQLDA,
987    //     ) -> ISC_STATUS;
988    // }
989    // extern "C" {
990    //     pub fn isc_embed_dsql_execute(
991    //         arg1: *mut ISC_STATUS,
992    //         arg2: *mut isc_tr_handle,
993    //         arg3: *const ISC_SCHAR,
994    //         arg4: ::std::os::raw::c_ushort,
995    //         arg5: *mut XSQLDA,
996    //     ) -> ISC_STATUS;
997    // }
998    // extern "C" {
999    //     pub fn isc_embed_dsql_execute2(
1000    //         arg1: *mut ISC_STATUS,
1001    //         arg2: *mut isc_tr_handle,
1002    //         arg3: *const ISC_SCHAR,
1003    //         arg4: ::std::os::raw::c_ushort,
1004    //         arg5: *mut XSQLDA,
1005    //         arg6: *mut XSQLDA,
1006    //     ) -> ISC_STATUS;
1007    // }
1008    // extern "C" {
1009    //     pub fn isc_embed_dsql_execute_immed(
1010    //         arg1: *mut ISC_STATUS,
1011    //         arg2: *mut isc_db_handle,
1012    //         arg3: *mut isc_tr_handle,
1013    //         arg4: ::std::os::raw::c_ushort,
1014    //         arg5: *const ISC_SCHAR,
1015    //         arg6: ::std::os::raw::c_ushort,
1016    //         arg7: *mut XSQLDA,
1017    //     ) -> ISC_STATUS;
1018    // }
1019    // extern "C" {
1020    //     pub fn isc_embed_dsql_fetch(
1021    //         arg1: *mut ISC_STATUS,
1022    //         arg2: *const ISC_SCHAR,
1023    //         arg3: ::std::os::raw::c_ushort,
1024    //         arg4: *mut XSQLDA,
1025    //     ) -> ISC_STATUS;
1026    // }
1027    // extern "C" {
1028    //     pub fn isc_embed_dsql_fetch_a(
1029    //         arg1: *mut ISC_STATUS,
1030    //         arg2: *mut ::std::os::raw::c_int,
1031    //         arg3: *const ISC_SCHAR,
1032    //         arg4: ISC_USHORT,
1033    //         arg5: *mut XSQLDA,
1034    //     ) -> ISC_STATUS;
1035    // }
1036    // extern "C" {
1037    //     pub fn isc_embed_dsql_length(arg1: *const ISC_UCHAR, arg2: *mut ISC_USHORT);
1038    // }
1039    // extern "C" {
1040    //     pub fn isc_embed_dsql_open(
1041    //         arg1: *mut ISC_STATUS,
1042    //         arg2: *mut isc_tr_handle,
1043    //         arg3: *const ISC_SCHAR,
1044    //         arg4: ::std::os::raw::c_ushort,
1045    //         arg5: *mut XSQLDA,
1046    //     ) -> ISC_STATUS;
1047    // }
1048    // extern "C" {
1049    //     pub fn isc_embed_dsql_open2(
1050    //         arg1: *mut ISC_STATUS,
1051    //         arg2: *mut isc_tr_handle,
1052    //         arg3: *const ISC_SCHAR,
1053    //         arg4: ::std::os::raw::c_ushort,
1054    //         arg5: *mut XSQLDA,
1055    //         arg6: *mut XSQLDA,
1056    //     ) -> ISC_STATUS;
1057    // }
1058    // extern "C" {
1059    //     pub fn isc_embed_dsql_insert(
1060    //         arg1: *mut ISC_STATUS,
1061    //         arg2: *const ISC_SCHAR,
1062    //         arg3: ::std::os::raw::c_ushort,
1063    //         arg4: *mut XSQLDA,
1064    //     ) -> ISC_STATUS;
1065    // }
1066    // extern "C" {
1067    //     pub fn isc_embed_dsql_prepare(
1068    //         arg1: *mut ISC_STATUS,
1069    //         arg2: *mut isc_db_handle,
1070    //         arg3: *mut isc_tr_handle,
1071    //         arg4: *const ISC_SCHAR,
1072    //         arg5: ::std::os::raw::c_ushort,
1073    //         arg6: *const ISC_SCHAR,
1074    //         arg7: ::std::os::raw::c_ushort,
1075    //         arg8: *mut XSQLDA,
1076    //     ) -> ISC_STATUS;
1077    // }
1078    // extern "C" {
1079    //     pub fn isc_embed_dsql_release(arg1: *mut ISC_STATUS, arg2: *const ISC_SCHAR) -> ISC_STATUS;
1080    // }
1081    // extern "C" {
1082    //     pub fn BLOB_open(
1083    //         arg1: isc_blob_handle,
1084    //         arg2: *mut ISC_SCHAR,
1085    //         arg3: ::std::os::raw::c_int,
1086    //     ) -> FB_BLOB_STREAM;
1087    // }
1088    // extern "C" {
1089    //     pub fn BLOB_put(arg1: ISC_SCHAR, arg2: FB_BLOB_STREAM) -> ::std::os::raw::c_int;
1090    // }
1091    // extern "C" {
1092    //     pub fn BLOB_close(arg1: FB_BLOB_STREAM) -> ::std::os::raw::c_int;
1093    // }
1094    // extern "C" {
1095    //     pub fn BLOB_get(arg1: FB_BLOB_STREAM) -> ::std::os::raw::c_int;
1096    // }
1097    // extern "C" {
1098    //     pub fn BLOB_display(
1099    //         arg1: *mut ISC_QUAD,
1100    //         arg2: isc_db_handle,
1101    //         arg3: isc_tr_handle,
1102    //         arg4: *const ISC_SCHAR,
1103    //     ) -> ::std::os::raw::c_int;
1104    // }
1105    // extern "C" {
1106    //     pub fn BLOB_dump(
1107    //         arg1: *mut ISC_QUAD,
1108    //         arg2: isc_db_handle,
1109    //         arg3: isc_tr_handle,
1110    //         arg4: *const ISC_SCHAR,
1111    //     ) -> ::std::os::raw::c_int;
1112    // }
1113    // extern "C" {
1114    //     pub fn BLOB_edit(
1115    //         arg1: *mut ISC_QUAD,
1116    //         arg2: isc_db_handle,
1117    //         arg3: isc_tr_handle,
1118    //         arg4: *const ISC_SCHAR,
1119    //     ) -> ::std::os::raw::c_int;
1120    // }
1121    // extern "C" {
1122    //     pub fn BLOB_load(
1123    //         arg1: *mut ISC_QUAD,
1124    //         arg2: isc_db_handle,
1125    //         arg3: isc_tr_handle,
1126    //         arg4: *const ISC_SCHAR,
1127    //     ) -> ::std::os::raw::c_int;
1128    // }
1129    // extern "C" {
1130    //     pub fn BLOB_text_dump(
1131    //         arg1: *mut ISC_QUAD,
1132    //         arg2: isc_db_handle,
1133    //         arg3: isc_tr_handle,
1134    //         arg4: *const ISC_SCHAR,
1135    //     ) -> ::std::os::raw::c_int;
1136    // }
1137    // extern "C" {
1138    //     pub fn BLOB_text_load(
1139    //         arg1: *mut ISC_QUAD,
1140    //         arg2: isc_db_handle,
1141    //         arg3: isc_tr_handle,
1142    //         arg4: *const ISC_SCHAR,
1143    //     ) -> ::std::os::raw::c_int;
1144    // }
1145    // extern "C" {
1146    //     pub fn Bopen(
1147    //         arg1: *mut ISC_QUAD,
1148    //         arg2: isc_db_handle,
1149    //         arg3: isc_tr_handle,
1150    //         arg4: *const ISC_SCHAR,
1151    //     ) -> FB_BLOB_STREAM;
1152    // }
1153    // extern "C" {
1154    //     pub fn isc_ftof(
1155    //         arg1: *const ISC_SCHAR,
1156    //         arg2: ::std::os::raw::c_ushort,
1157    //         arg3: *mut ISC_SCHAR,
1158    //         arg4: ::std::os::raw::c_ushort,
1159    //     ) -> ISC_LONG;
1160    // }
1161    // extern "C" {
1162    //     pub fn isc_print_blr(
1163    //         arg1: *const ISC_SCHAR,
1164    //         arg2: ISC_PRINT_CALLBACK,
1165    //         arg3: *mut ::std::os::raw::c_void,
1166    //         arg4: ::std::os::raw::c_short,
1167    //     ) -> ISC_STATUS;
1168    // }
1169    // extern "C" {
1170    //     pub fn fb_print_blr(
1171    //         arg1: *const ISC_UCHAR,
1172    //         arg2: ISC_ULONG,
1173    //         arg3: ISC_PRINT_CALLBACK,
1174    //         arg4: *mut ::std::os::raw::c_void,
1175    //         arg5: ::std::os::raw::c_short,
1176    //     ) -> ::std::os::raw::c_int;
1177    // }
1178    // extern "C" {
1179    //     pub fn isc_set_debug(arg1: ::std::os::raw::c_int);
1180    // }
1181    // extern "C" {
1182    //     pub fn isc_qtoq(arg1: *const ISC_QUAD, arg2: *mut ISC_QUAD);
1183    // }
1184    // extern "C" {
1185    //     pub fn isc_vtof(arg1: *const ISC_SCHAR, arg2: *mut ISC_SCHAR, arg3: ::std::os::raw::c_ushort);
1186    // }
1187    // extern "C" {
1188    //     pub fn isc_vtov(arg1: *const ISC_SCHAR, arg2: *mut ISC_SCHAR, arg3: ::std::os::raw::c_short);
1189    // }
1190    // extern "C" {
1191    //     pub fn isc_version(
1192    //         arg1: *mut isc_db_handle,
1193    //         arg2: ISC_VERSION_CALLBACK,
1194    //         arg3: *mut ::std::os::raw::c_void,
1195    //     ) -> ::std::os::raw::c_int;
1196    // }
1197    // extern "C" {
1198    //     pub fn isc_reset_fpe(arg1: ISC_USHORT) -> ISC_LONG;
1199    // }
1200    // extern "C" {
1201    //     pub fn isc_baddress(arg1: *mut ISC_SCHAR) -> usize;
1202    // }
1203    // extern "C" {
1204    //     pub fn isc_baddress_s(arg1: *const ISC_SCHAR, arg2: *mut usize);
1205    // }
1206    // extern "C" {
1207    //     pub fn isc_service_attach(
1208    //         arg1: *mut ISC_STATUS,
1209    //         arg2: ::std::os::raw::c_ushort,
1210    //         arg3: *const ISC_SCHAR,
1211    //         arg4: *mut isc_svc_handle,
1212    //         arg5: ::std::os::raw::c_ushort,
1213    //         arg6: *const ISC_SCHAR,
1214    //     ) -> ISC_STATUS;
1215    // }
1216    // extern "C" {
1217    //     pub fn isc_service_detach(arg1: *mut ISC_STATUS, arg2: *mut isc_svc_handle) -> ISC_STATUS;
1218    // }
1219    // extern "C" {
1220    //     pub fn isc_service_query(
1221    //         arg1: *mut ISC_STATUS,
1222    //         arg2: *mut isc_svc_handle,
1223    //         arg3: *mut isc_resv_handle,
1224    //         arg4: ::std::os::raw::c_ushort,
1225    //         arg5: *const ISC_SCHAR,
1226    //         arg6: ::std::os::raw::c_ushort,
1227    //         arg7: *const ISC_SCHAR,
1228    //         arg8: ::std::os::raw::c_ushort,
1229    //         arg9: *mut ISC_SCHAR,
1230    //     ) -> ISC_STATUS;
1231    // }
1232    // extern "C" {
1233    //     pub fn isc_service_start(
1234    //         arg1: *mut ISC_STATUS,
1235    //         arg2: *mut isc_svc_handle,
1236    //         arg3: *mut isc_resv_handle,
1237    //         arg4: ::std::os::raw::c_ushort,
1238    //         arg5: *const ISC_SCHAR,
1239    //     ) -> ISC_STATUS;
1240    // }
1241    // extern "C" {
1242    //     pub fn fb_shutdown(
1243    //         arg1: ::std::os::raw::c_uint,
1244    //         arg2: ::std::os::raw::c_int,
1245    //     ) -> ::std::os::raw::c_int;
1246    // }
1247    // extern "C" {
1248    //     pub fn fb_shutdown_callback(
1249    //         arg1: *mut ISC_STATUS,
1250    //         arg2: FB_SHUTDOWN_CALLBACK,
1251    //         arg3: ::std::os::raw::c_int,
1252    //         arg4: *mut ::std::os::raw::c_void,
1253    //     ) -> ISC_STATUS;
1254    // }
1255    // extern "C" {
1256    //     pub fn fb_cancel_operation(
1257    //         arg1: *mut ISC_STATUS,
1258    //         arg2: *mut isc_db_handle,
1259    //         arg3: ISC_USHORT,
1260    //     ) -> ISC_STATUS;
1261    // }
1262    // extern "C" {
1263    //     pub fn fb_ping(arg1: *mut ISC_STATUS, arg2: *mut isc_db_handle) -> ISC_STATUS;
1264    // }
1265    // extern "C" {
1266    //     pub fn fb_get_database_handle(
1267    //         arg1: *mut ISC_STATUS,
1268    //         arg2: *mut isc_db_handle,
1269    //         arg3: *mut ::std::os::raw::c_void,
1270    //     ) -> ISC_STATUS;
1271    // }
1272    // extern "C" {
1273    //     pub fn fb_get_transaction_handle(
1274    //         arg1: *mut ISC_STATUS,
1275    //         arg2: *mut isc_tr_handle,
1276    //         arg3: *mut ::std::os::raw::c_void,
1277    //     ) -> ISC_STATUS;
1278    // }
1279    // extern "C" {
1280    //     pub fn isc_get_client_version(arg1: *mut ISC_SCHAR);
1281    // }
1282    // extern "C" {
1283    //     pub fn isc_get_client_major_version() -> ::std::os::raw::c_int;
1284    // }
1285    // extern "C" {
1286    //     pub fn isc_get_client_minor_version() -> ::std::os::raw::c_int;
1287    // }
1288    // extern "C" {
1289    //     pub fn fb_database_crypt_callback(
1290    //         arg1: *mut ISC_STATUS,
1291    //         arg2: *mut ::std::os::raw::c_void,
1292    //     ) -> ISC_STATUS;
1293    // }
1294}