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}
53#[allow(clippy::unnecessary_operation, clippy::identity_op)]
54const _: () = {
55    ["Size of tagInchiAtom"][::std::mem::size_of::<tagInchiAtom>() - 120usize];
56    ["Alignment of tagInchiAtom"][::std::mem::align_of::<tagInchiAtom>() - 8usize];
57    ["Offset of field: tagInchiAtom::x"][::std::mem::offset_of!(tagInchiAtom, x) - 0usize];
58    ["Offset of field: tagInchiAtom::y"][::std::mem::offset_of!(tagInchiAtom, y) - 8usize];
59    ["Offset of field: tagInchiAtom::z"][::std::mem::offset_of!(tagInchiAtom, z) - 16usize];
60    ["Offset of field: tagInchiAtom::neighbor"]
61        [::std::mem::offset_of!(tagInchiAtom, neighbor) - 24usize];
62    ["Offset of field: tagInchiAtom::bond_type"]
63        [::std::mem::offset_of!(tagInchiAtom, bond_type) - 64usize];
64    ["Offset of field: tagInchiAtom::bond_stereo"]
65        [::std::mem::offset_of!(tagInchiAtom, bond_stereo) - 84usize];
66    ["Offset of field: tagInchiAtom::elname"]
67        [::std::mem::offset_of!(tagInchiAtom, elname) - 104usize];
68    ["Offset of field: tagInchiAtom::num_bonds"]
69        [::std::mem::offset_of!(tagInchiAtom, num_bonds) - 110usize];
70    ["Offset of field: tagInchiAtom::num_iso_H"]
71        [::std::mem::offset_of!(tagInchiAtom, num_iso_H) - 112usize];
72    ["Offset of field: tagInchiAtom::isotopic_mass"]
73        [::std::mem::offset_of!(tagInchiAtom, isotopic_mass) - 116usize];
74    ["Offset of field: tagInchiAtom::radical"]
75        [::std::mem::offset_of!(tagInchiAtom, radical) - 118usize];
76    ["Offset of field: tagInchiAtom::charge"]
77        [::std::mem::offset_of!(tagInchiAtom, charge) - 119usize];
78};
79pub type inchi_Atom = tagInchiAtom;
80pub const INCHI_StereoType_None: tagINCHIStereoType0D = 0;
81pub const INCHI_StereoType_DoubleBond: tagINCHIStereoType0D = 1;
82pub const INCHI_StereoType_Tetrahedral: tagINCHIStereoType0D = 2;
83pub const INCHI_StereoType_Allene: tagINCHIStereoType0D = 3;
84pub type tagINCHIStereoType0D = ::std::os::raw::c_uint;
85pub use self::tagINCHIStereoType0D as inchi_StereoType0D;
86pub const INCHI_PARITY_NONE: tagINCHIStereoParity0D = 0;
87pub const INCHI_PARITY_ODD: tagINCHIStereoParity0D = 1;
88pub const INCHI_PARITY_EVEN: tagINCHIStereoParity0D = 2;
89pub const INCHI_PARITY_UNKNOWN: tagINCHIStereoParity0D = 3;
90pub const INCHI_PARITY_UNDEFINED: tagINCHIStereoParity0D = 4;
91pub type tagINCHIStereoParity0D = ::std::os::raw::c_uint;
92pub use self::tagINCHIStereoParity0D as inchi_StereoParity0D;
93#[repr(C)]
94#[derive(Debug, Default, Copy, Clone)]
95pub struct tagINCHIStereo0D {
96    pub neighbor: [AT_NUM; 4usize],
97    pub central_atom: AT_NUM,
98    pub type_: S_CHAR,
99    pub parity: S_CHAR,
100}
101#[allow(clippy::unnecessary_operation, clippy::identity_op)]
102const _: () = {
103    ["Size of tagINCHIStereo0D"][::std::mem::size_of::<tagINCHIStereo0D>() - 12usize];
104    ["Alignment of tagINCHIStereo0D"][::std::mem::align_of::<tagINCHIStereo0D>() - 2usize];
105    ["Offset of field: tagINCHIStereo0D::neighbor"]
106        [::std::mem::offset_of!(tagINCHIStereo0D, neighbor) - 0usize];
107    ["Offset of field: tagINCHIStereo0D::central_atom"]
108        [::std::mem::offset_of!(tagINCHIStereo0D, central_atom) - 8usize];
109    ["Offset of field: tagINCHIStereo0D::type_"]
110        [::std::mem::offset_of!(tagINCHIStereo0D, type_) - 10usize];
111    ["Offset of field: tagINCHIStereo0D::parity"]
112        [::std::mem::offset_of!(tagINCHIStereo0D, parity) - 11usize];
113};
114pub type inchi_Stereo0D = tagINCHIStereo0D;
115#[repr(C)]
116#[derive(Debug, Copy, Clone)]
117pub struct tagINCHI_Input {
118    pub atom: *mut inchi_Atom,
119    pub stereo0D: *mut inchi_Stereo0D,
120    pub szOptions: *mut ::std::os::raw::c_char,
121    pub num_atoms: AT_NUM,
122    pub num_stereo0D: AT_NUM,
123}
124#[allow(clippy::unnecessary_operation, clippy::identity_op)]
125const _: () = {
126    ["Size of tagINCHI_Input"][::std::mem::size_of::<tagINCHI_Input>() - 32usize];
127    ["Alignment of tagINCHI_Input"][::std::mem::align_of::<tagINCHI_Input>() - 8usize];
128    ["Offset of field: tagINCHI_Input::atom"]
129        [::std::mem::offset_of!(tagINCHI_Input, atom) - 0usize];
130    ["Offset of field: tagINCHI_Input::stereo0D"]
131        [::std::mem::offset_of!(tagINCHI_Input, stereo0D) - 8usize];
132    ["Offset of field: tagINCHI_Input::szOptions"]
133        [::std::mem::offset_of!(tagINCHI_Input, szOptions) - 16usize];
134    ["Offset of field: tagINCHI_Input::num_atoms"]
135        [::std::mem::offset_of!(tagINCHI_Input, num_atoms) - 24usize];
136    ["Offset of field: tagINCHI_Input::num_stereo0D"]
137        [::std::mem::offset_of!(tagINCHI_Input, num_stereo0D) - 26usize];
138};
139impl Default for tagINCHI_Input {
140    fn default() -> Self {
141        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
142        unsafe {
143            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
144            s.assume_init()
145        }
146    }
147}
148pub type inchi_Input = tagINCHI_Input;
149#[repr(C)]
150#[derive(Debug, Copy, Clone)]
151pub struct inchi_Input_PolymerUnit {
152    pub id: ::std::os::raw::c_int,
153    pub type_: ::std::os::raw::c_int,
154    pub subtype: ::std::os::raw::c_int,
155    pub conn: ::std::os::raw::c_int,
156    pub label: ::std::os::raw::c_int,
157    pub na: ::std::os::raw::c_int,
158    pub nb: ::std::os::raw::c_int,
159    pub xbr1: [f64; 4usize],
160    pub xbr2: [f64; 4usize],
161    pub smt: [::std::os::raw::c_char; 80usize],
162    pub alist: *mut ::std::os::raw::c_int,
163    pub blist: *mut ::std::os::raw::c_int,
164}
165#[allow(clippy::unnecessary_operation, clippy::identity_op)]
166const _: () = {
167    ["Size of inchi_Input_PolymerUnit"]
168        [::std::mem::size_of::<inchi_Input_PolymerUnit>() - 192usize];
169    ["Alignment of inchi_Input_PolymerUnit"]
170        [::std::mem::align_of::<inchi_Input_PolymerUnit>() - 8usize];
171    ["Offset of field: inchi_Input_PolymerUnit::id"]
172        [::std::mem::offset_of!(inchi_Input_PolymerUnit, id) - 0usize];
173    ["Offset of field: inchi_Input_PolymerUnit::type_"]
174        [::std::mem::offset_of!(inchi_Input_PolymerUnit, type_) - 4usize];
175    ["Offset of field: inchi_Input_PolymerUnit::subtype"]
176        [::std::mem::offset_of!(inchi_Input_PolymerUnit, subtype) - 8usize];
177    ["Offset of field: inchi_Input_PolymerUnit::conn"]
178        [::std::mem::offset_of!(inchi_Input_PolymerUnit, conn) - 12usize];
179    ["Offset of field: inchi_Input_PolymerUnit::label"]
180        [::std::mem::offset_of!(inchi_Input_PolymerUnit, label) - 16usize];
181    ["Offset of field: inchi_Input_PolymerUnit::na"]
182        [::std::mem::offset_of!(inchi_Input_PolymerUnit, na) - 20usize];
183    ["Offset of field: inchi_Input_PolymerUnit::nb"]
184        [::std::mem::offset_of!(inchi_Input_PolymerUnit, nb) - 24usize];
185    ["Offset of field: inchi_Input_PolymerUnit::xbr1"]
186        [::std::mem::offset_of!(inchi_Input_PolymerUnit, xbr1) - 32usize];
187    ["Offset of field: inchi_Input_PolymerUnit::xbr2"]
188        [::std::mem::offset_of!(inchi_Input_PolymerUnit, xbr2) - 64usize];
189    ["Offset of field: inchi_Input_PolymerUnit::smt"]
190        [::std::mem::offset_of!(inchi_Input_PolymerUnit, smt) - 96usize];
191    ["Offset of field: inchi_Input_PolymerUnit::alist"]
192        [::std::mem::offset_of!(inchi_Input_PolymerUnit, alist) - 176usize];
193    ["Offset of field: inchi_Input_PolymerUnit::blist"]
194        [::std::mem::offset_of!(inchi_Input_PolymerUnit, blist) - 184usize];
195};
196impl Default for inchi_Input_PolymerUnit {
197    fn default() -> Self {
198        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
199        unsafe {
200            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
201            s.assume_init()
202        }
203    }
204}
205#[repr(C)]
206#[derive(Debug, Copy, Clone)]
207pub struct inchi_Input_Polymer {
208    pub units: *mut *mut inchi_Input_PolymerUnit,
209    pub n: ::std::os::raw::c_int,
210}
211#[allow(clippy::unnecessary_operation, clippy::identity_op)]
212const _: () = {
213    ["Size of inchi_Input_Polymer"][::std::mem::size_of::<inchi_Input_Polymer>() - 16usize];
214    ["Alignment of inchi_Input_Polymer"][::std::mem::align_of::<inchi_Input_Polymer>() - 8usize];
215    ["Offset of field: inchi_Input_Polymer::units"]
216        [::std::mem::offset_of!(inchi_Input_Polymer, units) - 0usize];
217    ["Offset of field: inchi_Input_Polymer::n"]
218        [::std::mem::offset_of!(inchi_Input_Polymer, n) - 8usize];
219};
220impl Default for inchi_Input_Polymer {
221    fn default() -> Self {
222        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
223        unsafe {
224            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
225            s.assume_init()
226        }
227    }
228}
229#[repr(C)]
230#[derive(Debug, Copy, Clone)]
231pub struct inchi_Input_V3000 {
232    pub n_non_star_atoms: ::std::os::raw::c_int,
233    pub n_star_atoms: ::std::os::raw::c_int,
234    pub atom_index_orig: *mut ::std::os::raw::c_int,
235    pub atom_index_fin: *mut ::std::os::raw::c_int,
236    pub n_sgroups: ::std::os::raw::c_int,
237    pub n_3d_constraints: ::std::os::raw::c_int,
238    pub n_collections: ::std::os::raw::c_int,
239    pub n_non_haptic_bonds: ::std::os::raw::c_int,
240    pub n_haptic_bonds: ::std::os::raw::c_int,
241    pub lists_haptic_bonds: *mut *mut ::std::os::raw::c_int,
242    pub n_steabs: ::std::os::raw::c_int,
243    pub lists_steabs: *mut *mut ::std::os::raw::c_int,
244    pub n_sterel: ::std::os::raw::c_int,
245    pub lists_sterel: *mut *mut ::std::os::raw::c_int,
246    pub n_sterac: ::std::os::raw::c_int,
247    pub lists_sterac: *mut *mut ::std::os::raw::c_int,
248}
249#[allow(clippy::unnecessary_operation, clippy::identity_op)]
250const _: () = {
251    ["Size of inchi_Input_V3000"][::std::mem::size_of::<inchi_Input_V3000>() - 104usize];
252    ["Alignment of inchi_Input_V3000"][::std::mem::align_of::<inchi_Input_V3000>() - 8usize];
253    ["Offset of field: inchi_Input_V3000::n_non_star_atoms"]
254        [::std::mem::offset_of!(inchi_Input_V3000, n_non_star_atoms) - 0usize];
255    ["Offset of field: inchi_Input_V3000::n_star_atoms"]
256        [::std::mem::offset_of!(inchi_Input_V3000, n_star_atoms) - 4usize];
257    ["Offset of field: inchi_Input_V3000::atom_index_orig"]
258        [::std::mem::offset_of!(inchi_Input_V3000, atom_index_orig) - 8usize];
259    ["Offset of field: inchi_Input_V3000::atom_index_fin"]
260        [::std::mem::offset_of!(inchi_Input_V3000, atom_index_fin) - 16usize];
261    ["Offset of field: inchi_Input_V3000::n_sgroups"]
262        [::std::mem::offset_of!(inchi_Input_V3000, n_sgroups) - 24usize];
263    ["Offset of field: inchi_Input_V3000::n_3d_constraints"]
264        [::std::mem::offset_of!(inchi_Input_V3000, n_3d_constraints) - 28usize];
265    ["Offset of field: inchi_Input_V3000::n_collections"]
266        [::std::mem::offset_of!(inchi_Input_V3000, n_collections) - 32usize];
267    ["Offset of field: inchi_Input_V3000::n_non_haptic_bonds"]
268        [::std::mem::offset_of!(inchi_Input_V3000, n_non_haptic_bonds) - 36usize];
269    ["Offset of field: inchi_Input_V3000::n_haptic_bonds"]
270        [::std::mem::offset_of!(inchi_Input_V3000, n_haptic_bonds) - 40usize];
271    ["Offset of field: inchi_Input_V3000::lists_haptic_bonds"]
272        [::std::mem::offset_of!(inchi_Input_V3000, lists_haptic_bonds) - 48usize];
273    ["Offset of field: inchi_Input_V3000::n_steabs"]
274        [::std::mem::offset_of!(inchi_Input_V3000, n_steabs) - 56usize];
275    ["Offset of field: inchi_Input_V3000::lists_steabs"]
276        [::std::mem::offset_of!(inchi_Input_V3000, lists_steabs) - 64usize];
277    ["Offset of field: inchi_Input_V3000::n_sterel"]
278        [::std::mem::offset_of!(inchi_Input_V3000, n_sterel) - 72usize];
279    ["Offset of field: inchi_Input_V3000::lists_sterel"]
280        [::std::mem::offset_of!(inchi_Input_V3000, lists_sterel) - 80usize];
281    ["Offset of field: inchi_Input_V3000::n_sterac"]
282        [::std::mem::offset_of!(inchi_Input_V3000, n_sterac) - 88usize];
283    ["Offset of field: inchi_Input_V3000::lists_sterac"]
284        [::std::mem::offset_of!(inchi_Input_V3000, lists_sterac) - 96usize];
285};
286impl Default for inchi_Input_V3000 {
287    fn default() -> Self {
288        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
289        unsafe {
290            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
291            s.assume_init()
292        }
293    }
294}
295#[repr(C)]
296#[derive(Debug, Copy, Clone)]
297pub struct inchi_InputEx {
298    pub atom: *mut inchi_Atom,
299    pub stereo0D: *mut inchi_Stereo0D,
300    pub szOptions: *mut ::std::os::raw::c_char,
301    pub num_atoms: AT_NUM,
302    pub num_stereo0D: AT_NUM,
303    pub polymer: *mut inchi_Input_Polymer,
304    pub v3000: *mut inchi_Input_V3000,
305}
306#[allow(clippy::unnecessary_operation, clippy::identity_op)]
307const _: () = {
308    ["Size of inchi_InputEx"][::std::mem::size_of::<inchi_InputEx>() - 48usize];
309    ["Alignment of inchi_InputEx"][::std::mem::align_of::<inchi_InputEx>() - 8usize];
310    ["Offset of field: inchi_InputEx::atom"][::std::mem::offset_of!(inchi_InputEx, atom) - 0usize];
311    ["Offset of field: inchi_InputEx::stereo0D"]
312        [::std::mem::offset_of!(inchi_InputEx, stereo0D) - 8usize];
313    ["Offset of field: inchi_InputEx::szOptions"]
314        [::std::mem::offset_of!(inchi_InputEx, szOptions) - 16usize];
315    ["Offset of field: inchi_InputEx::num_atoms"]
316        [::std::mem::offset_of!(inchi_InputEx, num_atoms) - 24usize];
317    ["Offset of field: inchi_InputEx::num_stereo0D"]
318        [::std::mem::offset_of!(inchi_InputEx, num_stereo0D) - 26usize];
319    ["Offset of field: inchi_InputEx::polymer"]
320        [::std::mem::offset_of!(inchi_InputEx, polymer) - 32usize];
321    ["Offset of field: inchi_InputEx::v3000"]
322        [::std::mem::offset_of!(inchi_InputEx, v3000) - 40usize];
323};
324impl Default for inchi_InputEx {
325    fn default() -> Self {
326        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
327        unsafe {
328            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
329            s.assume_init()
330        }
331    }
332}
333#[repr(C)]
334#[derive(Debug, Copy, Clone)]
335pub struct tagINCHI_InputINCHI {
336    pub szInChI: *mut ::std::os::raw::c_char,
337    pub szOptions: *mut ::std::os::raw::c_char,
338}
339#[allow(clippy::unnecessary_operation, clippy::identity_op)]
340const _: () = {
341    ["Size of tagINCHI_InputINCHI"][::std::mem::size_of::<tagINCHI_InputINCHI>() - 16usize];
342    ["Alignment of tagINCHI_InputINCHI"][::std::mem::align_of::<tagINCHI_InputINCHI>() - 8usize];
343    ["Offset of field: tagINCHI_InputINCHI::szInChI"]
344        [::std::mem::offset_of!(tagINCHI_InputINCHI, szInChI) - 0usize];
345    ["Offset of field: tagINCHI_InputINCHI::szOptions"]
346        [::std::mem::offset_of!(tagINCHI_InputINCHI, szOptions) - 8usize];
347};
348impl Default for tagINCHI_InputINCHI {
349    fn default() -> Self {
350        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
351        unsafe {
352            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
353            s.assume_init()
354        }
355    }
356}
357pub type inchi_InputINCHI = tagINCHI_InputINCHI;
358pub type inchi_Output_PolymerUnit = inchi_Input_PolymerUnit;
359pub type inchi_Output_Polymer = inchi_Input_Polymer;
360pub type inchi_Output_V3000 = inchi_Input_V3000;
361#[repr(C)]
362#[derive(Debug, Copy, Clone)]
363pub struct tagINCHI_Output {
364    pub szInChI: *mut ::std::os::raw::c_char,
365    pub szAuxInfo: *mut ::std::os::raw::c_char,
366    pub szMessage: *mut ::std::os::raw::c_char,
367    pub szLog: *mut ::std::os::raw::c_char,
368}
369#[allow(clippy::unnecessary_operation, clippy::identity_op)]
370const _: () = {
371    ["Size of tagINCHI_Output"][::std::mem::size_of::<tagINCHI_Output>() - 32usize];
372    ["Alignment of tagINCHI_Output"][::std::mem::align_of::<tagINCHI_Output>() - 8usize];
373    ["Offset of field: tagINCHI_Output::szInChI"]
374        [::std::mem::offset_of!(tagINCHI_Output, szInChI) - 0usize];
375    ["Offset of field: tagINCHI_Output::szAuxInfo"]
376        [::std::mem::offset_of!(tagINCHI_Output, szAuxInfo) - 8usize];
377    ["Offset of field: tagINCHI_Output::szMessage"]
378        [::std::mem::offset_of!(tagINCHI_Output, szMessage) - 16usize];
379    ["Offset of field: tagINCHI_Output::szLog"]
380        [::std::mem::offset_of!(tagINCHI_Output, szLog) - 24usize];
381};
382impl Default for tagINCHI_Output {
383    fn default() -> Self {
384        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
385        unsafe {
386            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
387            s.assume_init()
388        }
389    }
390}
391pub type inchi_Output = tagINCHI_Output;
392#[repr(C)]
393#[derive(Debug, Copy, Clone)]
394pub struct tagINCHI_OutputStruct {
395    pub atom: *mut inchi_Atom,
396    pub stereo0D: *mut inchi_Stereo0D,
397    pub num_atoms: AT_NUM,
398    pub num_stereo0D: AT_NUM,
399    pub szMessage: *mut ::std::os::raw::c_char,
400    pub szLog: *mut ::std::os::raw::c_char,
401    pub WarningFlags: [[::std::os::raw::c_ulong; 2usize]; 2usize],
402}
403#[allow(clippy::unnecessary_operation, clippy::identity_op)]
404const _: () = {
405    ["Size of tagINCHI_OutputStruct"][::std::mem::size_of::<tagINCHI_OutputStruct>() - 72usize];
406    ["Alignment of tagINCHI_OutputStruct"]
407        [::std::mem::align_of::<tagINCHI_OutputStruct>() - 8usize];
408    ["Offset of field: tagINCHI_OutputStruct::atom"]
409        [::std::mem::offset_of!(tagINCHI_OutputStruct, atom) - 0usize];
410    ["Offset of field: tagINCHI_OutputStruct::stereo0D"]
411        [::std::mem::offset_of!(tagINCHI_OutputStruct, stereo0D) - 8usize];
412    ["Offset of field: tagINCHI_OutputStruct::num_atoms"]
413        [::std::mem::offset_of!(tagINCHI_OutputStruct, num_atoms) - 16usize];
414    ["Offset of field: tagINCHI_OutputStruct::num_stereo0D"]
415        [::std::mem::offset_of!(tagINCHI_OutputStruct, num_stereo0D) - 18usize];
416    ["Offset of field: tagINCHI_OutputStruct::szMessage"]
417        [::std::mem::offset_of!(tagINCHI_OutputStruct, szMessage) - 24usize];
418    ["Offset of field: tagINCHI_OutputStruct::szLog"]
419        [::std::mem::offset_of!(tagINCHI_OutputStruct, szLog) - 32usize];
420    ["Offset of field: tagINCHI_OutputStruct::WarningFlags"]
421        [::std::mem::offset_of!(tagINCHI_OutputStruct, WarningFlags) - 40usize];
422};
423impl Default for tagINCHI_OutputStruct {
424    fn default() -> Self {
425        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
426        unsafe {
427            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
428            s.assume_init()
429        }
430    }
431}
432pub type inchi_OutputStruct = tagINCHI_OutputStruct;
433#[repr(C)]
434#[derive(Debug, Copy, Clone)]
435pub struct tagINCHI_OutputStructEx {
436    pub atom: *mut inchi_Atom,
437    pub stereo0D: *mut inchi_Stereo0D,
438    pub num_atoms: AT_NUM,
439    pub num_stereo0D: AT_NUM,
440    pub szMessage: *mut ::std::os::raw::c_char,
441    pub szLog: *mut ::std::os::raw::c_char,
442    pub WarningFlags: [[::std::os::raw::c_ulong; 2usize]; 2usize],
443    pub polymer: *mut inchi_Output_Polymer,
444    pub v3000: *mut inchi_Output_V3000,
445}
446#[allow(clippy::unnecessary_operation, clippy::identity_op)]
447const _: () = {
448    ["Size of tagINCHI_OutputStructEx"][::std::mem::size_of::<tagINCHI_OutputStructEx>() - 88usize];
449    ["Alignment of tagINCHI_OutputStructEx"]
450        [::std::mem::align_of::<tagINCHI_OutputStructEx>() - 8usize];
451    ["Offset of field: tagINCHI_OutputStructEx::atom"]
452        [::std::mem::offset_of!(tagINCHI_OutputStructEx, atom) - 0usize];
453    ["Offset of field: tagINCHI_OutputStructEx::stereo0D"]
454        [::std::mem::offset_of!(tagINCHI_OutputStructEx, stereo0D) - 8usize];
455    ["Offset of field: tagINCHI_OutputStructEx::num_atoms"]
456        [::std::mem::offset_of!(tagINCHI_OutputStructEx, num_atoms) - 16usize];
457    ["Offset of field: tagINCHI_OutputStructEx::num_stereo0D"]
458        [::std::mem::offset_of!(tagINCHI_OutputStructEx, num_stereo0D) - 18usize];
459    ["Offset of field: tagINCHI_OutputStructEx::szMessage"]
460        [::std::mem::offset_of!(tagINCHI_OutputStructEx, szMessage) - 24usize];
461    ["Offset of field: tagINCHI_OutputStructEx::szLog"]
462        [::std::mem::offset_of!(tagINCHI_OutputStructEx, szLog) - 32usize];
463    ["Offset of field: tagINCHI_OutputStructEx::WarningFlags"]
464        [::std::mem::offset_of!(tagINCHI_OutputStructEx, WarningFlags) - 40usize];
465    ["Offset of field: tagINCHI_OutputStructEx::polymer"]
466        [::std::mem::offset_of!(tagINCHI_OutputStructEx, polymer) - 72usize];
467    ["Offset of field: tagINCHI_OutputStructEx::v3000"]
468        [::std::mem::offset_of!(tagINCHI_OutputStructEx, v3000) - 80usize];
469};
470impl Default for tagINCHI_OutputStructEx {
471    fn default() -> Self {
472        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
473        unsafe {
474            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
475            s.assume_init()
476        }
477    }
478}
479pub type inchi_OutputStructEx = tagINCHI_OutputStructEx;
480pub const inchi_Ret_BREAK: tagRetValGetINCHI = -100;
481pub const inchi_Ret_SKIP: tagRetValGetINCHI = -2;
482pub const inchi_Ret_EOF: tagRetValGetINCHI = -1;
483pub const inchi_Ret_OKAY: tagRetValGetINCHI = 0;
484pub const inchi_Ret_WARNING: tagRetValGetINCHI = 1;
485pub const inchi_Ret_ERROR: tagRetValGetINCHI = 2;
486pub const inchi_Ret_FATAL: tagRetValGetINCHI = 3;
487pub const inchi_Ret_UNKNOWN: tagRetValGetINCHI = 4;
488pub const inchi_Ret_BUSY: tagRetValGetINCHI = 5;
489pub type tagRetValGetINCHI = ::std::os::raw::c_int;
490pub use self::tagRetValGetINCHI as RetValGetINCHI;
491pub const mol2inchi_Ret_OKAY: tagRetValMOL2INCHI = 0;
492pub const mol2inchi_Ret_WARNING: tagRetValMOL2INCHI = 1;
493pub const mol2inchi_Ret_EOF: tagRetValMOL2INCHI = -1;
494pub const mol2inchi_Ret_ERROR: tagRetValMOL2INCHI = 2;
495pub const mol2inchi_Ret_ERROR_get: tagRetValMOL2INCHI = 4;
496pub const mol2inchi_Ret_ERROR_comp: tagRetValMOL2INCHI = 5;
497pub type tagRetValMOL2INCHI = ::std::os::raw::c_int;
498pub use self::tagRetValMOL2INCHI as RetValMol2INCHI;
499pub const INCHI_VALID_STANDARD: tagRetValCheckINCHI = 0;
500pub const INCHI_VALID_NON_STANDARD: tagRetValCheckINCHI = 1;
501pub const INCHI_VALID_BETA: tagRetValCheckINCHI = 2;
502pub const INCHI_INVALID_PREFIX: tagRetValCheckINCHI = 3;
503pub const INCHI_INVALID_VERSION: tagRetValCheckINCHI = 4;
504pub const INCHI_INVALID_LAYOUT: tagRetValCheckINCHI = 5;
505pub const INCHI_FAIL_I2I: tagRetValCheckINCHI = 6;
506pub type tagRetValCheckINCHI = ::std::os::raw::c_uint;
507pub use self::tagRetValCheckINCHI as RetValCheckINCHI;
508extern "C" {
509    pub fn GetINCHI(inp: *mut inchi_Input, out: *mut inchi_Output) -> ::std::os::raw::c_int;
510}
511extern "C" {
512    pub fn GetStdINCHI(inp: *mut inchi_Input, out: *mut inchi_Output) -> ::std::os::raw::c_int;
513}
514extern "C" {
515    pub fn GetINCHIEx(inp: *mut inchi_InputEx, out: *mut inchi_Output) -> ::std::os::raw::c_int;
516}
517extern "C" {
518    pub fn FreeINCHI(out: *mut inchi_Output);
519}
520extern "C" {
521    pub fn FreeStdINCHI(out: *mut inchi_Output);
522}
523extern "C" {
524    pub fn GetStringLength(p: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
525}
526extern "C" {
527    pub fn GetStructFromINCHI(
528        inpInChI: *mut inchi_InputINCHI,
529        outStruct: *mut inchi_OutputStruct,
530    ) -> ::std::os::raw::c_int;
531}
532extern "C" {
533    pub fn GetStructFromStdINCHI(
534        inpInChI: *mut inchi_InputINCHI,
535        outStruct: *mut inchi_OutputStruct,
536    ) -> ::std::os::raw::c_int;
537}
538extern "C" {
539    pub fn GetStructFromINCHIEx(
540        inpInChI: *mut inchi_InputINCHI,
541        outStruct: *mut inchi_OutputStructEx,
542    ) -> ::std::os::raw::c_int;
543}
544extern "C" {
545    pub fn FreeStructFromINCHI(out: *mut inchi_OutputStruct);
546}
547extern "C" {
548    pub fn FreeStructFromStdINCHI(out: *mut inchi_OutputStruct);
549}
550extern "C" {
551    pub fn FreeStructFromINCHIEx(out: *mut inchi_OutputStructEx);
552}
553extern "C" {
554    pub fn GetINCHIfromINCHI(
555        inpInChI: *mut inchi_InputINCHI,
556        out: *mut inchi_Output,
557    ) -> ::std::os::raw::c_int;
558}
559#[repr(C)]
560#[derive(Debug, Copy, Clone)]
561pub struct tagInchiInpData {
562    pub pInp: *mut inchi_Input,
563    pub bChiral: ::std::os::raw::c_int,
564    pub szErrMsg: [::std::os::raw::c_char; 256usize],
565}
566#[allow(clippy::unnecessary_operation, clippy::identity_op)]
567const _: () = {
568    ["Size of tagInchiInpData"][::std::mem::size_of::<tagInchiInpData>() - 272usize];
569    ["Alignment of tagInchiInpData"][::std::mem::align_of::<tagInchiInpData>() - 8usize];
570    ["Offset of field: tagInchiInpData::pInp"]
571        [::std::mem::offset_of!(tagInchiInpData, pInp) - 0usize];
572    ["Offset of field: tagInchiInpData::bChiral"]
573        [::std::mem::offset_of!(tagInchiInpData, bChiral) - 8usize];
574    ["Offset of field: tagInchiInpData::szErrMsg"]
575        [::std::mem::offset_of!(tagInchiInpData, szErrMsg) - 12usize];
576};
577impl Default for tagInchiInpData {
578    fn default() -> Self {
579        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
580        unsafe {
581            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
582            s.assume_init()
583        }
584    }
585}
586pub type InchiInpData = tagInchiInpData;
587extern "C" {
588    pub fn Get_inchi_Input_FromAuxInfo(
589        szInchiAuxInfo: *mut ::std::os::raw::c_char,
590        bDoNotAddH: ::std::os::raw::c_int,
591        bDiffUnkUndfStereo: ::std::os::raw::c_int,
592        pInchiInp: *mut InchiInpData,
593    ) -> ::std::os::raw::c_int;
594}
595extern "C" {
596    pub fn Get_std_inchi_Input_FromAuxInfo(
597        szInchiAuxInfo: *mut ::std::os::raw::c_char,
598        bDoNotAddH: ::std::os::raw::c_int,
599        pInchiInp: *mut InchiInpData,
600    ) -> ::std::os::raw::c_int;
601}
602extern "C" {
603    pub fn Free_inchi_Input(pInp: *mut inchi_Input);
604}
605extern "C" {
606    pub fn Free_std_inchi_Input(pInp: *mut inchi_Input);
607}
608extern "C" {
609    pub fn CheckINCHI(
610        szINCHI: *const ::std::os::raw::c_char,
611        strict: ::std::os::raw::c_int,
612    ) -> ::std::os::raw::c_int;
613}
614pub const INCHIKEY_VALID_STANDARD: tagRetValGetINCHIKey = 0;
615pub const INCHIKEY_VALID_NON_STANDARD: tagRetValGetINCHIKey = -1;
616pub const INCHIKEY_INVALID_LENGTH: tagRetValGetINCHIKey = 1;
617pub const INCHIKEY_INVALID_LAYOUT: tagRetValGetINCHIKey = 2;
618pub const INCHIKEY_INVALID_VERSION: tagRetValGetINCHIKey = 3;
619pub type tagRetValGetINCHIKey = ::std::os::raw::c_int;
620pub use self::tagRetValGetINCHIKey as RetValCheckINCHIKeyv;
621extern "C" {
622    pub fn GetINCHIKeyFromINCHI(
623        szINCHISource: *const ::std::os::raw::c_char,
624        xtra1: ::std::os::raw::c_int,
625        xtra2: ::std::os::raw::c_int,
626        szINCHIKey: *mut ::std::os::raw::c_char,
627        szXtra1: *mut ::std::os::raw::c_char,
628        szXtra2: *mut ::std::os::raw::c_char,
629    ) -> ::std::os::raw::c_int;
630}
631extern "C" {
632    pub fn GetStdINCHIKeyFromStdINCHI(
633        szINCHISource: *const ::std::os::raw::c_char,
634        szINCHIKey: *mut ::std::os::raw::c_char,
635    ) -> ::std::os::raw::c_int;
636}
637extern "C" {
638    pub fn CheckINCHIKey(szINCHIKey: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
639}
640pub type INCHI_MODES = ::std::os::raw::c_ulong;
641extern "C" {
642    pub fn MakeINCHIFromMolfileText(
643        moltext: *const ::std::os::raw::c_char,
644        options: *mut ::std::os::raw::c_char,
645        result: *mut inchi_Output,
646    ) -> ::std::os::raw::c_int;
647}