11#ifndef FIND_RING_SYSTEMS
12#define FIND_RING_SYSTEMS 1
14#ifndef FIND_RINS_SYSTEMS_DISTANCES
15#define FIND_RINS_SYSTEMS_DISTANCES 0
19#ifndef FIX_DOCANON_RETCODE_RESET_BUG
20#define FIX_DOCANON_RETCODE_RESET_BUG 1
72#define NUM_H_ISOTOPES 3
73#define ISOTOPIC_SHIFT_FLAG 10000
75#define ISOTOPIC_SHIFT_MAX 100
77#ifndef INCHI_US_CHAR_DEF
80#define INCHI_US_CHAR_DEF
83#ifndef INCHI_US_SHORT_DEF
86#define INCHI_US_SHORT_DEF
656#if (defined( _WIN32 ) && defined( _MSC_VER ) && defined(BUILD_LINK_AS_DLL) )
660#define INCHI_API __declspec(dllexport)
661#define EXPIMP_TEMPLATE
665#define INCHI_API __declspec(dllimport)
666#define EXPIMP_TEMPLATE extern
672#define EXPIMP_TEMPLATE
730#ifndef COMPILE_ALL_CPP
738#define INCHI_STRING_PREFIX "InChI="
739#define LEN_INCHI_STRING_PREFIX 6
869#ifndef COMPILE_ALL_CPP
885#define STR_ERR_LEN 256
895#ifndef COMPILE_ALL_CPP
922 char* szInchiAuxInfo,
924 int bDiffUnkUndfStereo,
962#ifndef COMPILE_ALL_CPP
1015#define INCHIKEY_OK 0
1016#define INCHIKEY_UNKNOWN_ERROR 1
1017#define INCHIKEY_EMPTY_INPUT 2
1018#define INCHIKEY_INVALID_INCHI_PREFIX 3
1019#define INCHIKEY_NOT_ENOUGH_MEMORY 4
1020#define INCHIKEY_INVALID_INCHI 20
1021#define INCHIKEY_INVALID_STD_INCHI 21
1042#ifndef COMPILE_ALL_CPP
1113#ifndef COMPILE_ALL_CPP
1137#ifndef MAX_NUM_STEREO_ATOM_NEIGH
1138#define MAX_NUM_STEREO_ATOM_NEIGH 4
1140#ifndef MAX_NUM_STEREO_BONDS
1141#define MAX_NUM_STEREO_BONDS 3
1195#if ( FIND_RING_SYSTEMS == 1 )
1201#if ( FIND_RINS_SYSTEMS_DISTANCES == 1 )
1261#ifndef COMPILE_ALL_CPP
1372#ifndef COMPILE_ALL_CPP
void FreeInChIExtInput(inchi_Input_Polymer *polymer, inchi_Input_V3000 *v3000)
Definition inchi_dll.c:2888
unsigned short AT_NUMBR
Definition inchi_api.h:1148
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStructFromStdINCHI(inchi_InputINCHI *inpInChI, inchi_OutputStruct *outStruct)
Definition inchi_dll.c:2426
signed char S_CHAR
Definition inchi_api.h:78
unsigned short U_SHORT
Definition inchi_api.h:85
void * INCHIGEN_HANDLE
Definition inchi_api.h:1251
EXPIMP_TEMPLATE INCHI_API INCHIGEN_HANDLE INCHI_DECL INCHIGEN_Create(void)
Definition inchi_dll_a.c:95
signed short NUM_HS
Definition inchi_api.h:1149
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL STDINCHIGEN_DoCanonicalization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData)
Definition inchi_dll_a.c:655
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL MakeINCHIFromMolfileText(const char *moltext, char *options, inchi_Output *result)
Definition inchi_dll_b.c:93
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStringLength(char *p)
Definition inchi_dll.c:2051
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL FreeStructFromINCHIEx(inchi_OutputStructEx *out)
Definition inchi_dll.c:2857
enum tagINCHIStereoType0D inchi_StereoType0D
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetINCHIKeyFromINCHI(const char *szINCHISource, const int xtra1, const int xtra2, char *szINCHIKey, char *szXtra1, char *szXtra2)
Definition ikey_dll.c:71
#define NUM_H_ISOTOPES
Definition inchi_api.h:72
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetINCHIEx(inchi_InputEx *inp, inchi_Output *out)
Definition inchi_dll.c:290
inchi_Input_PolymerUnit inchi_Output_PolymerUnit
Definition inchi_api.h:564
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL STDINCHIGEN_Destroy(INCHIGEN_HANDLE HGen)
Definition inchi_dll_a.c:1273
tagRetValGetINCHIKey
Definition inchi_api.h:1026
@ INCHIKEY_INVALID_LAYOUT
Definition inchi_api.h:1030
@ INCHIKEY_VALID_NON_STANDARD
Definition inchi_api.h:1028
@ INCHIKEY_INVALID_LENGTH
Definition inchi_api.h:1029
@ INCHIKEY_INVALID_VERSION
Definition inchi_api.h:1031
@ INCHIKEY_VALID_STANDARD
Definition inchi_api.h:1027
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL Free_std_inchi_Input(inchi_Input *pInp)
Definition ichilnct.c:147
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStructFromINCHI(inchi_InputINCHI *inpInChI, inchi_OutputStruct *outStruct)
Definition inchi_dll.c:2821
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL INCHIGEN_DoNormalization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData)
Definition inchi_dll_a.c:407
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL INCHIGEN_DoSerialization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Output *pResults)
Definition inchi_dll_a.c:834
unsigned char U_CHAR
Definition inchi_api.h:79
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL Get_inchi_Input_FromAuxInfo(char *szInchiAuxInfo, int bDoNotAddH, int bDiffUnkUndfStereo, InchiInpData *pInchiInp)
Definition ichilnct.c:54
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL Free_inchi_Input(inchi_Input *pInp)
Definition ichilnct.c:152
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL FreeStdINCHI(inchi_Output *out)
Definition inchi_dll.c:148
tagINCHIBondStereo2D
Definition inchi_api.h:39
@ INCHI_BOND_STEREO_SINGLE_1DOWN
Definition inchi_api.h:44
@ INCHI_BOND_STEREO_SINGLE_1EITHER
Definition inchi_api.h:43
@ INCHI_BOND_STEREO_NONE
Definition inchi_api.h:41
@ INCHI_BOND_STEREO_SINGLE_2EITHER
Definition inchi_api.h:47
@ INCHI_BOND_STEREO_DOUBLE_EITHER
Definition inchi_api.h:50
@ INCHI_BOND_STEREO_SINGLE_2UP
Definition inchi_api.h:46
@ INCHI_BOND_STEREO_SINGLE_1UP
Definition inchi_api.h:42
@ INCHI_BOND_STEREO_SINGLE_2DOWN
Definition inchi_api.h:48
enum tagINCHIRadical inchi_Radical
#define INCHI_API
Definition inchi_api.h:671
#define INCHI_NUM
Definition inchi_api.h:1144
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetINCHIfromINCHI(inchi_InputINCHI *inpInChI, inchi_Output *out)
Definition inchi_dll.c:2079
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL FreeINCHI(inchi_Output *out)
Definition inchi_dll.c:118
#define INCHI_DECL
Definition inchi_api.h:673
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL STDINCHIGEN_Setup(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Input *pInp)
Definition inchi_dll_a.c:150
struct tagInchiInpData InchiInpData
tagINCHIBondType
Definition inchi_api.h:32
@ INCHI_BOND_TYPE_ALTERN
Definition inchi_api.h:37
@ INCHI_BOND_TYPE_DOUBLE
Definition inchi_api.h:35
@ INCHI_BOND_TYPE_SINGLE
Definition inchi_api.h:34
@ INCHI_BOND_TYPE_NONE
Definition inchi_api.h:33
@ INCHI_BOND_TYPE_TRIPLE
Definition inchi_api.h:36
struct tagINCHIGEN_DATA INCHIGEN_DATA
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL STDINCHIGEN_Reset(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Output *pResults)
Definition inchi_dll_a.c:1090
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL INCHIGEN_Destroy(INCHIGEN_HANDLE HGen)
Definition inchi_dll_a.c:1280
struct tagINCHI_InputINCHI inchi_InputINCHI
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL CheckINCHIKey(const char *szINCHIKey)
Definition ikey_dll.c:471
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL Get_std_inchi_Input_FromAuxInfo(char *szInchiAuxInfo, int bDoNotAddH, InchiInpData *pInchiInp)
Definition ichilnct.c:45
enum tagRetValMOL2INCHI RetValMol2INCHI
#define EXPIMP_TEMPLATE
Definition inchi_api.h:672
struct tagInchiAtom inchi_Atom
struct tagINCHI_OutputStructEx inchi_OutputStructEx
enum tagRetValGetINCHIKey RetValCheckINCHIKeyv
EXPIMP_TEMPLATE INCHI_API INCHIGEN_HANDLE INCHI_DECL STDINCHIGEN_Create(void)
Definition inchi_dll_a.c:87
unsigned long INCHI_MODES
Definition inchi_api.h:1150
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStdINCHI(inchi_Input *inp, inchi_Output *out)
Definition inchi_dll.c:207
struct tagNormAtom NORM_ATOM
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL STDINCHIGEN_DoSerialization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Output *pResults)
Definition inchi_dll_a.c:824
inchi_Input_V3000 inchi_Output_V3000
Definition inchi_api.h:566
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetINCHI(inchi_Input *inp, inchi_Output *out)
Definition inchi_dll.c:235
enum tagRetValCheckINCHI RetValCheckINCHI
tagINCHIStereoParity0D
Definition inchi_api.h:380
@ INCHI_PARITY_UNDEFINED
Definition inchi_api.h:386
@ INCHI_PARITY_UNKNOWN
Definition inchi_api.h:384
@ INCHI_PARITY_ODD
Definition inchi_api.h:382
@ INCHI_PARITY_NONE
Definition inchi_api.h:381
@ INCHI_PARITY_EVEN
Definition inchi_api.h:383
struct tagINCHI_Input inchi_Input
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL INCHIGEN_Setup(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Input *pInp)
Definition inchi_dll_a.c:225
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStructFromINCHIEx(inchi_InputINCHI *inpInChI, inchi_OutputStructEx *outStruct)
Definition inchi_dll.c:2450
tagRetValMOL2INCHI
Definition inchi_api.h:704
@ mol2inchi_Ret_ERROR_get
Definition inchi_api.h:709
@ mol2inchi_Ret_OKAY
Definition inchi_api.h:705
@ mol2inchi_Ret_WARNING
Definition inchi_api.h:706
@ mol2inchi_Ret_ERROR
Definition inchi_api.h:708
@ mol2inchi_Ret_EOF
Definition inchi_api.h:707
@ mol2inchi_Ret_ERROR_comp
Definition inchi_api.h:710
struct tagNormAtomData NORM_ATOMS
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL FreeStructFromINCHI(inchi_OutputStruct *out)
Definition inchi_dll.c:173
#define ATOM_EL_LEN
Definition inchi_api.h:71
tagRetValCheckINCHI
Definition inchi_api.h:717
@ INCHI_INVALID_PREFIX
Definition inchi_api.h:721
@ INCHI_VALID_NON_STANDARD
Definition inchi_api.h:719
@ INCHI_VALID_BETA
Definition inchi_api.h:720
@ INCHI_VALID_STANDARD
Definition inchi_api.h:718
@ INCHI_INVALID_VERSION
Definition inchi_api.h:722
@ INCHI_INVALID_LAYOUT
Definition inchi_api.h:723
@ INCHI_FAIL_I2I
Definition inchi_api.h:724
#define MAX_NUM_STEREO_BONDS
Definition inchi_api.h:1141
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL FreeStructFromStdINCHI(inchi_OutputStruct *out)
Definition inchi_dll.c:160
inchi_Input_Polymer inchi_Output_Polymer
Definition inchi_api.h:565
#define MAXVAL
Definition inchi_api.h:70
struct tagINCHI_OutputStruct inchi_OutputStruct
signed short S_SHORT
Definition inchi_api.h:84
tagRetValGetINCHI
Definition inchi_api.h:688
@ inchi_Ret_BUSY
Definition inchi_api.h:697
@ inchi_Ret_UNKNOWN
Definition inchi_api.h:696
@ inchi_Ret_BREAK
Definition inchi_api.h:689
@ inchi_Ret_ERROR
Definition inchi_api.h:694
@ inchi_Ret_EOF
Definition inchi_api.h:691
@ inchi_Ret_SKIP
Definition inchi_api.h:690
@ inchi_Ret_FATAL
Definition inchi_api.h:695
@ inchi_Ret_OKAY
Definition inchi_api.h:692
@ inchi_Ret_WARNING
Definition inchi_api.h:693
struct tagINCHI_Output inchi_Output
enum tagINCHIStereoParity0D inchi_StereoParity0D
S_SHORT AT_NUM
Definition inchi_api.h:89
tagINCHIStereoType0D
Definition inchi_api.h:372
@ INCHI_StereoType_DoubleBond
Definition inchi_api.h:374
@ INCHI_StereoType_Tetrahedral
Definition inchi_api.h:375
@ INCHI_StereoType_Allene
Definition inchi_api.h:376
@ INCHI_StereoType_None
Definition inchi_api.h:373
enum tagINCHIBondStereo2D inchi_BondStereo2D
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL STDINCHIGEN_DoNormalization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData)
Definition inchi_dll_a.c:400
#define STR_ERR_LEN
Definition inchi_api.h:885
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL INCHIGEN_DoCanonicalization(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData)
Definition inchi_dll_a.c:663
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL CheckINCHI(const char *szINCHI, const int strict)
Definition inchi_dll.c:799
enum tagRetValGetINCHI RetValGetINCHI
tagINCHIRadical
Definition inchi_api.h:24
@ INCHI_RADICAL_NONE
Definition inchi_api.h:25
@ INCHI_RADICAL_TRIPLET
Definition inchi_api.h:28
@ INCHI_RADICAL_DOUBLET
Definition inchi_api.h:27
@ INCHI_RADICAL_SINGLET
Definition inchi_api.h:26
EXPIMP_TEMPLATE INCHI_API int INCHI_DECL GetStdINCHIKeyFromStdINCHI(const char *szINCHISource, char *szINCHIKey)
Definition ikey_dll.c:50
struct tagINCHIStereo0D inchi_Stereo0D
#define MAX_NUM_STEREO_ATOM_NEIGH
Definition inchi_api.h:1138
enum tagINCHIBondType inchi_BondType
EXPIMP_TEMPLATE INCHI_API void INCHI_DECL INCHIGEN_Reset(INCHIGEN_HANDLE HGen, INCHIGEN_DATA *pGenData, inchi_Output *pResults)
Definition inchi_dll_a.c:1099
Definition inchi_api.h:1236
char pStrErrStruct[STR_ERR_LEN]
Definition inchi_api.h:1238
int num_components[INCHI_NUM]
Definition inchi_api.h:1239
NORM_ATOMS * NormAtomsTaut[INCHI_NUM]
Definition inchi_api.h:1245
NORM_ATOMS * NormAtomsNontaut[INCHI_NUM]
Definition inchi_api.h:1244
Definition inchi_api.h:399
AT_NUM central_atom
Definition inchi_api.h:401
S_CHAR parity
Definition inchi_api.h:404
S_CHAR type
Definition inchi_api.h:403
AT_NUM neighbor[4]
Definition inchi_api.h:400
Definition inchi_api.h:623
inchi_Stereo0D * stereo0D
Definition inchi_api.h:627
inchi_Output_V3000 * v3000
Definition inchi_api.h:640
inchi_Atom * atom
Definition inchi_api.h:626
char * szMessage
Definition inchi_api.h:630
unsigned long WarningFlags[2][2]
Definition inchi_api.h:633
inchi_Output_Polymer * polymer
Definition inchi_api.h:639
char * szLog
Definition inchi_api.h:631
AT_NUM num_stereo0D
Definition inchi_api.h:629
AT_NUM num_atoms
Definition inchi_api.h:628
Definition inchi_api.h:601
AT_NUM num_stereo0D
Definition inchi_api.h:607
char * szMessage
Definition inchi_api.h:608
inchi_Stereo0D * stereo0D
Definition inchi_api.h:605
unsigned long WarningFlags[2][2]
Definition inchi_api.h:611
char * szLog
Definition inchi_api.h:609
AT_NUM num_atoms
Definition inchi_api.h:606
inchi_Atom * atom
Definition inchi_api.h:604
Definition inchi_api.h:587
char * szLog
Definition inchi_api.h:593
char * szAuxInfo
Definition inchi_api.h:591
char * szMessage
Definition inchi_api.h:592
char * szInChI
Definition inchi_api.h:590
Definition inchi_api.h:99
AT_NUM isotopic_mass
Definition inchi_api.h:123
double z
Definition inchi_api.h:103
S_CHAR charge
Definition inchi_api.h:126
S_CHAR radical
Definition inchi_api.h:125
AT_NUM num_bonds
Definition inchi_api.h:114
S_CHAR num_iso_H[NUM_H_ISOTOPES+1]
Definition inchi_api.h:116
S_CHAR bond_type[MAXVAL]
Definition inchi_api.h:107
double y
Definition inchi_api.h:102
char elname[ATOM_EL_LEN]
Definition inchi_api.h:112
AT_NUM neighbor[MAXVAL]
Definition inchi_api.h:105
S_CHAR bond_stereo[MAXVAL]
Definition inchi_api.h:109
double x
Definition inchi_api.h:101
Definition inchi_api.h:888
int bChiral
Definition inchi_api.h:890
inchi_Input * pInp
Definition inchi_api.h:889
char szErrMsg[STR_ERR_LEN]
Definition inchi_api.h:891
Definition inchi_api.h:1211
int bDeleted
Definition inchi_api.h:1219
int bTautPreprocessed
Definition inchi_api.h:1222
int bHasIsotopicLayer
Definition inchi_api.h:1220
int num_bonds
Definition inchi_api.h:1216
int bTautomeric
Definition inchi_api.h:1221
NORM_ATOM * at_fixed_bonds
Definition inchi_api.h:1213
NUM_HS num_iso_H[NUM_H_ISOTOPES]
Definition inchi_api.h:1226
INCHI_MODES bTautFlags
Definition inchi_api.h:1229
int num_isotopic
Definition inchi_api.h:1217
NORM_ATOM * at
Definition inchi_api.h:1212
NUM_HS nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition inchi_api.h:1224
int num_at
Definition inchi_api.h:1214
int bExists
Definition inchi_api.h:1218
INCHI_MODES bNormalizationFlags
Definition inchi_api.h:1231
INCHI_MODES bTautFlagsDone
Definition inchi_api.h:1230
int nNumRemovedProtons
Definition inchi_api.h:1223
int num_removed_H
Definition inchi_api.h:1215
Definition inchi_api.h:1153
AT_NUMBR nBlockSystem
Definition inchi_api.h:1199
S_CHAR bCutVertex
Definition inchi_api.h:1196
S_CHAR iso_atw_diff
Definition inchi_api.h:1168
S_CHAR cFlags
Definition inchi_api.h:1174
AT_NUMBR endpoint
Definition inchi_api.h:1177
U_CHAR bond_type[MAXVAL]
Definition inchi_api.h:1161
S_CHAR bUsed0DParity
Definition inchi_api.h:1183
AT_NUMBR component
Definition inchi_api.h:1176
S_CHAR radical
Definition inchi_api.h:1172
S_CHAR chem_bonds_valence
Definition inchi_api.h:1165
S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]
Definition inchi_api.h:1188
S_CHAR bAmbiguousStereo
Definition inchi_api.h:1173
AT_NUMBR neighbor[MAXVAL]
Definition inchi_api.h:1156
char elname[ATOM_EL_LEN]
Definition inchi_api.h:1154
S_CHAR num_iso_H[NUM_H_ISOTOPES]
Definition inchi_api.h:1167
AT_NUMBR sn_orig_at_num[MAX_NUM_STEREO_BONDS]
Definition inchi_api.h:1193
S_CHAR bond_stereo[MAXVAL]
Definition inchi_api.h:1159
AT_NUMBR orig_compt_at_numb
Definition inchi_api.h:1158
S_CHAR charge
Definition inchi_api.h:1171
AT_NUMBR orig_at_number
Definition inchi_api.h:1157
AT_NUMBR nNumAtInRingSystem
Definition inchi_api.h:1198
double z
Definition inchi_api.h:1181
double y
Definition inchi_api.h:1180
S_CHAR sb_parity[MAX_NUM_STEREO_BONDS]
Definition inchi_api.h:1192
S_CHAR num_H
Definition inchi_api.h:1166
U_CHAR el_number
Definition inchi_api.h:1155
double x
Definition inchi_api.h:1179
S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]
Definition inchi_api.h:1189
AT_NUMBR p_orig_at_num[MAX_NUM_STEREO_ATOM_NEIGH]
Definition inchi_api.h:1186
AT_NUMBR c_point
Definition inchi_api.h:1178
AT_NUMBR nRingSystem
Definition inchi_api.h:1197
S_CHAR p_parity
Definition inchi_api.h:1185
AT_NUMBR at_type
Definition inchi_api.h:1175
S_CHAR valence
Definition inchi_api.h:1164