Skip to main content

Crate inchi_sys

Crate inchi_sys 

Source
Expand description

Low-level, unsafe FFI bindings to the vendored IUPAC InChI 1.07 reference C library.

This crate is the unsafe foundation underneath the safe inchi crate. It exposes the raw C structs and extern "C" entry points (GetINCHI, GetINCHIKeyFromINCHI, MakeINCHIFromMolfileText, GetStructFromINCHI, the matching Free* deallocators, …) exactly as declared in the upstream inchi_api.h. The native C source is vendored and statically linked, so no system InChI installation is required.

Almost all users should depend on the high-level inchi crate instead. Everything here is unsafe and mirrors C ownership rules: any out parameter populated by a Get*/Make* call must be released with the corresponding Free* call to avoid leaking memory allocated by the C side.

§Bindings

By default the version-controlled, pre-generated bindings (produced by bindgen) are used, so no libclang is needed to build. Enable the regenerate-bindings feature to regenerate them from the vendored headers at build time.

§Safety & threading

The InChI C library keeps some static internal state and is not guaranteed to be thread-safe across concurrent calls. Callers of this crate are responsible for synchronization; the inchi crate provides it.

Structs§

inchi_InputEx
inchi_Input_Polymer
inchi_Input_PolymerUnit
inchi_Input_V3000
tagINCHIStereo0D
tagINCHI_Input
tagINCHI_InputINCHI
tagINCHI_Output
tagINCHI_OutputStruct
tagINCHI_OutputStructEx
tagInchiAtom
tagInchiInpData

Constants§

ATOM_EL_LEN
INCHIKEY_INVALID_LAYOUT
INCHIKEY_INVALID_LENGTH
INCHIKEY_INVALID_VERSION
INCHIKEY_VALID_NON_STANDARD
INCHIKEY_VALID_STANDARD
INCHI_BOND_STEREO_DOUBLE_EITHER
INCHI_BOND_STEREO_NONE
INCHI_BOND_STEREO_SINGLE_1DOWN
INCHI_BOND_STEREO_SINGLE_1EITHER
INCHI_BOND_STEREO_SINGLE_1UP
INCHI_BOND_STEREO_SINGLE_2DOWN
INCHI_BOND_STEREO_SINGLE_2EITHER
INCHI_BOND_STEREO_SINGLE_2UP
INCHI_BOND_TYPE_ALTERN
INCHI_BOND_TYPE_DOUBLE
INCHI_BOND_TYPE_NONE
INCHI_BOND_TYPE_SINGLE
INCHI_BOND_TYPE_TRIPLE
INCHI_FAIL_I2I
INCHI_INVALID_LAYOUT
INCHI_INVALID_PREFIX
INCHI_INVALID_VERSION
INCHI_NUM
INCHI_PARITY_EVEN
INCHI_PARITY_NONE
INCHI_PARITY_ODD
INCHI_PARITY_UNDEFINED
INCHI_PARITY_UNKNOWN
INCHI_RADICAL_DOUBLET
INCHI_RADICAL_NONE
INCHI_RADICAL_SINGLET
INCHI_RADICAL_TRIPLET
INCHI_STRING_PREFIX
INCHI_StereoType_Allene
INCHI_StereoType_DoubleBond
INCHI_StereoType_None
INCHI_StereoType_Tetrahedral
INCHI_VALID_BETA
INCHI_VALID_NON_STANDARD
INCHI_VALID_STANDARD
ISOTOPIC_SHIFT_FLAG
ISOTOPIC_SHIFT_MAX
MAXVAL
NO_ATOM
NUM_H_ISOTOPES
inchi_Ret_BREAK
inchi_Ret_BUSY
inchi_Ret_EOF
inchi_Ret_ERROR
inchi_Ret_FATAL
inchi_Ret_OKAY
inchi_Ret_SKIP
inchi_Ret_UNKNOWN
inchi_Ret_WARNING
mol2inchi_Ret_EOF
mol2inchi_Ret_ERROR
mol2inchi_Ret_ERROR_comp
mol2inchi_Ret_ERROR_get
mol2inchi_Ret_OKAY
mol2inchi_Ret_WARNING

Functions§

CheckINCHI
CheckINCHIKey
FreeINCHI
FreeStdINCHI
FreeStructFromINCHI
FreeStructFromINCHIEx
FreeStructFromStdINCHI
Free_inchi_Input
Free_std_inchi_Input
GetINCHI
GetINCHIEx
GetINCHIKeyFromINCHI
GetINCHIfromINCHI
GetStdINCHI
GetStdINCHIKeyFromStdINCHI
GetStringLength
GetStructFromINCHI
GetStructFromINCHIEx
GetStructFromStdINCHI
Get_inchi_Input_FromAuxInfo
Get_std_inchi_Input_FromAuxInfo
MakeINCHIFromMolfileText

Type Aliases§

AT_NUM
INCHI_MODES
InchiInpData
RetValCheckINCHI
RetValCheckINCHIKeyv
RetValGetINCHI
RetValMol2INCHI
S_CHAR
S_SHORT
inchi_Atom
inchi_BondStereo2D
inchi_BondType
inchi_Input
inchi_InputINCHI
inchi_Output
inchi_OutputStruct
inchi_OutputStructEx
inchi_Output_Polymer
inchi_Output_PolymerUnit
inchi_Output_V3000
inchi_Radical
inchi_Stereo0D
inchi_StereoParity0D
inchi_StereoType0D
tagINCHIBondStereo2D
tagINCHIBondType
tagINCHIRadical
tagINCHIStereoParity0D
tagINCHIStereoType0D
tagRetValCheckINCHI
tagRetValGetINCHI
tagRetValGetINCHIKey
tagRetValMOL2INCHI