Skip to main content

inchi_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3pub const MAXVAL: u32 = 20;
4pub const ATOM_EL_LEN: u32 = 6;
5pub const NUM_H_ISOTOPES: u32 = 3;
6pub const ISOTOPIC_SHIFT_FLAG: u32 = 10000;
7pub const ISOTOPIC_SHIFT_MAX: u32 = 100;
8pub const NO_ATOM: i32 = -1;
9pub const INCHI_STRING_PREFIX: &[u8; 7] = b"InChI=\0";
10pub const INCHI_NUM: u32 = 2;
11pub const INCHI_RADICAL_NONE: tagINCHIRadical = 0;
12pub const INCHI_RADICAL_SINGLET: tagINCHIRadical = 1;
13pub const INCHI_RADICAL_DOUBLET: tagINCHIRadical = 2;
14pub const INCHI_RADICAL_TRIPLET: tagINCHIRadical = 3;
15pub type tagINCHIRadical = ::std::os::raw::c_uint;
16pub use self::tagINCHIRadical as inchi_Radical;
17pub const INCHI_BOND_TYPE_NONE: tagINCHIBondType = 0;
18pub const INCHI_BOND_TYPE_SINGLE: tagINCHIBondType = 1;
19pub const INCHI_BOND_TYPE_DOUBLE: tagINCHIBondType = 2;
20pub const INCHI_BOND_TYPE_TRIPLE: tagINCHIBondType = 3;
21pub const INCHI_BOND_TYPE_ALTERN: tagINCHIBondType = 4;
22pub type tagINCHIBondType = ::std::os::raw::c_uint;
23pub use self::tagINCHIBondType as inchi_BondType;
24pub const INCHI_BOND_STEREO_NONE: tagINCHIBondStereo2D = 0;
25pub const INCHI_BOND_STEREO_SINGLE_1UP: tagINCHIBondStereo2D = 1;
26pub const INCHI_BOND_STEREO_SINGLE_1EITHER: tagINCHIBondStereo2D = 4;
27pub const INCHI_BOND_STEREO_SINGLE_1DOWN: tagINCHIBondStereo2D = 6;
28pub const INCHI_BOND_STEREO_SINGLE_2UP: tagINCHIBondStereo2D = -1;
29pub const INCHI_BOND_STEREO_SINGLE_2EITHER: tagINCHIBondStereo2D = -4;
30pub const INCHI_BOND_STEREO_SINGLE_2DOWN: tagINCHIBondStereo2D = -6;
31pub const INCHI_BOND_STEREO_DOUBLE_EITHER: tagINCHIBondStereo2D = 3;
32pub type tagINCHIBondStereo2D = ::std::os::raw::c_int;
33pub use self::tagINCHIBondStereo2D as inchi_BondStereo2D;
34pub type S_CHAR = ::std::os::raw::c_schar;
35pub type S_SHORT = ::std::os::raw::c_short;
36pub type AT_NUM = S_SHORT;
37#[repr(C)]
38#[derive(Debug, Default, Copy, Clone)]
39pub struct tagInchiAtom {
40    pub x: f64,
41    pub y: f64,
42    pub z: f64,
43    pub neighbor: [AT_NUM; 20usize],
44    pub bond_type: [S_CHAR; 20usize],
45    pub bond_stereo: [S_CHAR; 20usize],
46    pub elname: [::std::os::raw::c_char; 6usize],
47    pub num_bonds: AT_NUM,
48    pub num_iso_H: [S_CHAR; 4usize],
49    pub isotopic_mass: AT_NUM,
50    pub radical: S_CHAR,
51    pub charge: S_CHAR,
52}
53pub type inchi_Atom = tagInchiAtom;
54pub const INCHI_StereoType_None: tagINCHIStereoType0D = 0;
55pub const INCHI_StereoType_DoubleBond: tagINCHIStereoType0D = 1;
56pub const INCHI_StereoType_Tetrahedral: tagINCHIStereoType0D = 2;
57pub const INCHI_StereoType_Allene: tagINCHIStereoType0D = 3;
58pub type tagINCHIStereoType0D = ::std::os::raw::c_uint;
59pub use self::tagINCHIStereoType0D as inchi_StereoType0D;
60pub const INCHI_PARITY_NONE: tagINCHIStereoParity0D = 0;
61pub const INCHI_PARITY_ODD: tagINCHIStereoParity0D = 1;
62pub const INCHI_PARITY_EVEN: tagINCHIStereoParity0D = 2;
63pub const INCHI_PARITY_UNKNOWN: tagINCHIStereoParity0D = 3;
64pub const INCHI_PARITY_UNDEFINED: tagINCHIStereoParity0D = 4;
65pub type tagINCHIStereoParity0D = ::std::os::raw::c_uint;
66pub use self::tagINCHIStereoParity0D as inchi_StereoParity0D;
67#[repr(C)]
68#[derive(Debug, Default, Copy, Clone)]
69pub struct tagINCHIStereo0D {
70    pub neighbor: [AT_NUM; 4usize],
71    pub central_atom: AT_NUM,
72    pub type_: S_CHAR,
73    pub parity: S_CHAR,
74}
75pub type inchi_Stereo0D = tagINCHIStereo0D;
76#[repr(C)]
77#[derive(Debug, Copy, Clone)]
78pub struct tagINCHI_Input {
79    pub atom: *mut inchi_Atom,
80    pub stereo0D: *mut inchi_Stereo0D,
81    pub szOptions: *mut ::std::os::raw::c_char,
82    pub num_atoms: AT_NUM,
83    pub num_stereo0D: AT_NUM,
84}
85impl Default for tagINCHI_Input {
86    fn default() -> Self {
87        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
88        unsafe {
89            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
90            s.assume_init()
91        }
92    }
93}
94pub type inchi_Input = tagINCHI_Input;
95#[repr(C)]
96#[derive(Debug, Copy, Clone)]
97pub struct inchi_Input_PolymerUnit {
98    pub id: ::std::os::raw::c_int,
99    pub type_: ::std::os::raw::c_int,
100    pub subtype: ::std::os::raw::c_int,
101    pub conn: ::std::os::raw::c_int,
102    pub label: ::std::os::raw::c_int,
103    pub na: ::std::os::raw::c_int,
104    pub nb: ::std::os::raw::c_int,
105    pub xbr1: [f64; 4usize],
106    pub xbr2: [f64; 4usize],
107    pub smt: [::std::os::raw::c_char; 80usize],
108    pub alist: *mut ::std::os::raw::c_int,
109    pub blist: *mut ::std::os::raw::c_int,
110}
111impl Default for inchi_Input_PolymerUnit {
112    fn default() -> Self {
113        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
114        unsafe {
115            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
116            s.assume_init()
117        }
118    }
119}
120#[repr(C)]
121#[derive(Debug, Copy, Clone)]
122pub struct inchi_Input_Polymer {
123    pub units: *mut *mut inchi_Input_PolymerUnit,
124    pub n: ::std::os::raw::c_int,
125}
126impl Default for inchi_Input_Polymer {
127    fn default() -> Self {
128        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
129        unsafe {
130            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
131            s.assume_init()
132        }
133    }
134}
135#[repr(C)]
136#[derive(Debug, Copy, Clone)]
137pub struct inchi_Input_V3000 {
138    pub n_non_star_atoms: ::std::os::raw::c_int,
139    pub n_star_atoms: ::std::os::raw::c_int,
140    pub atom_index_orig: *mut ::std::os::raw::c_int,
141    pub atom_index_fin: *mut ::std::os::raw::c_int,
142    pub n_sgroups: ::std::os::raw::c_int,
143    pub n_3d_constraints: ::std::os::raw::c_int,
144    pub n_collections: ::std::os::raw::c_int,
145    pub n_non_haptic_bonds: ::std::os::raw::c_int,
146    pub n_haptic_bonds: ::std::os::raw::c_int,
147    pub lists_haptic_bonds: *mut *mut ::std::os::raw::c_int,
148    pub n_steabs: ::std::os::raw::c_int,
149    pub lists_steabs: *mut *mut ::std::os::raw::c_int,
150    pub n_sterel: ::std::os::raw::c_int,
151    pub lists_sterel: *mut *mut ::std::os::raw::c_int,
152    pub n_sterac: ::std::os::raw::c_int,
153    pub lists_sterac: *mut *mut ::std::os::raw::c_int,
154}
155impl Default for inchi_Input_V3000 {
156    fn default() -> Self {
157        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
158        unsafe {
159            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
160            s.assume_init()
161        }
162    }
163}
164#[repr(C)]
165#[derive(Debug, Copy, Clone)]
166pub struct inchi_InputEx {
167    pub atom: *mut inchi_Atom,
168    pub stereo0D: *mut inchi_Stereo0D,
169    pub szOptions: *mut ::std::os::raw::c_char,
170    pub num_atoms: AT_NUM,
171    pub num_stereo0D: AT_NUM,
172    pub polymer: *mut inchi_Input_Polymer,
173    pub v3000: *mut inchi_Input_V3000,
174}
175impl Default for inchi_InputEx {
176    fn default() -> Self {
177        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
178        unsafe {
179            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
180            s.assume_init()
181        }
182    }
183}
184#[repr(C)]
185#[derive(Debug, Copy, Clone)]
186pub struct tagINCHI_InputINCHI {
187    pub szInChI: *mut ::std::os::raw::c_char,
188    pub szOptions: *mut ::std::os::raw::c_char,
189}
190impl Default for tagINCHI_InputINCHI {
191    fn default() -> Self {
192        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
193        unsafe {
194            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
195            s.assume_init()
196        }
197    }
198}
199pub type inchi_InputINCHI = tagINCHI_InputINCHI;
200pub type inchi_Output_PolymerUnit = inchi_Input_PolymerUnit;
201pub type inchi_Output_Polymer = inchi_Input_Polymer;
202pub type inchi_Output_V3000 = inchi_Input_V3000;
203#[repr(C)]
204#[derive(Debug, Copy, Clone)]
205pub struct tagINCHI_Output {
206    pub szInChI: *mut ::std::os::raw::c_char,
207    pub szAuxInfo: *mut ::std::os::raw::c_char,
208    pub szMessage: *mut ::std::os::raw::c_char,
209    pub szLog: *mut ::std::os::raw::c_char,
210}
211impl Default for tagINCHI_Output {
212    fn default() -> Self {
213        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
214        unsafe {
215            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
216            s.assume_init()
217        }
218    }
219}
220pub type inchi_Output = tagINCHI_Output;
221#[repr(C)]
222#[derive(Debug, Copy, Clone)]
223pub struct tagINCHI_OutputStruct {
224    pub atom: *mut inchi_Atom,
225    pub stereo0D: *mut inchi_Stereo0D,
226    pub num_atoms: AT_NUM,
227    pub num_stereo0D: AT_NUM,
228    pub szMessage: *mut ::std::os::raw::c_char,
229    pub szLog: *mut ::std::os::raw::c_char,
230    pub WarningFlags: [[::std::os::raw::c_ulong; 2usize]; 2usize],
231}
232impl Default for tagINCHI_OutputStruct {
233    fn default() -> Self {
234        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
235        unsafe {
236            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
237            s.assume_init()
238        }
239    }
240}
241pub type inchi_OutputStruct = tagINCHI_OutputStruct;
242#[repr(C)]
243#[derive(Debug, Copy, Clone)]
244pub struct tagINCHI_OutputStructEx {
245    pub atom: *mut inchi_Atom,
246    pub stereo0D: *mut inchi_Stereo0D,
247    pub num_atoms: AT_NUM,
248    pub num_stereo0D: AT_NUM,
249    pub szMessage: *mut ::std::os::raw::c_char,
250    pub szLog: *mut ::std::os::raw::c_char,
251    pub WarningFlags: [[::std::os::raw::c_ulong; 2usize]; 2usize],
252    pub polymer: *mut inchi_Output_Polymer,
253    pub v3000: *mut inchi_Output_V3000,
254}
255impl Default for tagINCHI_OutputStructEx {
256    fn default() -> Self {
257        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
258        unsafe {
259            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
260            s.assume_init()
261        }
262    }
263}
264pub type inchi_OutputStructEx = tagINCHI_OutputStructEx;
265pub const inchi_Ret_BREAK: tagRetValGetINCHI = -100;
266pub const inchi_Ret_SKIP: tagRetValGetINCHI = -2;
267pub const inchi_Ret_EOF: tagRetValGetINCHI = -1;
268pub const inchi_Ret_OKAY: tagRetValGetINCHI = 0;
269pub const inchi_Ret_WARNING: tagRetValGetINCHI = 1;
270pub const inchi_Ret_ERROR: tagRetValGetINCHI = 2;
271pub const inchi_Ret_FATAL: tagRetValGetINCHI = 3;
272pub const inchi_Ret_UNKNOWN: tagRetValGetINCHI = 4;
273pub const inchi_Ret_BUSY: tagRetValGetINCHI = 5;
274pub type tagRetValGetINCHI = ::std::os::raw::c_int;
275pub use self::tagRetValGetINCHI as RetValGetINCHI;
276pub const mol2inchi_Ret_OKAY: tagRetValMOL2INCHI = 0;
277pub const mol2inchi_Ret_WARNING: tagRetValMOL2INCHI = 1;
278pub const mol2inchi_Ret_EOF: tagRetValMOL2INCHI = -1;
279pub const mol2inchi_Ret_ERROR: tagRetValMOL2INCHI = 2;
280pub const mol2inchi_Ret_ERROR_get: tagRetValMOL2INCHI = 4;
281pub const mol2inchi_Ret_ERROR_comp: tagRetValMOL2INCHI = 5;
282pub type tagRetValMOL2INCHI = ::std::os::raw::c_int;
283pub use self::tagRetValMOL2INCHI as RetValMol2INCHI;
284pub const INCHI_VALID_STANDARD: tagRetValCheckINCHI = 0;
285pub const INCHI_VALID_NON_STANDARD: tagRetValCheckINCHI = 1;
286pub const INCHI_VALID_BETA: tagRetValCheckINCHI = 2;
287pub const INCHI_INVALID_PREFIX: tagRetValCheckINCHI = 3;
288pub const INCHI_INVALID_VERSION: tagRetValCheckINCHI = 4;
289pub const INCHI_INVALID_LAYOUT: tagRetValCheckINCHI = 5;
290pub const INCHI_FAIL_I2I: tagRetValCheckINCHI = 6;
291pub type tagRetValCheckINCHI = ::std::os::raw::c_uint;
292pub use self::tagRetValCheckINCHI as RetValCheckINCHI;
293extern "C" {
294    pub fn GetINCHI(inp: *mut inchi_Input, out: *mut inchi_Output) -> ::std::os::raw::c_int;
295}
296extern "C" {
297    pub fn GetStdINCHI(inp: *mut inchi_Input, out: *mut inchi_Output) -> ::std::os::raw::c_int;
298}
299extern "C" {
300    pub fn GetINCHIEx(inp: *mut inchi_InputEx, out: *mut inchi_Output) -> ::std::os::raw::c_int;
301}
302extern "C" {
303    pub fn FreeINCHI(out: *mut inchi_Output);
304}
305extern "C" {
306    pub fn FreeStdINCHI(out: *mut inchi_Output);
307}
308extern "C" {
309    pub fn GetStringLength(p: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
310}
311extern "C" {
312    pub fn GetStructFromINCHI(
313        inpInChI: *mut inchi_InputINCHI,
314        outStruct: *mut inchi_OutputStruct,
315    ) -> ::std::os::raw::c_int;
316}
317extern "C" {
318    pub fn GetStructFromStdINCHI(
319        inpInChI: *mut inchi_InputINCHI,
320        outStruct: *mut inchi_OutputStruct,
321    ) -> ::std::os::raw::c_int;
322}
323extern "C" {
324    pub fn GetStructFromINCHIEx(
325        inpInChI: *mut inchi_InputINCHI,
326        outStruct: *mut inchi_OutputStructEx,
327    ) -> ::std::os::raw::c_int;
328}
329extern "C" {
330    pub fn FreeStructFromINCHI(out: *mut inchi_OutputStruct);
331}
332extern "C" {
333    pub fn FreeStructFromStdINCHI(out: *mut inchi_OutputStruct);
334}
335extern "C" {
336    pub fn FreeStructFromINCHIEx(out: *mut inchi_OutputStructEx);
337}
338extern "C" {
339    pub fn GetINCHIfromINCHI(
340        inpInChI: *mut inchi_InputINCHI,
341        out: *mut inchi_Output,
342    ) -> ::std::os::raw::c_int;
343}
344#[repr(C)]
345#[derive(Debug, Copy, Clone)]
346pub struct tagInchiInpData {
347    pub pInp: *mut inchi_Input,
348    pub bChiral: ::std::os::raw::c_int,
349    pub szErrMsg: [::std::os::raw::c_char; 256usize],
350}
351impl Default for tagInchiInpData {
352    fn default() -> Self {
353        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
354        unsafe {
355            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
356            s.assume_init()
357        }
358    }
359}
360pub type InchiInpData = tagInchiInpData;
361extern "C" {
362    pub fn Get_inchi_Input_FromAuxInfo(
363        szInchiAuxInfo: *mut ::std::os::raw::c_char,
364        bDoNotAddH: ::std::os::raw::c_int,
365        bDiffUnkUndfStereo: ::std::os::raw::c_int,
366        pInchiInp: *mut InchiInpData,
367    ) -> ::std::os::raw::c_int;
368}
369extern "C" {
370    pub fn Get_std_inchi_Input_FromAuxInfo(
371        szInchiAuxInfo: *mut ::std::os::raw::c_char,
372        bDoNotAddH: ::std::os::raw::c_int,
373        pInchiInp: *mut InchiInpData,
374    ) -> ::std::os::raw::c_int;
375}
376extern "C" {
377    pub fn Free_inchi_Input(pInp: *mut inchi_Input);
378}
379extern "C" {
380    pub fn Free_std_inchi_Input(pInp: *mut inchi_Input);
381}
382extern "C" {
383    pub fn CheckINCHI(
384        szINCHI: *const ::std::os::raw::c_char,
385        strict: ::std::os::raw::c_int,
386    ) -> ::std::os::raw::c_int;
387}
388pub const INCHIKEY_VALID_STANDARD: tagRetValGetINCHIKey = 0;
389pub const INCHIKEY_VALID_NON_STANDARD: tagRetValGetINCHIKey = -1;
390pub const INCHIKEY_INVALID_LENGTH: tagRetValGetINCHIKey = 1;
391pub const INCHIKEY_INVALID_LAYOUT: tagRetValGetINCHIKey = 2;
392pub const INCHIKEY_INVALID_VERSION: tagRetValGetINCHIKey = 3;
393pub type tagRetValGetINCHIKey = ::std::os::raw::c_int;
394pub use self::tagRetValGetINCHIKey as RetValCheckINCHIKeyv;
395extern "C" {
396    pub fn GetINCHIKeyFromINCHI(
397        szINCHISource: *const ::std::os::raw::c_char,
398        xtra1: ::std::os::raw::c_int,
399        xtra2: ::std::os::raw::c_int,
400        szINCHIKey: *mut ::std::os::raw::c_char,
401        szXtra1: *mut ::std::os::raw::c_char,
402        szXtra2: *mut ::std::os::raw::c_char,
403    ) -> ::std::os::raw::c_int;
404}
405extern "C" {
406    pub fn GetStdINCHIKeyFromStdINCHI(
407        szINCHISource: *const ::std::os::raw::c_char,
408        szINCHIKey: *mut ::std::os::raw::c_char,
409    ) -> ::std::os::raw::c_int;
410}
411extern "C" {
412    pub fn CheckINCHIKey(szINCHIKey: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
413}
414pub type INCHI_MODES = ::std::os::raw::c_ulong;
415extern "C" {
416    pub fn MakeINCHIFromMolfileText(
417        moltext: *const ::std::os::raw::c_char,
418        options: *mut ::std::os::raw::c_char,
419        result: *mut inchi_Output,
420    ) -> ::std::os::raw::c_int;
421}
422
423// ===========================================================================
424// IXA (InChI eXtensible API) — manually maintained declarations.
425//
426// These mirror `INCHI_BASE/src/ixa.h`. They are NOT produced by bindgen (the
427// `regenerate-bindings` allowlist intentionally excludes the IXA surface);
428// they are kept in sync with the vendored header by hand. The handles are
429// opaque sentinel pointers (a `typedef struct { int dummy; } *Handle` pattern
430// in C); we reproduce that exactly so each handle keeps a distinct Rust type.
431// ===========================================================================
432
433#[repr(C)]
434#[derive(Debug, Copy, Clone)]
435pub struct IXA_STATUS_HANDLE_STRUCT {
436    pub dummy: ::std::os::raw::c_int,
437}
438#[repr(C)]
439#[derive(Debug, Copy, Clone)]
440pub struct IXA_MOL_HANDLE_STRUCT {
441    pub dummy: ::std::os::raw::c_int,
442}
443#[repr(C)]
444#[derive(Debug, Copy, Clone)]
445pub struct IXA_INCHIBUILDER_HANDLE_STRUCT {
446    pub dummy: ::std::os::raw::c_int,
447}
448#[repr(C)]
449#[derive(Debug, Copy, Clone)]
450pub struct IXA_INCHIKEYBUILDER_HANDLE_STRUCT {
451    pub dummy: ::std::os::raw::c_int,
452}
453#[repr(C)]
454#[derive(Debug, Copy, Clone)]
455pub struct IXA_ATOMID_STRUCT {
456    pub dummy: ::std::os::raw::c_int,
457}
458#[repr(C)]
459#[derive(Debug, Copy, Clone)]
460pub struct IXA_BONDID_STRUCT {
461    pub dummy: ::std::os::raw::c_int,
462}
463#[repr(C)]
464#[derive(Debug, Copy, Clone)]
465pub struct IXA_STEREOID_STRUCT {
466    pub dummy: ::std::os::raw::c_int,
467}
468#[repr(C)]
469#[derive(Debug, Copy, Clone)]
470pub struct IXA_POLYMERUNITID_STRUCT {
471    pub dummy: ::std::os::raw::c_int,
472}
473
474pub type IXA_STATUS_HANDLE = *mut IXA_STATUS_HANDLE_STRUCT;
475pub type IXA_MOL_HANDLE = *mut IXA_MOL_HANDLE_STRUCT;
476pub type IXA_INCHIBUILDER_HANDLE = *mut IXA_INCHIBUILDER_HANDLE_STRUCT;
477pub type IXA_INCHIKEYBUILDER_HANDLE = *mut IXA_INCHIKEYBUILDER_HANDLE_STRUCT;
478pub type IXA_ATOMID = *mut IXA_ATOMID_STRUCT;
479pub type IXA_BONDID = *mut IXA_BONDID_STRUCT;
480pub type IXA_STEREOID = *mut IXA_STEREOID_STRUCT;
481pub type IXA_POLYMERUNITID = *mut IXA_POLYMERUNITID_STRUCT;
482
483pub type IXA_STATUS = ::std::os::raw::c_uint;
484pub const IXA_STATUS_SUCCESS: IXA_STATUS = 0;
485pub const IXA_STATUS_WARNING: IXA_STATUS = 1;
486pub const IXA_STATUS_ERROR: IXA_STATUS = 2;
487
488pub type IXA_BOOL = ::std::os::raw::c_uint;
489pub const IXA_FALSE: IXA_BOOL = 0;
490pub const IXA_TRUE: IXA_BOOL = 1;
491
492pub type IXA_ATOM_RADICAL = ::std::os::raw::c_uint;
493pub const IXA_ATOM_RADICAL_NONE: IXA_ATOM_RADICAL = 0;
494pub const IXA_ATOM_RADICAL_SINGLET: IXA_ATOM_RADICAL = 1;
495pub const IXA_ATOM_RADICAL_DOUBLET: IXA_ATOM_RADICAL = 2;
496pub const IXA_ATOM_RADICAL_TRIPLET: IXA_ATOM_RADICAL = 3;
497
498pub type IXA_BOND_TYPE = ::std::os::raw::c_uint;
499pub const IXA_BOND_TYPE_SINGLE: IXA_BOND_TYPE = 1;
500pub const IXA_BOND_TYPE_DOUBLE: IXA_BOND_TYPE = 2;
501pub const IXA_BOND_TYPE_TRIPLE: IXA_BOND_TYPE = 3;
502pub const IXA_BOND_TYPE_AROMATIC: IXA_BOND_TYPE = 4;
503
504pub type IXA_BOND_WEDGE = ::std::os::raw::c_uint;
505pub const IXA_BOND_WEDGE_NONE: IXA_BOND_WEDGE = 0;
506pub const IXA_BOND_WEDGE_UP: IXA_BOND_WEDGE = 1;
507pub const IXA_BOND_WEDGE_DOWN: IXA_BOND_WEDGE = 2;
508pub const IXA_BOND_WEDGE_EITHER: IXA_BOND_WEDGE = 3;
509
510pub type IXA_DBLBOND_CONFIG = ::std::os::raw::c_uint;
511pub const IXA_DBLBOND_CONFIG_PERCEIVE: IXA_DBLBOND_CONFIG = 0;
512pub const IXA_DBLBOND_CONFIG_EITHER: IXA_DBLBOND_CONFIG = 1;
513
514pub type IXA_STEREO_TOPOLOGY = ::std::os::raw::c_uint;
515pub const IXA_STEREO_TOPOLOGY_INVALID: IXA_STEREO_TOPOLOGY = 0;
516pub const IXA_STEREO_TOPOLOGY_TETRAHEDRON: IXA_STEREO_TOPOLOGY = 2;
517pub const IXA_STEREO_TOPOLOGY_RECTANGLE: IXA_STEREO_TOPOLOGY = 3;
518pub const IXA_STEREO_TOPOLOGY_ANTIRECTANGLE: IXA_STEREO_TOPOLOGY = 4;
519
520pub type IXA_STEREO_PARITY = ::std::os::raw::c_uint;
521pub const IXA_STEREO_PARITY_NONE: IXA_STEREO_PARITY = 0;
522pub const IXA_STEREO_PARITY_ODD: IXA_STEREO_PARITY = 1;
523pub const IXA_STEREO_PARITY_EVEN: IXA_STEREO_PARITY = 2;
524pub const IXA_STEREO_PARITY_UNKNOWN: IXA_STEREO_PARITY = 3;
525
526// `IXA_INCHIBUILDER_OPTION` — discriminants follow ixa.h declaration order.
527pub type IXA_INCHIBUILDER_OPTION = ::std::os::raw::c_uint;
528pub const IXA_INCHIBUILDER_OPTION_NewPsOff: IXA_INCHIBUILDER_OPTION = 0;
529pub const IXA_INCHIBUILDER_OPTION_DoNotAddH: IXA_INCHIBUILDER_OPTION = 1;
530pub const IXA_INCHIBUILDER_OPTION_SUU: IXA_INCHIBUILDER_OPTION = 2;
531pub const IXA_INCHIBUILDER_OPTION_SLUUD: IXA_INCHIBUILDER_OPTION = 3;
532pub const IXA_INCHIBUILDER_OPTION_FixedH: IXA_INCHIBUILDER_OPTION = 4;
533pub const IXA_INCHIBUILDER_OPTION_RecMet: IXA_INCHIBUILDER_OPTION = 5;
534pub const IXA_INCHIBUILDER_OPTION_KET: IXA_INCHIBUILDER_OPTION = 6;
535pub const IXA_INCHIBUILDER_OPTION_15T: IXA_INCHIBUILDER_OPTION = 7;
536pub const IXA_INCHIBUILDER_OPTION_SaveOpt: IXA_INCHIBUILDER_OPTION = 8;
537pub const IXA_INCHIBUILDER_OPTION_AuxNone: IXA_INCHIBUILDER_OPTION = 9;
538pub const IXA_INCHIBUILDER_OPTION_WarnOnEmptyStructure: IXA_INCHIBUILDER_OPTION = 10;
539pub const IXA_INCHIBUILDER_OPTION_LargeMolecules: IXA_INCHIBUILDER_OPTION = 11;
540pub const IXA_INCHIBUILDER_OPTION_Polymers: IXA_INCHIBUILDER_OPTION = 12;
541pub const IXA_INCHIBUILDER_OPTION_Polymers105: IXA_INCHIBUILDER_OPTION = 13;
542pub const IXA_INCHIBUILDER_OPTION_Polymers105Plus: IXA_INCHIBUILDER_OPTION = 14;
543pub const IXA_INCHIBUILDER_OPTION_FilterSS: IXA_INCHIBUILDER_OPTION = 15;
544pub const IXA_INCHIBUILDER_OPTION_InvFilterSS: IXA_INCHIBUILDER_OPTION = 16;
545pub const IXA_INCHIBUILDER_OPTION_NPZZ: IXA_INCHIBUILDER_OPTION = 17;
546pub const IXA_INCHIBUILDER_OPTION_SATZZ: IXA_INCHIBUILDER_OPTION = 18;
547pub const IXA_INCHIBUILDER_OPTION_NoFrameShift: IXA_INCHIBUILDER_OPTION = 19;
548pub const IXA_INCHIBUILDER_OPTION_FoldCRU: IXA_INCHIBUILDER_OPTION = 20;
549pub const IXA_INCHIBUILDER_OPTION_NoEdits: IXA_INCHIBUILDER_OPTION = 21;
550pub const IXA_INCHIBUILDER_OPTION_LooseTSACheck: IXA_INCHIBUILDER_OPTION = 22;
551pub const IXA_INCHIBUILDER_OPTION_OutErrInChI: IXA_INCHIBUILDER_OPTION = 23;
552pub const IXA_INCHIBUILDER_OPTION_NoWarnings: IXA_INCHIBUILDER_OPTION = 24;
553
554pub type IXA_INCHIBUILDER_STEREOOPTION = ::std::os::raw::c_uint;
555pub const IXA_INCHIBUILDER_STEREOOPTION_SAbs: IXA_INCHIBUILDER_STEREOOPTION = 0;
556pub const IXA_INCHIBUILDER_STEREOOPTION_SNon: IXA_INCHIBUILDER_STEREOOPTION = 1;
557pub const IXA_INCHIBUILDER_STEREOOPTION_SRel: IXA_INCHIBUILDER_STEREOOPTION = 2;
558pub const IXA_INCHIBUILDER_STEREOOPTION_SRac: IXA_INCHIBUILDER_STEREOOPTION = 3;
559pub const IXA_INCHIBUILDER_STEREOOPTION_SUCF: IXA_INCHIBUILDER_STEREOOPTION = 4;
560
561// --- IXA Status objects ----------------------------------------------------
562extern "C" {
563    pub fn IXA_STATUS_Create() -> IXA_STATUS_HANDLE;
564    pub fn IXA_STATUS_Clear(hStatus: IXA_STATUS_HANDLE);
565    pub fn IXA_STATUS_Destroy(hStatus: IXA_STATUS_HANDLE);
566    pub fn IXA_STATUS_HasError(hStatus: IXA_STATUS_HANDLE) -> IXA_BOOL;
567    pub fn IXA_STATUS_HasWarning(hStatus: IXA_STATUS_HANDLE) -> IXA_BOOL;
568    pub fn IXA_STATUS_GetCount(hStatus: IXA_STATUS_HANDLE) -> ::std::os::raw::c_int;
569    pub fn IXA_STATUS_GetSeverity(
570        hStatus: IXA_STATUS_HANDLE,
571        vIndex: ::std::os::raw::c_int,
572    ) -> IXA_STATUS;
573    pub fn IXA_STATUS_GetMessage(
574        hStatus: IXA_STATUS_HANDLE,
575        vIndex: ::std::os::raw::c_int,
576    ) -> *const ::std::os::raw::c_char;
577}
578
579// --- IXA Molecule lifecycle & whole-molecule operations --------------------
580extern "C" {
581    pub fn IXA_MOL_Create(hStatus: IXA_STATUS_HANDLE) -> IXA_MOL_HANDLE;
582    pub fn IXA_MOL_Clear(hStatus: IXA_STATUS_HANDLE, hMolecule: IXA_MOL_HANDLE);
583    pub fn IXA_MOL_Destroy(hStatus: IXA_STATUS_HANDLE, hMolecule: IXA_MOL_HANDLE);
584    pub fn IXA_MOL_ReadMolfile(
585        hStatus: IXA_STATUS_HANDLE,
586        hMolecule: IXA_MOL_HANDLE,
587        pBytes: *const ::std::os::raw::c_char,
588    );
589    pub fn IXA_MOL_ReadInChI(
590        hStatus: IXA_STATUS_HANDLE,
591        hMolecule: IXA_MOL_HANDLE,
592        pInChI: *const ::std::os::raw::c_char,
593    );
594    pub fn IXA_MOL_SetChiral(
595        hStatus: IXA_STATUS_HANDLE,
596        hMolecule: IXA_MOL_HANDLE,
597        vChiral: IXA_BOOL,
598    );
599    pub fn IXA_MOL_GetChiral(hStatus: IXA_STATUS_HANDLE, hMolecule: IXA_MOL_HANDLE) -> IXA_BOOL;
600}
601
602// --- IXA Molecule navigation -----------------------------------------------
603extern "C" {
604    pub fn IXA_MOL_GetNumAtoms(
605        hStatus: IXA_STATUS_HANDLE,
606        hMolecule: IXA_MOL_HANDLE,
607    ) -> ::std::os::raw::c_int;
608    pub fn IXA_MOL_GetNumBonds(
609        hStatus: IXA_STATUS_HANDLE,
610        hMolecule: IXA_MOL_HANDLE,
611    ) -> ::std::os::raw::c_int;
612    pub fn IXA_MOL_GetAtomId(
613        hStatus: IXA_STATUS_HANDLE,
614        hMolecule: IXA_MOL_HANDLE,
615        vAtomIndex: ::std::os::raw::c_int,
616    ) -> IXA_ATOMID;
617    pub fn IXA_MOL_GetBondId(
618        hStatus: IXA_STATUS_HANDLE,
619        hMolecule: IXA_MOL_HANDLE,
620        vBondIndex: ::std::os::raw::c_int,
621    ) -> IXA_BONDID;
622    pub fn IXA_MOL_GetAtomIndex(
623        hStatus: IXA_STATUS_HANDLE,
624        hMolecule: IXA_MOL_HANDLE,
625        vAtom: IXA_ATOMID,
626    ) -> ::std::os::raw::c_int;
627    pub fn IXA_MOL_GetBondIndex(
628        hStatus: IXA_STATUS_HANDLE,
629        hMolecule: IXA_MOL_HANDLE,
630        vBond: IXA_BONDID,
631    ) -> ::std::os::raw::c_int;
632    pub fn IXA_MOL_GetAtomNumBonds(
633        hStatus: IXA_STATUS_HANDLE,
634        hMolecule: IXA_MOL_HANDLE,
635        vAtom: IXA_ATOMID,
636    ) -> ::std::os::raw::c_int;
637    pub fn IXA_MOL_GetAtomBond(
638        hStatus: IXA_STATUS_HANDLE,
639        hMolecule: IXA_MOL_HANDLE,
640        vAtom: IXA_ATOMID,
641        vBondIndex: ::std::os::raw::c_int,
642    ) -> IXA_BONDID;
643    pub fn IXA_MOL_GetCommonBond(
644        hStatus: IXA_STATUS_HANDLE,
645        hMolecule: IXA_MOL_HANDLE,
646        vAtom1: IXA_ATOMID,
647        vAtom2: IXA_ATOMID,
648    ) -> IXA_BONDID;
649    pub fn IXA_MOL_GetBondAtom1(
650        hStatus: IXA_STATUS_HANDLE,
651        hMolecule: IXA_MOL_HANDLE,
652        vBond: IXA_BONDID,
653    ) -> IXA_ATOMID;
654    pub fn IXA_MOL_GetBondAtom2(
655        hStatus: IXA_STATUS_HANDLE,
656        hMolecule: IXA_MOL_HANDLE,
657        vBond: IXA_BONDID,
658    ) -> IXA_ATOMID;
659    pub fn IXA_MOL_GetBondOtherAtom(
660        hStatus: IXA_STATUS_HANDLE,
661        hMolecule: IXA_MOL_HANDLE,
662        vBond: IXA_BONDID,
663        vAtom: IXA_ATOMID,
664    ) -> IXA_ATOMID;
665}
666
667// --- IXA atom information --------------------------------------------------
668extern "C" {
669    pub fn IXA_MOL_GetAtomElement(
670        hStatus: IXA_STATUS_HANDLE,
671        hMolecule: IXA_MOL_HANDLE,
672        vAtom: IXA_ATOMID,
673    ) -> *const ::std::os::raw::c_char;
674    pub fn IXA_MOL_GetAtomAtomicNumber(
675        hStatus: IXA_STATUS_HANDLE,
676        hMolecule: IXA_MOL_HANDLE,
677        vAtom: IXA_ATOMID,
678    ) -> ::std::os::raw::c_int;
679    pub fn IXA_MOL_GetAtomMass(
680        hStatus: IXA_STATUS_HANDLE,
681        hMolecule: IXA_MOL_HANDLE,
682        vAtom: IXA_ATOMID,
683    ) -> ::std::os::raw::c_int;
684    pub fn IXA_MOL_GetAtomCharge(
685        hStatus: IXA_STATUS_HANDLE,
686        hMolecule: IXA_MOL_HANDLE,
687        vAtom: IXA_ATOMID,
688    ) -> ::std::os::raw::c_int;
689    pub fn IXA_MOL_GetAtomRadical(
690        hStatus: IXA_STATUS_HANDLE,
691        hMolecule: IXA_MOL_HANDLE,
692        vAtom: IXA_ATOMID,
693    ) -> IXA_ATOM_RADICAL;
694    pub fn IXA_MOL_GetAtomHydrogens(
695        hStatus: IXA_STATUS_HANDLE,
696        hMolecule: IXA_MOL_HANDLE,
697        vAtom: IXA_ATOMID,
698        vHydrogenMassNumber: ::std::os::raw::c_int,
699    ) -> ::std::os::raw::c_int;
700    pub fn IXA_MOL_GetAtomX(
701        hStatus: IXA_STATUS_HANDLE,
702        hMolecule: IXA_MOL_HANDLE,
703        vAtom: IXA_ATOMID,
704    ) -> f64;
705    pub fn IXA_MOL_GetAtomY(
706        hStatus: IXA_STATUS_HANDLE,
707        hMolecule: IXA_MOL_HANDLE,
708        vAtom: IXA_ATOMID,
709    ) -> f64;
710    pub fn IXA_MOL_GetAtomZ(
711        hStatus: IXA_STATUS_HANDLE,
712        hMolecule: IXA_MOL_HANDLE,
713        vAtom: IXA_ATOMID,
714    ) -> f64;
715}
716
717// --- IXA bond information --------------------------------------------------
718extern "C" {
719    pub fn IXA_MOL_GetBondType(
720        hStatus: IXA_STATUS_HANDLE,
721        hMolecule: IXA_MOL_HANDLE,
722        vBond: IXA_BONDID,
723    ) -> IXA_BOND_TYPE;
724    pub fn IXA_MOL_GetBondWedge(
725        hStatus: IXA_STATUS_HANDLE,
726        hMolecule: IXA_MOL_HANDLE,
727        vBond: IXA_BONDID,
728        vRefAtom: IXA_ATOMID,
729    ) -> IXA_BOND_WEDGE;
730    pub fn IXA_MOL_GetDblBondConfig(
731        hStatus: IXA_STATUS_HANDLE,
732        hMolecule: IXA_MOL_HANDLE,
733        vBond: IXA_BONDID,
734    ) -> IXA_DBLBOND_CONFIG;
735}
736
737// --- IXA stereo descriptor information -------------------------------------
738extern "C" {
739    pub fn IXA_MOL_GetNumStereos(
740        hStatus: IXA_STATUS_HANDLE,
741        hMolecule: IXA_MOL_HANDLE,
742    ) -> ::std::os::raw::c_int;
743    pub fn IXA_MOL_GetStereoId(
744        hStatus: IXA_STATUS_HANDLE,
745        hMolecule: IXA_MOL_HANDLE,
746        vStereoIndex: ::std::os::raw::c_int,
747    ) -> IXA_STEREOID;
748    pub fn IXA_MOL_GetStereoIndex(
749        hStatus: IXA_STATUS_HANDLE,
750        hMolecule: IXA_MOL_HANDLE,
751        vStereo: IXA_STEREOID,
752    ) -> ::std::os::raw::c_int;
753    pub fn IXA_MOL_GetStereoTopology(
754        hStatus: IXA_STATUS_HANDLE,
755        hMolecule: IXA_MOL_HANDLE,
756        vStereo: IXA_STEREOID,
757    ) -> IXA_STEREO_TOPOLOGY;
758    pub fn IXA_MOL_GetStereoCentralAtom(
759        hStatus: IXA_STATUS_HANDLE,
760        hMolecule: IXA_MOL_HANDLE,
761        vStereo: IXA_STEREOID,
762    ) -> IXA_ATOMID;
763    pub fn IXA_MOL_GetStereoCentralBond(
764        hStatus: IXA_STATUS_HANDLE,
765        hMolecule: IXA_MOL_HANDLE,
766        vStereo: IXA_STEREOID,
767    ) -> IXA_BONDID;
768    pub fn IXA_MOL_GetStereoNumVertices(
769        hStatus: IXA_STATUS_HANDLE,
770        hMolecule: IXA_MOL_HANDLE,
771        vStereo: IXA_STEREOID,
772    ) -> ::std::os::raw::c_int;
773    pub fn IXA_MOL_GetStereoVertex(
774        hStatus: IXA_STATUS_HANDLE,
775        hMolecule: IXA_MOL_HANDLE,
776        vStereo: IXA_STEREOID,
777        vVertexIndex: ::std::os::raw::c_int,
778    ) -> IXA_ATOMID;
779    pub fn IXA_MOL_GetStereoParity(
780        hStatus: IXA_STATUS_HANDLE,
781        hMolecule: IXA_MOL_HANDLE,
782        vStereo: IXA_STEREOID,
783    ) -> IXA_STEREO_PARITY;
784}
785
786// --- IXA InChI builder -----------------------------------------------------
787extern "C" {
788    pub fn IXA_INCHIBUILDER_Create(hStatus: IXA_STATUS_HANDLE) -> IXA_INCHIBUILDER_HANDLE;
789    pub fn IXA_INCHIBUILDER_SetMolecule(
790        hStatus: IXA_STATUS_HANDLE,
791        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
792        hMolecule: IXA_MOL_HANDLE,
793    );
794    pub fn IXA_INCHIBUILDER_GetInChIVersion(
795        vFullDescription: IXA_BOOL,
796    ) -> *const ::std::os::raw::c_char;
797    pub fn IXA_INCHIBUILDER_GetInChI(
798        hStatus: IXA_STATUS_HANDLE,
799        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
800    ) -> *const ::std::os::raw::c_char;
801    pub fn IXA_INCHIBUILDER_GetInChIEx(
802        hStatus: IXA_STATUS_HANDLE,
803        hBuilder: IXA_INCHIBUILDER_HANDLE,
804    ) -> *const ::std::os::raw::c_char;
805    pub fn IXA_INCHIBUILDER_GetAuxInfo(
806        hStatus: IXA_STATUS_HANDLE,
807        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
808    ) -> *const ::std::os::raw::c_char;
809    pub fn IXA_INCHIBUILDER_GetLog(
810        hStatus: IXA_STATUS_HANDLE,
811        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
812    ) -> *const ::std::os::raw::c_char;
813    pub fn IXA_INCHIBUILDER_Destroy(
814        hStatus: IXA_STATUS_HANDLE,
815        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
816    );
817    pub fn IXA_INCHIBUILDER_SetOption(
818        hStatus: IXA_STATUS_HANDLE,
819        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
820        vOption: IXA_INCHIBUILDER_OPTION,
821        vValue: IXA_BOOL,
822    );
823    pub fn IXA_INCHIBUILDER_SetOption_Stereo(
824        hStatus: IXA_STATUS_HANDLE,
825        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
826        vValue: IXA_INCHIBUILDER_STEREOOPTION,
827    );
828    pub fn IXA_INCHIBUILDER_SetOption_Timeout(
829        hStatus: IXA_STATUS_HANDLE,
830        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
831        vValue: ::std::os::raw::c_int,
832    );
833    pub fn IXA_INCHIBUILDER_SetOption_Timeout_MilliSeconds(
834        hStatus: IXA_STATUS_HANDLE,
835        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
836        vValue: ::std::os::raw::c_long,
837    );
838    pub fn IXA_INCHIBUILDER_CheckOption(
839        hStatus: IXA_STATUS_HANDLE,
840        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
841        vOption: IXA_INCHIBUILDER_OPTION,
842    ) -> IXA_BOOL;
843    pub fn IXA_INCHIBUILDER_CheckOption_Stereo(
844        hStatus: IXA_STATUS_HANDLE,
845        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
846        vValue: IXA_INCHIBUILDER_STEREOOPTION,
847    ) -> IXA_BOOL;
848    pub fn IXA_INCHIBUILDER_GetOption_Timeout_MilliSeconds(
849        hStatus: IXA_STATUS_HANDLE,
850        hInChIBuilder: IXA_INCHIBUILDER_HANDLE,
851    ) -> ::std::os::raw::c_long;
852}
853
854// --- IXA InChIKey builder --------------------------------------------------
855extern "C" {
856    pub fn IXA_INCHIKEYBUILDER_Create(hStatus: IXA_STATUS_HANDLE) -> IXA_INCHIKEYBUILDER_HANDLE;
857    pub fn IXA_INCHIKEYBUILDER_SetInChI(
858        hStatus: IXA_STATUS_HANDLE,
859        hInChIKeyBuilder: IXA_INCHIKEYBUILDER_HANDLE,
860        pInChI: *const ::std::os::raw::c_char,
861    );
862    pub fn IXA_INCHIKEYBUILDER_GetInChIKey(
863        hStatus: IXA_STATUS_HANDLE,
864        hInChIKeyBuilder: IXA_INCHIKEYBUILDER_HANDLE,
865    ) -> *const ::std::os::raw::c_char;
866    pub fn IXA_INCHIKEYBUILDER_Destroy(
867        hStatus: IXA_STATUS_HANDLE,
868        hInChIKeyBuilder: IXA_INCHIKEYBUILDER_HANDLE,
869    );
870}