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_
Input Ex - inchi_
Input_ Polymer - inchi_
Input_ Polymer Unit - inchi_
Input_ V3000 - tagINCHI
Stereo0D - tagINCHI_
Input - tagINCHI_
InputINCHI - tagINCHI_
Output - tagINCHI_
Output Struct - tagINCHI_
Output Struct Ex - tagInchi
Atom - tagInchi
InpData
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_
Stereo Type_ Allene - INCHI_
Stereo Type_ Double Bond - INCHI_
Stereo Type_ None - INCHI_
Stereo Type_ 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⚠
- CheckINCHI
Key ⚠ - FreeINCHI⚠
- Free
StdINCHI ⚠ - Free
Struct ⚠FromINCHI - Free
Struct ⚠FromINCHI Ex - Free
Struct ⚠From StdINCHI - Free_
inchi_ ⚠Input - Free_
std_ ⚠inchi_ Input - GetINCHI⚠
- GetINCHI
Ex ⚠ - GetINCHI
KeyFromINCHI ⚠ - GetINCH
IfromINCHI ⚠ - GetStdINCHI⚠
- GetStdINCHI
KeyFrom ⚠StdINCHI - GetString
Length ⚠ - GetStruct
FromINCHI ⚠ - GetStruct
FromINCHI ⚠Ex - GetStruct
From ⚠StdINCHI - Get_
inchi_ ⚠Input_ From AuxInfo - Get_
std_ ⚠inchi_ Input_ From AuxInfo - MakeINCHI
From ⚠Molfile Text
Type Aliases§
- AT_NUM
- INCHI_
MODES - Inchi
InpData - RetVal
CheckINCHI - RetVal
CheckINCHI Keyv - RetVal
GetINCHI - RetVal
Mol2INCHI - S_CHAR
- S_SHORT
- inchi_
Atom - inchi_
Bond Stereo2D - inchi_
Bond Type - inchi_
Input - inchi_
InputINCHI - inchi_
Output - inchi_
Output Struct - inchi_
Output Struct Ex - inchi_
Output_ Polymer - inchi_
Output_ Polymer Unit - inchi_
Output_ V3000 - inchi_
Radical - inchi_
Stereo0D - inchi_
Stereo Parity0D - inchi_
Stereo Type0D - tagINCHI
Bond Stereo2D - tagINCHI
Bond Type - tagINCHI
Radical - tagINCHI
Stereo Parity0D - tagINCHI
Stereo Type0D - tagRet
ValCheckINCHI - tagRet
ValGetINCHI - tagRet
ValGetINCHI Key - tagRet
ValMO L2INCHI