Go to the source code of this file.
Data Structures | |
struct | tagOutputString |
struct | tagOutputStream |
Macros | |
#define | TARGET_PLATFORM "Linux" |
#define | BUILD_WITH_ENG_OPTIONS 0 |
#define | BUILD_WITH_AMI 1 |
#define | ADD_CMLPP 0 |
#define | COMPILE_ANSI_ONLY |
#define | INCHI_VERSION "1" |
#define | INCHI_NAME "InChI" |
#define | INCHI_NAM_VER_DELIM "=" |
#define | INCHI_OPTION_PREFX '-' |
#define | INCHI_PATH_DELIM '/' |
#define | INCHI_ALT_OPT_PREFIX '-' |
#define | INCHI_ACD_LABS_PREFIX '-' |
#define | bRELEASE_VERSION 1 /* 1=> release version; comment out to disable */ |
#define | RELEASE_IS_FINAL 1 /* final release */ |
#define | DISPLAY_DEBUG_DATA_C_POINT 0 /* disabled release version for now */ |
#define | DISPLAY_ORIG_AT_NUMBERS 1 /* 1 => in an uncanonicalized components display orig. atom numbers (default) */ |
#define | DISPLAY_ZZ_AS_STAR 1 |
#define | FIX_ChCh_STEREO_CANON_BUG 1 /* 1=> (NEEDED) */ |
#define | ADD_ChCh_STEREO_CANON_CHK 0 /* 1 is NOT needed; let it always be 0 */ |
#define | FIX_ChCh_CONSTIT_CANON_BUG 1 /* 1=> (NEEDED) */ |
#define | FIX_EITHER_STEREO_IN_AUX_INFO 1 /* 1=> fix bug: Either stereobond direction in Aux_Info; 0=> do not fix */ |
#define | FIX_NORM_BUG_ADD_ION_PAIR 1 /* 1=> (NEEDED) fix bug: Miscount number of charges when creating an ion pair */ |
#define | FIX_REM_PROTON_COUNT_BUG 1 /* 1=> (NEEDED) check for number of actually removed protons and issue an error if mismatch */ |
#define | FIX_READ_AUX_MEM_LEAK 1 |
#define | FIX_READ_LONG_LINE_BUG 1 /* 1=> (NEEDED) prevent failure when reading AuxInfo and InChI is too long */ |
#define | FIX_N_V_METAL_BONDS_GPF 1 /* 1=> (NEEDED) InChI v1 GPF bug fix */ |
#define | BNS_RAD_SEARCH 1 /* 1=> prevent normalization failures due to radical centers */ |
#define | FIX_ODD_THINGS_REM_Plus_BUG 0 |
#define | FIX_N_MINUS_NORN_BUG 0 |
#define | FIX_CANCEL_CHARGE_COUNT_BUG 0 |
#define | FIX_2D_STEREO_BORDER_CASE 0 |
#define | FIX_REM_ION_PAIRS_Si_BUG 0 |
#define | FIX_STEREO_SCALING_BUG 0 |
#define | FIX_EMPTY_LAYER_BUG 0 |
#define | FIX_EITHER_DB_AS_NONSTEREO 0 |
#define | FIX_BOND23_IN_TAUT 0 |
#define | FIX_TACN_POSSIBLE_BUG 0 |
#define | FIX_KEEP_H_ON_NH_ANION 0 |
#define | FIX_AVOID_ADP 0 |
#define | FIX_NUM_TG 0 /* increase number of t-groups for isothiocyanate */ |
#define | FIX_CPOINT_BOND_CAP2 0 |
#define | FIX_ISO_FIXEDH_BUG 1 /* (2007-09-24) 1=> Fix bug: missing fixed-H iso segment in case of single removed D(+) */ |
#define | FIX_ISO_FIXEDH_BUG_READ 0 /* (2007-09-24) 1=> Accommodate this InChI bug in reading InChI */ |
#define | FIX_DALKE_BUGS 1 |
#define | FIX_TRANSPOSITION_CHARGE_BUG 1 /* (2008-01-02) fix bug that leads to missed charge in some cases when /o is present */ |
#define | FIX_I2I_STEREOCONVERSION_BUG 1 /* (2008-03-06) 1=> Fix bug of i2i conversion SAbs-->(SRel||Srac) */ |
#define | FIX_I2I_STEREOCONVERSION_BUG2 1 /* (2008-04-02) 1=> Fix bug of i2i conversion (missed empty /t) */ |
#define | FIX_I2I_STEREOCONVERSION_BUG3 1 /* (2008-04-10) 1=> Fix bug of i2i conversion */ |
#define | FIX_TERM_H_CHRG_BUG 1 /* (2008-06-06) IPl) */ |
#define | FIX_AROM_RADICAL 1 /* (2011-05-09) 1=> Fix bug which leads for different InChI */ |
#define | FIX_STEREOCOUNT_ERR 1 /* (2018-01-09) Supplied by DT */ |
#define | FIX_IMPOSSIBLE_H_ISOTOPE_BUG 1 /* (2018-01-25) Bug reported by Andrew Dalke, inchi-discuss */ |
#define | FIX_OLEAN_SPIRO_CHIRALITY_DETECTION_BUG 1 |
#define | FIX_RENUM_BUG_FOR_CASE_OF_ACIDIC_OH_AT_P_PLUS 1 |
#define | CHECK_STRTOL_ATNUMB 1 |
#define | DISABLE_READ_COMPRESSED_INCHI 1 |
#define | FIX_GAF_2019_1 1 |
#define | FIX_GAF_2019_2 1 |
#define | FIX_GAF_2020_GENERIC 1 |
#define | FIX_OSS_FUZZ_25604 1 |
#define | FIX_GAF_2020_25607 1 |
#define | FIX_GAF_2020_25726 1 |
#define | FIX_GAF_2020_25741 1 |
#define | FIX_OSS_FUZZ_30162_30343 1 |
#define | FIX_OSS_FUZZ_25734_28139 1 |
#define | FIX_CURE53_ISSUE_OOB_ALREADY_HAVE_THIS_MESSAGE 1 |
#define | FIX_CURE53_ISSUE_HEAP_BUFFER_OVERFLOW_INCHITOINPATOM 1 |
#define | FIX_CURE53_ISSUE_NULL_DEREFERENCE_MAKE_A_COPY_OF_T_GROUP_INFO 1 |
#define | FIX_GAF_2019_3 1 |
#define | FIX_ONE_LINE_INCHI_INPUT_CONVERSION_ISSUE 1 |
#define | ALLOW_EMPTY_INCHI_AS_INPUT 1 /* Allow "InChI=1//" and standard/beta analogues in input */ |
#define | I2S_MODIFY_OUTPUT 1 /* 1=> Allow various InChI2InChI output types from cInChI */ |
#define | FIX_NP_MINUS_BUG 1 /* 2010-03-11 DT Fix for bug reported by Timo Boehme */ |
#define | FIX_ADJ_RAD 0 |
#define | SDF_OUTPUT_V2000 1 /* 1=>always output V2000 SDfile, 0=>only if needed */ |
#define | SDF_OUTPUT_DT 1 /* 1=> all option -SdfAtomsDT to output D and T into SDfile */ |
#define | CHECK_AROMBOND2ALT 1 /* 1=> check whether arom->alt bond conversion succeeded */ |
#define | READ_INCHI_STRING 1 /* 1=> input InChI string and process it */ |
#define | INCLUDE_NORMALIZATION_ENTRY_POINT 0 |
#define | KETO_ENOL_TAUT 1 /* include keto-enol tautomerism */ |
#define | TAUT_15_NON_RING 1 /* 1,5 tautomerism with endpoints not in ring */ |
#define | TAUT_PT_22_00 1 /* tautomerism rule PT_22_00 */ |
#define | TAUT_PT_16_00 1 /* tautomerism rule PT_16_00 */ |
#define | TAUT_PT_06_00 1 /* tautomerism rule PT_06_00 */ |
#define | TAUT_PT_39_00 1 /* tautomerism rule PT_39_00 */ |
#define | TAUT_PT_13_00 1 /* tautomerism rule PT_13_00 */ |
#define | TAUT_PT_18_00 1 /* tautomerism rule PT_18_00 */ |
#define | UNDERIVATIZE 1 /* split to possible underivatized fragments */ |
#define | RING2CHAIN 1 /* open rings R-C(-OH)-O-R => R-C(=O) OH-R */ |
#define | UNDERIVATIZE_REPORT 1 /* if SdfValue found, add to SdfValue a list of removed deriv. agents */ |
#define | FIX_UNDERIV_TO_SDF /* prevent bond normalization if underivatization result goes to SDF 2013-05-10 DCh */ |
#define | UNDERIV_RN_AcMe /* 2r1c3 R-N(-X)--C(=O)Me => R-N(-X)H: DERIV_BRIDGE_tN, X is not H */ |
#define | UNDERIV_RNH_AcMe /* 2r1c3 R-NH--C(=O)Me => R-NH2: DERIV_BRIDGE_NH */ |
#define | UNDERIV_RO_COX_Me /* 3r1c1 RO-C(=O)Me => ROH: create alcohols from acetates DERIV_RO_COX */ |
#define | UNDERIV_RO_COX_BENZOATES /* 3r1c2 create alcohols from benzoates DERIV_RO_COX */ |
#define | UNDERIV_RO_COX_PENTAFLOUROBENZOATES /* 3r1c3 create alcohols from pentafluorobenzoates DERIV_RO_COX -C(=O)C6F5*/ |
#define | UNDERIV_OOB_nButyl /* 4r2c1 DERIV_RING_O_OUTSIDE_PRECURSOR: 5 at, n-Butyl */ |
#define | UNDERIV_X_OXIME_TBDMS /* 5r2c3 DERIV_X_OXIME: >C=N--O-TBDMS */ |
#define | UNDERIV_X_OXIME_TMS /* 5r2c2 DERIV_X_OXIME: >C=N--O-TMS */ |
#define | UNDERIV_PYRROLIDIDES /* 7r1c1 DERIV_RING2_PRRLDD_OUTSIDE_PRECUR */ |
#define | UNDERIV_ADD_EXPLICIT_H /* Underiv: add removed explict H after underivatization */ |
#define | HAL_ACID_H_XCHG 1 /* allow iso H exchange to HX (X=halogen) and H2Y (Y=halcogen) */ |
#define | CANON_FIXH_TRANS 1 /* produce canonical fixed-H transposition */ |
#define | STEREO_WEDGE_ONLY 1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends */ |
#define | REMOVE_ION_PAIRS_EARLY 1 /* 1=> new preprocessing: step 1 before disconnecting metals in fix_odd_things() */ |
#define | REMOVE_ION_PAIRS_DISC_STRU 1 /* 1=> new post-preprocessing: remove charhes after metal disconnection */ |
#define | REMOVE_ION_PAIRS_FIX_BONDS 1 /* 1=> step2: set unchangeable bonds around removed ion pairs */ |
#define | S_VI_O_PLUS_METAL_FIX_BOND 1 /* 1=> count double bond M-O(+)=S as O=S in S(VI) ans S(VIII) fixing bonds */ |
#define | N_V_STEREOBONDS 1 /* 1=> detect stereobonds incident to N(V); 0 => don't */ |
#define | REMOVE_ION_PAIRS_ORIG_STRU |
#define | DISCONNECT_SALTS 1 /* 1=>disconnect metal atoms from salts, 0=>dont */ /* djb-rwth: default 1 */ |
#define | TEST_REMOVE_S_ATOMS |
#define | CHARGED_SALTS_ONLY |
#define | BNS_PROTECT_FROM_TAUT 1 /* 1=> do not allow testing of bonds to acetyl or nitro */ |
#define | BNS_MARK_EDGE_2_DISCONNECT 1 /* 1=> mark edge as temp forbidden instead of disconnection */ |
#define | REPLACE_ALT_WITH_TAUT 1 /* 1 => replace alt bonds with tautomeric bonds in case of standard t-groups */ |
#define | MOVE_CHARGES 1 /* 1 => take moveable charges into account */ |
#define | NEUTRALIZE_ENDPOINTS 1 /* 1 => before checking whether an H is moveable make 2 endpoints neutral */ |
#define | FIX_H_CHECKING_TAUT 1 /* 1 => Fix moveable H or (-) before checking if taut. exchange is possible */ |
#define | ALWAYS_ADD_TG_ON_THE_FLY 1 /* 1 => disables radical calcellation by taut-charge movement */ |
#define | IGNORE_SINGLE_ENDPOINTS 1 /* 1 => see FindAccessibleEndPoints() in INChITaut.c */ |
#define | INCL_NON_SALT_CANDIDATATES |
#define | SALT_WITH_PROTONS 1 /* 1=> (new new) include proton migrarion C-SH, =C-OH, NH+ */ |
#define | OPPOSITE_CHARGE_IN_CGROUP 1 /* 1=> allow N(-) in (+) c-group, 0=> disallow */ |
#define | MOVE_PPLUS_TO_REMOVE_PROTONS |
#define | ADD_MOVEABLE_O_PLUS 1 /* 1=> allow charges on O(+) to move */ |
#define | DISCONNECT_METALS 1 /* make main layer disconnected */ /* djb-rwth: default 1 */ |
#define | RECONNECT_METALS |
#define | CHECK_METAL_VALENCE 0 /* 1=> disconnect only metals that have abnormal valence */ |
#define | bREUSE_INCHI |
#define | OUTPUT_CONNECTED_METAL_ONLY |
#define | EMBED_REC_METALS_INCHI |
#define | bOUTPUT_ONE_STRUCT_TIME 1 /* 1 => output each structure time (non-release only) */ |
#define | INCHI_NUM 2 /* = array size; member indexes: */ |
#define | INCHI_BAS 0 /* 0 => disconnected or normal */ |
#define | INCHI_REC 1 /* 1 => reconnected */ |
#define | TAUT_NUM 2 /* = array size; member indexes: */ |
#define | TAUT_NON 0 /* 0 => normal structure */ |
#define | TAUT_YES 1 /* 1 => tautomeric */ |
#define | TAUT_INI 2 /* 2 => intermediate tautomeric structure */ |
#define | ALT_TAUT(X) ((X)>TAUT_YES? TAUT_YES : 1-(X)) /* was (1-(X)) */ |
#define | OUT_N1 0 /* non-tautomeric only */ |
#define | OUT_T1 1 /* tautomeric if present otherwise non-tautomeric */ |
#define | OUT_NT 2 /* only non-taut representations of tautomeric */ |
#define | OUT_TN |
#define | OUT_NN 4 /* only non-taut representations: non-taut else tautomeric */ |
#define | NEW_STEREOCENTER_CHECK 1 /* 1 => add new stereocenter categories (see bCanInpAtomBeAStereoCenter(...)) */ |
#define | MIN_SB_RING_SIZE 8 /* do not assume stereo bonds in rings containing 3..MIN_SB_RING_SIZE-1 atoms */ |
#define | REMOVE_KNOWN_NONSTEREO 1 /* 1=> check in advance known stereo to remove parities from non-stereogenic elements */ |
#define | REMOVE_CALC_NONSTEREO 1 /* 1=> check new stereo numberings to remove parities from non-stereogenic elements */ |
#define | PROPAGATE_ILL_DEF_STEREO 1 /* 1=> if at least one of the pair of constitutionally identical (far) neighbors */ |
#define | ONLY_DOUBLE_BOND_STEREO 0 /* 1=> no alt bond stereo, no taut. bond attachment to stereo bond */ |
#define | ONE_BAD_SB_NEIGHBOR 1 /* 1 => allow 1 "bad" bond type neighbor to a stereobond atom. 2004-06-02 */ |
#define | BREAK_ONE_MORE_SC_TIE 1 /* break one more tie when comparing possible stereocenter neighbors */ |
#define | BREAK_ALSO_NEIGH_TIE 0 /* post 1.12Beta 2004-08-20: if fixed neighbor has equ neighbors, fix the one with smaller canon. rank */ |
#define | BREAK_ALSO_NEIGH_TIE_ROTATE 1 /* post 1.12Beta 2004-09-02: break the second in 2nd psition; 1 works, 0 does not (example:MFCD01085607) */ |
#define | STEREO_CENTER_BONDS_NORM 1 /* set length of the bonds around a stereocenter = 1 before getting the parity */ |
#define | STEREO_CENTER_BOND4_NORM 0 /* set length of the added bond around a stereocenter = 1 before getting the parity */ |
#define | NORMALIZE_INP_COORD 0 /* 0=>keep unchanged, 1 => make atom coordinates integer by normalizing to avg bond len 20 */ |
#define | STEREO_WEDGE_ONLY 1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends 1.12Beta */ |
#define | CHECK_C2v_S4_SYMM 0 /* post-1.12Beta 1=> check if a stereocenter has C2v or S4 symmetry; 0=>old mode */ |
#define | EQL_H_NUM_TOGETHER 1 /* 1=> output 1-3,5H2 intead of 1-3H2,5H2 (CT_MODE_EQL_H_TOGETHER) */ |
#define | ABC_CT_NUM_CLOSURES 1 /* 1=> in coinnections compressed format output decimal number of closures instead of '-' */ |
#define | SINGLET_IS_TRIPLET |
#define | FIND_CANON_NE_EQUITABLE 0 /* 0=>normal mode */ |
#define | EXTR_KNOWN_USED_TO_REMOVE_PARITY 0x000001 |
#define | EXTR_CALC_USED_TO_REMOVE_PARITY 0x000002 |
#define | EXTR_2EQL2CENTER_TO_REMOVE_PARITY 0x000004 |
#define | EXTR_HAS_ATOM_WITH_DEFINED_PARITY 0x000008 |
#define | EXTR_REMOVE_PARITY_WARNING 0x000010 |
#define | EXTR_SALT_WAS_DISCONNECTED 0x000020 |
#define | EXTR_SALT_PROTON_MOVED 0x000040 |
#define | EXTR_SALT_PROTON_MOVE_ERR_WARN 0x000080 |
#define | EXTR_METAL_WAS_DISCONNECTED 0x000100 |
#define | EXTR_METAL_WAS_NOT_DISCONNECTED 0x000200 |
#define | EXTR_NON_TRIVIAL_STEREO 0x000400 /* (Inv != Abs stereo) && (parities can't be obtained by inverting them) */ |
#define | EXTR_UNUSUAL_VALENCES 0x000800 |
#define | EXTR_HAS_METAL_ATOM 0x001000 |
#define | EXTR_TEST_TAUT3_SALTS_DONE 0x002000 /* non-oxygen t-points used to discover tautomerism of merged t-groups */ |
#define | EXTR_CANON_NE_EQUITABLE 0x004000 /* find structures where canonical partition is different from equitable */ |
#define | EXTR_HAS_PROTON_PN 0x008000 /* has movable H+ attached to N or P */ |
#define | EXTR_HAS_FEATURE 0x010000 /* found a feature */ |
#define | EXTR_TAUT_TREATMENT_CHARGES 0x020000 /* tautomeric treatment of charges */ |
#define | EXTR_TRANSPOSITION_EXAMPLES 0x040000 /* extract structures that have different mobile-H and fixed-H orders */ |
#define | EXTR_MASK 0 /*EXTR_TAUT_TREATMENT_CHARGES*/ /*(EXTR_HAS_FEATURE)*/ /*(EXTR_UNUSUAL_VALENCES | EXTR_HAS_METAL_ATOM)*/ /* 0 to disable */ |
#define | EXTR_FLAGS 0 /*EXTR_TAUT_TREATMENT_CHARGES*/ /*(EXTR_HAS_FEATURE)*/ /*(EXTR_HAS_PROTON_PN)*/ /*(EXTR_UNUSUAL_VALENCES)*/ /*(EXTR_CANON_NE_EQUITABLE)*/ /*(EXTR_TEST_TAUT3_SALTS_DONE)*/ /*(EXTR_HAS_METAL_ATOM)*/ /* (EXTR_NON_TRIVIAL_STEREO)*/ /*(EXTR_METAL_WAS_DISCONNECTED)*/ /* (EXTR_REMOVE_PARITY_WARNING)*/ /*(EXTR_HAS_ATOM_WITH_DEFINED_PARITY) */ |
#define | TAUT_TROPOLONE_7 1 /* 1=> tautomeric 7-member rings ON */ |
#define | TAUT_TROPOLONE_5 1 /* 1=> taut. similar to tropolone, 5-member ring */ |
#define | TAUT_4PYRIDINOL_RINGS 1 /* 1=> OH-C5H4N rings tautomerism */ |
#define | TAUT_PYRAZOLE_RINGS 1 /* 1=> tautomerizm in pyrazole rings */ |
#define | TAUT_IGNORE_EQL_ENDPOINTS |
#define | TAUT_RINGS_ATTACH_CHAIN 1 /* 1=> allow only chain attachments to tautomeric endpoints */ |
#define | FIND_RING_SYSTEMS 1 /* 1 => find and mark ring systems, blocks, cut-vertices */ |
#define | FIND_RINS_SYSTEMS_DISTANCES 0 /* 1 => find ring system and atom distance from terminal */ |
#define | USE_DISTANCES_FOR_RANKING 0 /* 1 => rank ring systems according to distances from terminal */ |
#define | DISPLAY_RING_SYSTEMS 0 /* 1 => for debug only; displays: */ |
#define | bOUTPUT_ONE_STRUCT_TIME 0 |
#define | TAUT_OTHER 1 |
#define | APPLY_IMPLICIT_H_DOWN_RULE 0 /* 1=> if 3 non-H atoms around stereocenter are in same plane */ |
#define | ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 1 /* 1=> consider bond in an alternating circuit stereogenic */ |
#define | IGNORE_TGROUP_WITHOUT_H 1 /* ignore tautomeric groups containing charges only */ |
#define | REMOVE_TGROUP_CHARGE 0 /* 0: do not remove charge information from tautomeric groups */ |
#define | INCHI_T_NUM_MOVABLE 2 |
#define | USE_AUX_RANKING 1 /* 1=> get auxiliary ranking to accelerate canonicalization of H layers */ |
#define | USE_AUX_RANKING_ALL 1 /* 1=> include all vertices in CellGetMinNode() selection 0=> only vertices with highest ranks */ |
#define | USE_ISO_SORT_KEY_HFIXED |
#define | REL_RAC_STEREO_IGN_1_SC 0 /* 1=> drop from InChI sp3 stereo in components that have a single stereocenter */ |
#define | CMODE_CT 0x000001 |
#define | CMODE_ISO 0x000002 |
#define | CMODE_ISO_OUT 0x000004 /* obsolete ? */ |
#define | CMODE_STEREO 0x000008 |
#define | CMODE_ISO_STEREO 0x000010 |
#define | CMODE_TAUT 0x000020 |
#define | CMODE_NOEQ_STEREO 0x000040 /* 5-24-2002: do not use stereo equivalence to accelerate */ |
#define | CMODE_REDNDNT_STEREO 0x000080 /* 6-11-2002: do not check for redundant stereo elements */ |
#define | CMODE_NO_ALT_SBONDS 0x000100 /* 6-14-2002: do not assign stereo to alternating bonds */ |
#define | CMODE_RELATIVE_STEREO 0x000200 /* REL All Relative Stereo */ |
#define | CMODE_RACEMIC_STEREO 0x000400 /* RAC All Racemic Stereo */ |
#define | CMODE_SC_IGN_ALL_UU 0x000800 /* IAUSC Ignore stereocenters if All Undef/Unknown */ |
#define | CMODE_SB_IGN_ALL_UU 0x001000 /* IAUSC Ignore stereobonds if All Undef/Unknown */ |
#define | CANON_MODE_CT (CMODE_CT) |
#define | CANON_MODE_TAUT (CMODE_CT|CMODE_TAUT) |
#define | CANON_MODE_ISO (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT) |
#define | CANON_MODE_STEREO (CMODE_CT|CMODE_STEREO) |
#define | CANON_MODE_ISO_STEREO (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT|CMODE_ISO_STEREO) |
#define | CANON_MODE_MASK 0x00FF /* used to determine canonicalization mode */ |
#define | CT_ATOMID_DONTINCLUDE 1 |
#define | CT_ATOMID_IS_INITRANK 2 |
#define | CT_ATOMID_IS_CURRANK 3 |
#define | CANON_TAUTOMERS 1 /* 1=> process tautomers */ |
#define | HYDROGENS_IN_INIT_RANKS 1 /* 1=> include num_H in initial ranking */ |
#define | DOUBLE_BOND_NEIGH_LIST 0 /* 1 => include double bond neighbor in NeighList 2 times */ |
#define | INCL_NON_6AROM 1 /* 1 => mark all arom. bonds; 0=>mark arom. bonds only in 6-member rings */ |
#define | CT_SMALLEST /* minimal CT */ |
#define | CT_NEIGH_SMALLER /* in CT, include neighbors with smaller ranks */ |
#define | CT_ATOMID CT_ATOMID_IS_CURRANK /*CT_ATOMID_DONTINCLUDE */ |
#define | CT_NEIGH_INCREASE /* in CT, neighbors ranks increase */ |
#define | USE_SYMMETRY_TO_ACCELERATE 1 /*1 => for fast CT canonicalization, to avoid full enumeration */ |
#define | CT_GREATER_THAN > |
#define | CT_INITVALUE ~0 |
#define | BEST_PARITY 1 /* odd */ |
#define | WORSE_PARITY 2 |
#define | CT_NEIGH_SMALLER_THAN < |
#define | ALL_ALT_AS_AROMATIC 1 /* 1 => all altrnate bonds (even in cyclooctateraene) treat as aromatic */ |
#define | ANY_ATOM_IN_ALT_CYCLE 1 /* 1=> accept any atom in alternating bond circuit, 0=>only some */ |
#define | EXCL_ALL_AROM_BOND_PARITY 0 /* 1 => any arom atom cannot belong to stereo bond. */ |
#define | ADD_6MEMB_AROM_BOND_PARITY 1 /* 1 => all arom bonds are stereo bonds */ |
#define | MAX_NUM_STEREO_BONDS 3 |
#define | MAX_NUM_STEREO_BOND_NEIGH 3 |
#define | MIN_NUM_STEREO_BOND_NEIGH 2 |
#define | MAX_NUM_STEREO_ATOM_NEIGH 4 |
#define | STEREO_AT_MARK 8 /* > MAX_NUM_STEREO_BONDS */ |
#define | DRAW_AROM_TAUT 1 /* 1=> draw distinct aromatic & tautomer bonds, 0=> don't */ |
#define | TG_FLAG_TEST_TAUT__ATOMS 0x00000001 /* find regular tautomerism */ |
#define | TG_FLAG_DISCONNECT_SALTS 0x00000002 /* DISCONNECT_SALTS disconnect */ |
#define | TG_FLAG_TEST_TAUT__SALTS 0x00000004 /* DISCONNECT_SALTS if possible find long-range H/(-) taut. on =C-OH, >C=O */ |
#define | TG_FLAG_MOVE_POS_CHARGES 0x00000008 /* MOVE_CHARGES allow long-range movement of N(+), P(+) charges */ |
#define | TG_FLAG_TEST_TAUT2_SALTS 0x00000010 /* TEST_REMOVE_S_ATOMS multi-attachement long-range H/(-) taut. on =C-OH, >C=O */ |
#define | TG_FLAG_ALLOW_NO_NEGTV_O 0x00000020 /* CHARGED_SALTS_ONLY=0 (debug) find long-range H-only tautomerism on =C-OH, >C=O */ |
#define | TG_FLAG_MERGE_TAUT_SALTS 0x00000040 /* DISCONNECT_SALTS merge all "salt"-t-groups and other =C-OH into one t-group */ |
#define | TG_FLAG_ALL_TAUTOMERIC |
#define | TG_FLAG_DISCONNECT_COORD 0x00000080 /* find "coord. centers" and disconnect them */ |
#define | TG_FLAG_RECONNECT_COORD 0x00000100 /* reconnect disconnected "coord. centers" */ |
#define | TG_FLAG_CHECK_VALENCE_COORD 0x00000200 /* do not disconnect "coord. centers" with usual valence */ |
#define | TG_FLAG_MOVE_HPLUS2NEUTR 0x00000400 /* move protons to neutralize */ |
#define | TG_FLAG_VARIABLE_PROTONS 0x00000800 /* add/remove protons to neutralize */ |
#define | TG_FLAG_HARD_ADD_REM_PROTONS 0x00001000 /* add/remove protons to neutralize in hard way */ |
#define | TG_FLAG_POINTED_EDGE_STEREO 0x00002000 /* only pointed edge of stereo bond defines stereo */ |
#define | TG_FLAG_PHOSPHINE_STEREO 0x00008000 /* add phosphine sp3 stereo */ |
#define | TG_FLAG_ARSINE_STEREO 0x00010000 /* add arsine sp3 stereo */ |
#define | TG_FLAG_H_ALREADY_REMOVED 0x00020000 /* processing structure restored from InChI */ |
#define | TG_FLAG_FIX_SP3_BUG 0x00040000 /* fix sp3 stereo bug: overlapping 2D stereo bond & coordinate scaling */ |
#define | TG_FLAG_KETO_ENOL_TAUT 0x00080000 /* turn on keto-enol tautomerism detection */ |
#define | TG_FLAG_1_5_TAUT 0x00100000 /* turn on 1,5 tautomerism detection */ |
#define | TG_FLAG_FIX_ISO_FIXEDH_BUG 0x00200000 /* fix bug found after v.102b (isotopic H representation) */ |
#define | TG_FLAG_FIX_TERM_H_CHRG_BUG 0x00400000 /* fix bug found after v.102b (moving H charge in 'remove_terminal_HDT') */ |
#define | TG_FLAG_PT_22_00 0x00800000 |
#define | TG_FLAG_PT_16_00 0x01000000 |
#define | TG_FLAG_PT_06_00 0x02000000 |
#define | TG_FLAG_PT_39_00 0x04000000 |
#define | TG_FLAG_PT_13_00 0x08000000 |
#define | TG_FLAG_PT_18_00 0x10000000 |
#define | TG_FLAG_MOVE_HPLUS2NEUTR_DONE 0x00000001 /* protons have been moved to neutralize */ |
#define | TG_FLAG_TEST_TAUT__ATOMS_DONE 0x00000002 |
#define | TG_FLAG_DISCONNECT_SALTS_DONE 0x00000004 |
#define | TG_FLAG_TEST_TAUT__SALTS_DONE 0x00000008 /* multiple H tautomerism */ |
#define | TG_FLAG_MOVE_POS_CHARGES_DONE 0x00000010 |
#define | TG_FLAG_TEST_TAUT2_SALTS_DONE 0x00000020 /* merged t-groups */ |
#define | TG_FLAG_ALLOW_NO_NEGTV_O_DONE 0x00000040 |
#define | TG_FLAG_MERGE_TAUT_SALTS_DONE 0x00000080 /* added non-taut O to taut groups */ |
#define | TG_FLAG_ALL_SALT_DONE |
#define | TG_FLAG_DISCONNECT_COORD_DONE 0x00000100 /* found and disconnected "coord. centers" */ |
#define | TG_FLAG_CHECK_VALENCE_COORD_DONE 0x00000200 /* did not disconnect "coord. centers" with usual valence */ |
#define | TG_FLAG_MOVE_CHARGE_COORD_DONE 0x00000400 /* changed charge of a disconnected ligand to fit its valence */ |
#define | TG_FLAG_FIX_ODD_THINGS_DONE 0x00000800 /* fixed drawing ambiguities in fix_odd_things */ |
#define | TG_FLAG_TEST_TAUT3_SALTS_DONE 0x00001000 /* merged t-groups + non-O taut atoms */ |
#define | TG_FLAG_FOUND_SALT_CHARGES_DONE 0x00002000 /* not assigned: preprocessing detected possibility of salt-type tautomerism */ |
#define | TG_FLAG_FOUND_ISOTOPIC_H_DONE 0x00004000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */ |
#define | TG_FLAG_FOUND_ISOTOPIC_ATOM_DONE 0x00008000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */ |
#define | READ_INCHI_OUTPUT_INCHI 0x00000001 |
#define | READ_INCHI_SPLIT_OUTPUT 0x00000002 |
#define | READ_INCHI_KEEP_BALANCE_P 0x00000004 |
#define | READ_INCHI_TO_STRUCTURE 0x00000008 |
#define | INCHI_IOS_TYPE_NONE 0 |
#define | INCHI_IOS_TYPE_STRING 1 |
#define | INCHI_IOS_TYPE_FILE 2 |
#define | TRACE_MEMORY_LEAKS 0 /* 0: do not change */ |
#define | INCHI_HEAPCHK /* default: no explicit heap checking during the execution */ |
#define | inchi_malloc malloc |
#define | inchi_calloc calloc |
#define | inchi_realloc realloc |
#define | inchi_free(X) do{ if(X) free(X); }while(0) |
#define | USE_ALLOCA 0 |
#define | qmalloc(X) inchi_malloc(X) |
#define | qfree(X) do{if(X){inchi_free(X);(X)=NULL;}}while(0) |
#define | fast_alloc(X) inchi_malloc(X) |
#define | fast_free(X) inchi_free(X) |
#define | qzfree(X) do{if(X){inchi_free(X);(X)=NULL;}}while(0) |
#define | MYREALLOC2(PTRTYPE1, PTRTYPE2, PTR1, PTR2, LEN1, LEN2, ERR) |
#define | DEBUG_POLYMERS 0 |
#define | POLYMERS_NO 0 /* ignore polymers */ |
#define | POLYMERS_MODERN 1 /* v. 1.06+ way to treat polymers with Zz */ |
#define | POLYMERS_LEGACY 2 /* v. 1.05 mode, no explicit Zz (internally they are here) */ |
#define | POLYMERS_LEGACY_PLUS |
#define | STEREO_AT_ZZ 0 |
#define | ALLOW_SUBSTRUCTURE_FILTERING 1 |
Typedefs | |
typedef struct tagOutputString | INCHI_IOS_STRING |
typedef struct tagOutputStream | INCHI_IOSTREAM |
#define ABC_CT_NUM_CLOSURES 1 /* 1=> in coinnections compressed format output decimal number of closures instead of '-' */ |
#define ADD_6MEMB_AROM_BOND_PARITY 1 /* 1 => all arom bonds are stereo bonds */ |
#define ADD_ChCh_STEREO_CANON_CHK 0 /* 1 is NOT needed; let it always be 0 */ |
#define ADD_CMLPP 0 |
#define ADD_MOVEABLE_O_PLUS 1 /* 1=> allow charges on O(+) to move */ |
#define ALL_ALT_AS_AROMATIC 1 /* 1 => all altrnate bonds (even in cyclooctateraene) treat as aromatic */ |
#define ALLOW_EMPTY_INCHI_AS_INPUT 1 /* Allow "InChI=1//" and standard/beta analogues in input */ |
#define ALLOW_SUBSTRUCTURE_FILTERING 1 |
#define ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 1 /* 1=> consider bond in an alternating circuit stereogenic */ |
#define ALWAYS_ADD_TG_ON_THE_FLY 1 /* 1 => disables radical calcellation by taut-charge movement */ |
#define ANY_ATOM_IN_ALT_CYCLE 1 /* 1=> accept any atom in alternating bond circuit, 0=>only some */ |
#define APPLY_IMPLICIT_H_DOWN_RULE 0 /* 1=> if 3 non-H atoms around stereocenter are in same plane */ |
#define BEST_PARITY 1 /* odd */ |
#define BNS_MARK_EDGE_2_DISCONNECT 1 /* 1=> mark edge as temp forbidden instead of disconnection */ |
#define BNS_PROTECT_FROM_TAUT 1 /* 1=> do not allow testing of bonds to acetyl or nitro */ |
#define BNS_RAD_SEARCH 1 /* 1=> prevent normalization failures due to radical centers */ |
#define bOUTPUT_ONE_STRUCT_TIME 1 /* 1 => output each structure time (non-release only) */ |
#define bOUTPUT_ONE_STRUCT_TIME 0 |
#define BREAK_ALSO_NEIGH_TIE 0 /* post 1.12Beta 2004-08-20: if fixed neighbor has equ neighbors, fix the one with smaller canon. rank */ |
#define BREAK_ALSO_NEIGH_TIE_ROTATE 1 /* post 1.12Beta 2004-09-02: break the second in 2nd psition; 1 works, 0 does not (example:MFCD01085607) */ |
#define BREAK_ONE_MORE_SC_TIE 1 /* break one more tie when comparing possible stereocenter neighbors */ |
#define bRELEASE_VERSION 1 /* 1=> release version; comment out to disable */ |
#define bREUSE_INCHI |
#define BUILD_WITH_AMI 1 |
#define BUILD_WITH_ENG_OPTIONS 0 |
#define CANON_FIXH_TRANS 1 /* produce canonical fixed-H transposition */ |
#define CANON_MODE_CT (CMODE_CT) |
#define CANON_MODE_ISO (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT) |
#define CANON_MODE_ISO_STEREO (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT|CMODE_ISO_STEREO) |
#define CANON_MODE_MASK 0x00FF /* used to determine canonicalization mode */ |
#define CANON_MODE_STEREO (CMODE_CT|CMODE_STEREO) |
#define CANON_MODE_TAUT (CMODE_CT|CMODE_TAUT) |
#define CANON_TAUTOMERS 1 /* 1=> process tautomers */ |
#define CHARGED_SALTS_ONLY |
#define CHECK_AROMBOND2ALT 1 /* 1=> check whether arom->alt bond conversion succeeded */ |
#define CHECK_C2v_S4_SYMM 0 /* post-1.12Beta 1=> check if a stereocenter has C2v or S4 symmetry; 0=>old mode */ |
#define CHECK_METAL_VALENCE 0 /* 1=> disconnect only metals that have abnormal valence */ |
#define CHECK_STRTOL_ATNUMB 1 |
#define CMODE_CT 0x000001 |
#define CMODE_ISO 0x000002 |
#define CMODE_ISO_OUT 0x000004 /* obsolete ? */ |
#define CMODE_ISO_STEREO 0x000010 |
#define CMODE_NO_ALT_SBONDS 0x000100 /* 6-14-2002: do not assign stereo to alternating bonds */ |
#define CMODE_NOEQ_STEREO 0x000040 /* 5-24-2002: do not use stereo equivalence to accelerate */ |
#define CMODE_RACEMIC_STEREO 0x000400 /* RAC All Racemic Stereo */ |
#define CMODE_REDNDNT_STEREO 0x000080 /* 6-11-2002: do not check for redundant stereo elements */ |
#define CMODE_RELATIVE_STEREO 0x000200 /* REL All Relative Stereo */ |
#define CMODE_SB_IGN_ALL_UU 0x001000 /* IAUSC Ignore stereobonds if All Undef/Unknown */ |
#define CMODE_SC_IGN_ALL_UU 0x000800 /* IAUSC Ignore stereocenters if All Undef/Unknown */ |
#define CMODE_STEREO 0x000008 |
#define CMODE_TAUT 0x000020 |
#define COMPILE_ANSI_ONLY |
#define CT_ATOMID CT_ATOMID_IS_CURRANK /*CT_ATOMID_DONTINCLUDE */ |
#define CT_ATOMID_DONTINCLUDE 1 |
#define CT_ATOMID_IS_CURRANK 3 |
#define CT_ATOMID_IS_INITRANK 2 |
#define CT_GREATER_THAN > |
#define CT_INITVALUE ~0 |
#define CT_NEIGH_INCREASE /* in CT, neighbors ranks increase */ |
#define CT_NEIGH_SMALLER /* in CT, include neighbors with smaller ranks */ |
#define CT_NEIGH_SMALLER_THAN < |
#define CT_SMALLEST /* minimal CT */ |
#define DEBUG_POLYMERS 0 |
#define DISABLE_READ_COMPRESSED_INCHI 1 |
#define DISCONNECT_METALS 1 /* make main layer disconnected */ /* djb-rwth: default 1 */ |
#define DISCONNECT_SALTS 1 /* 1=>disconnect metal atoms from salts, 0=>dont */ /* djb-rwth: default 1 */ |
#define DISPLAY_DEBUG_DATA_C_POINT 0 /* disabled release version for now */ |
#define DISPLAY_ORIG_AT_NUMBERS 1 /* 1 => in an uncanonicalized components display orig. atom numbers (default) */ |
#define DISPLAY_RING_SYSTEMS 0 /* 1 => for debug only; displays: */ |
#define DISPLAY_ZZ_AS_STAR 1 |
#define DOUBLE_BOND_NEIGH_LIST 0 /* 1 => include double bond neighbor in NeighList 2 times */ |
#define DRAW_AROM_TAUT 1 /* 1=> draw distinct aromatic & tautomer bonds, 0=> don't */ |
#define EMBED_REC_METALS_INCHI |
#define EQL_H_NUM_TOGETHER 1 /* 1=> output 1-3,5H2 intead of 1-3H2,5H2 (CT_MODE_EQL_H_TOGETHER) */ |
#define EXCL_ALL_AROM_BOND_PARITY 0 /* 1 => any arom atom cannot belong to stereo bond. */ |
#define EXTR_2EQL2CENTER_TO_REMOVE_PARITY 0x000004 |
#define EXTR_CALC_USED_TO_REMOVE_PARITY 0x000002 |
#define EXTR_CANON_NE_EQUITABLE 0x004000 /* find structures where canonical partition is different from equitable */ |
#define EXTR_FLAGS 0 /*EXTR_TAUT_TREATMENT_CHARGES*/ /*(EXTR_HAS_FEATURE)*/ /*(EXTR_HAS_PROTON_PN)*/ /*(EXTR_UNUSUAL_VALENCES)*/ /*(EXTR_CANON_NE_EQUITABLE)*/ /*(EXTR_TEST_TAUT3_SALTS_DONE)*/ /*(EXTR_HAS_METAL_ATOM)*/ /* (EXTR_NON_TRIVIAL_STEREO)*/ /*(EXTR_METAL_WAS_DISCONNECTED)*/ /* (EXTR_REMOVE_PARITY_WARNING)*/ /*(EXTR_HAS_ATOM_WITH_DEFINED_PARITY) */ |
#define EXTR_HAS_ATOM_WITH_DEFINED_PARITY 0x000008 |
#define EXTR_HAS_FEATURE 0x010000 /* found a feature */ |
#define EXTR_HAS_METAL_ATOM 0x001000 |
#define EXTR_HAS_PROTON_PN 0x008000 /* has movable H+ attached to N or P */ |
#define EXTR_KNOWN_USED_TO_REMOVE_PARITY 0x000001 |
#define EXTR_MASK 0 /*EXTR_TAUT_TREATMENT_CHARGES*/ /*(EXTR_HAS_FEATURE)*/ /*(EXTR_UNUSUAL_VALENCES | EXTR_HAS_METAL_ATOM)*/ /* 0 to disable */ |
#define EXTR_METAL_WAS_DISCONNECTED 0x000100 |
#define EXTR_METAL_WAS_NOT_DISCONNECTED 0x000200 |
#define EXTR_NON_TRIVIAL_STEREO 0x000400 /* (Inv != Abs stereo) && (parities can't be obtained by inverting them) */ |
#define EXTR_REMOVE_PARITY_WARNING 0x000010 |
#define EXTR_SALT_PROTON_MOVE_ERR_WARN 0x000080 |
#define EXTR_SALT_PROTON_MOVED 0x000040 |
#define EXTR_SALT_WAS_DISCONNECTED 0x000020 |
#define EXTR_TAUT_TREATMENT_CHARGES 0x020000 /* tautomeric treatment of charges */ |
#define EXTR_TEST_TAUT3_SALTS_DONE 0x002000 /* non-oxygen t-points used to discover tautomerism of merged t-groups */ |
#define EXTR_TRANSPOSITION_EXAMPLES 0x040000 /* extract structures that have different mobile-H and fixed-H orders */ |
#define EXTR_UNUSUAL_VALENCES 0x000800 |
#define fast_alloc | ( | X | ) | inchi_malloc(X) |
#define fast_free | ( | X | ) | inchi_free(X) |
#define FIND_CANON_NE_EQUITABLE 0 /* 0=>normal mode */ |
#define FIND_RING_SYSTEMS 1 /* 1 => find and mark ring systems, blocks, cut-vertices */ |
#define FIND_RINS_SYSTEMS_DISTANCES 0 /* 1 => find ring system and atom distance from terminal */ |
#define FIX_2D_STEREO_BORDER_CASE 0 |
#define FIX_ADJ_RAD 0 |
#define FIX_AROM_RADICAL 1 /* (2011-05-09) 1=> Fix bug which leads for different InChI */ |
#define FIX_AVOID_ADP 0 |
#define FIX_BOND23_IN_TAUT 0 |
#define FIX_CANCEL_CHARGE_COUNT_BUG 0 |
#define FIX_ChCh_CONSTIT_CANON_BUG 1 /* 1=> (NEEDED) */ |
#define FIX_ChCh_STEREO_CANON_BUG 1 /* 1=> (NEEDED) */ |
#define FIX_CPOINT_BOND_CAP2 0 |
#define FIX_CURE53_ISSUE_HEAP_BUFFER_OVERFLOW_INCHITOINPATOM 1 |
#define FIX_CURE53_ISSUE_NULL_DEREFERENCE_MAKE_A_COPY_OF_T_GROUP_INFO 1 |
#define FIX_CURE53_ISSUE_OOB_ALREADY_HAVE_THIS_MESSAGE 1 |
#define FIX_DALKE_BUGS 1 |
#define FIX_EITHER_DB_AS_NONSTEREO 0 |
#define FIX_EITHER_STEREO_IN_AUX_INFO 1 /* 1=> fix bug: Either stereobond direction in Aux_Info; 0=> do not fix */ |
#define FIX_EMPTY_LAYER_BUG 0 |
#define FIX_GAF_2019_1 1 |
#define FIX_GAF_2019_2 1 |
#define FIX_GAF_2019_3 1 |
#define FIX_GAF_2020_25607 1 |
#define FIX_GAF_2020_25726 1 |
#define FIX_GAF_2020_25741 1 |
#define FIX_GAF_2020_GENERIC 1 |
#define FIX_H_CHECKING_TAUT 1 /* 1 => Fix moveable H or (-) before checking if taut. exchange is possible */ |
#define FIX_I2I_STEREOCONVERSION_BUG 1 /* (2008-03-06) 1=> Fix bug of i2i conversion SAbs-->(SRel||Srac) */ |
#define FIX_I2I_STEREOCONVERSION_BUG2 1 /* (2008-04-02) 1=> Fix bug of i2i conversion (missed empty /t) */ |
#define FIX_I2I_STEREOCONVERSION_BUG3 1 /* (2008-04-10) 1=> Fix bug of i2i conversion */ |
#define FIX_IMPOSSIBLE_H_ISOTOPE_BUG 1 /* (2018-01-25) Bug reported by Andrew Dalke, inchi-discuss */ |
#define FIX_ISO_FIXEDH_BUG 1 /* (2007-09-24) 1=> Fix bug: missing fixed-H iso segment in case of single removed D(+) */ |
#define FIX_ISO_FIXEDH_BUG_READ 0 /* (2007-09-24) 1=> Accommodate this InChI bug in reading InChI */ |
#define FIX_KEEP_H_ON_NH_ANION 0 |
#define FIX_N_MINUS_NORN_BUG 0 |
#define FIX_N_V_METAL_BONDS_GPF 1 /* 1=> (NEEDED) InChI v1 GPF bug fix */ |
#define FIX_NORM_BUG_ADD_ION_PAIR 1 /* 1=> (NEEDED) fix bug: Miscount number of charges when creating an ion pair */ |
#define FIX_NP_MINUS_BUG 1 /* 2010-03-11 DT Fix for bug reported by Timo Boehme */ |
#define FIX_NUM_TG 0 /* increase number of t-groups for isothiocyanate */ |
#define FIX_ODD_THINGS_REM_Plus_BUG 0 |
#define FIX_OLEAN_SPIRO_CHIRALITY_DETECTION_BUG 1 |
#define FIX_ONE_LINE_INCHI_INPUT_CONVERSION_ISSUE 1 |
#define FIX_OSS_FUZZ_25604 1 |
#define FIX_OSS_FUZZ_25734_28139 1 |
#define FIX_OSS_FUZZ_30162_30343 1 |
#define FIX_READ_AUX_MEM_LEAK 1 |
#define FIX_READ_LONG_LINE_BUG 1 /* 1=> (NEEDED) prevent failure when reading AuxInfo and InChI is too long */ |
#define FIX_REM_ION_PAIRS_Si_BUG 0 |
#define FIX_REM_PROTON_COUNT_BUG 1 /* 1=> (NEEDED) check for number of actually removed protons and issue an error if mismatch */ |
#define FIX_RENUM_BUG_FOR_CASE_OF_ACIDIC_OH_AT_P_PLUS 1 |
#define FIX_STEREO_SCALING_BUG 0 |
#define FIX_STEREOCOUNT_ERR 1 /* (2018-01-09) Supplied by DT */ |
#define FIX_TACN_POSSIBLE_BUG 0 |
#define FIX_TERM_H_CHRG_BUG 1 /* (2008-06-06) IPl) */ |
#define FIX_TRANSPOSITION_CHARGE_BUG 1 /* (2008-01-02) fix bug that leads to missed charge in some cases when /o is present */ |
#define FIX_UNDERIV_TO_SDF /* prevent bond normalization if underivatization result goes to SDF 2013-05-10 DCh */ |
#define HAL_ACID_H_XCHG 1 /* allow iso H exchange to HX (X=halogen) and H2Y (Y=halcogen) */ |
#define HYDROGENS_IN_INIT_RANKS 1 /* 1=> include num_H in initial ranking */ |
#define I2S_MODIFY_OUTPUT 1 /* 1=> Allow various InChI2InChI output types from cInChI */ |
#define IGNORE_SINGLE_ENDPOINTS 1 /* 1 => see FindAccessibleEndPoints() in INChITaut.c */ |
#define IGNORE_TGROUP_WITHOUT_H 1 /* ignore tautomeric groups containing charges only */ |
#define INCHI_ACD_LABS_PREFIX '-' |
#define INCHI_ALT_OPT_PREFIX '-' |
#define INCHI_BAS 0 /* 0 => disconnected or normal */ |
#define inchi_calloc calloc |
#define inchi_free | ( | X | ) | do{ if(X) free(X); }while(0) |
#define INCHI_HEAPCHK /* default: no explicit heap checking during the execution */ |
#define INCHI_IOS_TYPE_FILE 2 |
#define INCHI_IOS_TYPE_NONE 0 |
#define INCHI_IOS_TYPE_STRING 1 |
#define inchi_malloc malloc |
#define INCHI_NAM_VER_DELIM "=" |
#define INCHI_NAME "InChI" |
#define INCHI_NUM 2 /* = array size; member indexes: */ |
#define INCHI_OPTION_PREFX '-' |
#define INCHI_PATH_DELIM '/' |
#define inchi_realloc realloc |
#define INCHI_REC 1 /* 1 => reconnected */ |
#define INCHI_T_NUM_MOVABLE 2 |
#define INCHI_VERSION "1" |
#define INCL_NON_6AROM 1 /* 1 => mark all arom. bonds; 0=>mark arom. bonds only in 6-member rings */ |
#define INCL_NON_SALT_CANDIDATATES |
#define INCLUDE_NORMALIZATION_ENTRY_POINT 0 |
#define KETO_ENOL_TAUT 1 /* include keto-enol tautomerism */ |
#define MAX_NUM_STEREO_ATOM_NEIGH 4 |
#define MAX_NUM_STEREO_BOND_NEIGH 3 |
#define MAX_NUM_STEREO_BONDS 3 |
#define MIN_NUM_STEREO_BOND_NEIGH 2 |
#define MIN_SB_RING_SIZE 8 /* do not assume stereo bonds in rings containing 3..MIN_SB_RING_SIZE-1 atoms */ |
#define MOVE_CHARGES 1 /* 1 => take moveable charges into account */ |
#define MOVE_PPLUS_TO_REMOVE_PROTONS |
#define MYREALLOC2 | ( | PTRTYPE1, | |
PTRTYPE2, | |||
PTR1, | |||
PTR2, | |||
LEN1, | |||
LEN2, | |||
ERR | |||
) |
#define N_V_STEREOBONDS 1 /* 1=> detect stereobonds incident to N(V); 0 => don't */ |
#define NEUTRALIZE_ENDPOINTS 1 /* 1 => before checking whether an H is moveable make 2 endpoints neutral */ |
#define NEW_STEREOCENTER_CHECK 1 /* 1 => add new stereocenter categories (see bCanInpAtomBeAStereoCenter(...)) */ |
#define NORMALIZE_INP_COORD 0 /* 0=>keep unchanged, 1 => make atom coordinates integer by normalizing to avg bond len 20 */ |
#define ONE_BAD_SB_NEIGHBOR 1 /* 1 => allow 1 "bad" bond type neighbor to a stereobond atom. 2004-06-02 */ |
#define ONLY_DOUBLE_BOND_STEREO 0 /* 1=> no alt bond stereo, no taut. bond attachment to stereo bond */ |
#define OPPOSITE_CHARGE_IN_CGROUP 1 /* 1=> allow N(-) in (+) c-group, 0=> disallow */ |
#define OUT_N1 0 /* non-tautomeric only */ |
#define OUT_NN 4 /* only non-taut representations: non-taut else tautomeric */ |
#define OUT_NT 2 /* only non-taut representations of tautomeric */ |
#define OUT_T1 1 /* tautomeric if present otherwise non-tautomeric */ |
#define OUT_TN |
#define OUTPUT_CONNECTED_METAL_ONLY |
#define POLYMERS_LEGACY 2 /* v. 1.05 mode, no explicit Zz (internally they are here) */ |
#define POLYMERS_LEGACY_PLUS |
#define POLYMERS_MODERN 1 /* v. 1.06+ way to treat polymers with Zz */ |
#define POLYMERS_NO 0 /* ignore polymers */ |
#define PROPAGATE_ILL_DEF_STEREO 1 /* 1=> if at least one of the pair of constitutionally identical (far) neighbors */ |
#define qfree | ( | X | ) | do{if(X){inchi_free(X);(X)=NULL;}}while(0) |
#define qmalloc | ( | X | ) | inchi_malloc(X) |
#define qzfree | ( | X | ) | do{if(X){inchi_free(X);(X)=NULL;}}while(0) |
#define READ_INCHI_KEEP_BALANCE_P 0x00000004 |
#define READ_INCHI_OUTPUT_INCHI 0x00000001 |
#define READ_INCHI_SPLIT_OUTPUT 0x00000002 |
#define READ_INCHI_STRING 1 /* 1=> input InChI string and process it */ |
#define READ_INCHI_TO_STRUCTURE 0x00000008 |
#define RECONNECT_METALS |
#define REL_RAC_STEREO_IGN_1_SC 0 /* 1=> drop from InChI sp3 stereo in components that have a single stereocenter */ |
#define RELEASE_IS_FINAL 1 /* final release */ |
#define REMOVE_CALC_NONSTEREO 1 /* 1=> check new stereo numberings to remove parities from non-stereogenic elements */ |
#define REMOVE_ION_PAIRS_DISC_STRU 1 /* 1=> new post-preprocessing: remove charhes after metal disconnection */ |
#define REMOVE_ION_PAIRS_EARLY 1 /* 1=> new preprocessing: step 1 before disconnecting metals in fix_odd_things() */ |
#define REMOVE_ION_PAIRS_FIX_BONDS 1 /* 1=> step2: set unchangeable bonds around removed ion pairs */ |
#define REMOVE_ION_PAIRS_ORIG_STRU |
#define REMOVE_KNOWN_NONSTEREO 1 /* 1=> check in advance known stereo to remove parities from non-stereogenic elements */ |
#define REMOVE_TGROUP_CHARGE 0 /* 0: do not remove charge information from tautomeric groups */ |
#define REPLACE_ALT_WITH_TAUT 1 /* 1 => replace alt bonds with tautomeric bonds in case of standard t-groups */ |
#define S_VI_O_PLUS_METAL_FIX_BOND 1 /* 1=> count double bond M-O(+)=S as O=S in S(VI) ans S(VIII) fixing bonds */ |
#define SALT_WITH_PROTONS 1 /* 1=> (new new) include proton migrarion C-SH, =C-OH, NH+ */ |
#define SDF_OUTPUT_DT 1 /* 1=> all option -SdfAtomsDT to output D and T into SDfile */ |
#define SDF_OUTPUT_V2000 1 /* 1=>always output V2000 SDfile, 0=>only if needed */ |
#define SINGLET_IS_TRIPLET |
#define STEREO_AT_MARK 8 /* > MAX_NUM_STEREO_BONDS */ |
#define STEREO_AT_ZZ 0 |
#define STEREO_CENTER_BOND4_NORM 0 /* set length of the added bond around a stereocenter = 1 before getting the parity */ |
#define STEREO_CENTER_BONDS_NORM 1 /* set length of the bonds around a stereocenter = 1 before getting the parity */ |
#define STEREO_WEDGE_ONLY 1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends */ |
#define STEREO_WEDGE_ONLY 1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends 1.12Beta */ |
#define TARGET_PLATFORM "Linux" |
#define TAUT_15_NON_RING 1 /* 1,5 tautomerism with endpoints not in ring */ |
#define TAUT_4PYRIDINOL_RINGS 1 /* 1=> OH-C5H4N rings tautomerism */ |
#define TAUT_IGNORE_EQL_ENDPOINTS |
#define TAUT_INI 2 /* 2 => intermediate tautomeric structure */ |
#define TAUT_NON 0 /* 0 => normal structure */ |
#define TAUT_NUM 2 /* = array size; member indexes: */ |
#define TAUT_OTHER 1 |
#define TAUT_PT_06_00 1 /* tautomerism rule PT_06_00 */ |
#define TAUT_PT_13_00 1 /* tautomerism rule PT_13_00 */ |
#define TAUT_PT_16_00 1 /* tautomerism rule PT_16_00 */ |
#define TAUT_PT_18_00 1 /* tautomerism rule PT_18_00 */ |
#define TAUT_PT_22_00 1 /* tautomerism rule PT_22_00 */ |
#define TAUT_PT_39_00 1 /* tautomerism rule PT_39_00 */ |
#define TAUT_PYRAZOLE_RINGS 1 /* 1=> tautomerizm in pyrazole rings */ |
#define TAUT_RINGS_ATTACH_CHAIN 1 /* 1=> allow only chain attachments to tautomeric endpoints */ |
#define TAUT_TROPOLONE_5 1 /* 1=> taut. similar to tropolone, 5-member ring */ |
#define TAUT_TROPOLONE_7 1 /* 1=> tautomeric 7-member rings ON */ |
#define TAUT_YES 1 /* 1 => tautomeric */ |
#define TEST_REMOVE_S_ATOMS |
#define TG_FLAG_1_5_TAUT 0x00100000 /* turn on 1,5 tautomerism detection */ |
#define TG_FLAG_ALL_SALT_DONE |
#define TG_FLAG_ALL_TAUTOMERIC |
#define TG_FLAG_ALLOW_NO_NEGTV_O 0x00000020 /* CHARGED_SALTS_ONLY=0 (debug) find long-range H-only tautomerism on =C-OH, >C=O */ |
#define TG_FLAG_ALLOW_NO_NEGTV_O_DONE 0x00000040 |
#define TG_FLAG_ARSINE_STEREO 0x00010000 /* add arsine sp3 stereo */ |
#define TG_FLAG_CHECK_VALENCE_COORD 0x00000200 /* do not disconnect "coord. centers" with usual valence */ |
#define TG_FLAG_CHECK_VALENCE_COORD_DONE 0x00000200 /* did not disconnect "coord. centers" with usual valence */ |
#define TG_FLAG_DISCONNECT_COORD 0x00000080 /* find "coord. centers" and disconnect them */ |
#define TG_FLAG_DISCONNECT_COORD_DONE 0x00000100 /* found and disconnected "coord. centers" */ |
#define TG_FLAG_DISCONNECT_SALTS 0x00000002 /* DISCONNECT_SALTS disconnect */ |
#define TG_FLAG_DISCONNECT_SALTS_DONE 0x00000004 |
#define TG_FLAG_FIX_ISO_FIXEDH_BUG 0x00200000 /* fix bug found after v.102b (isotopic H representation) */ |
#define TG_FLAG_FIX_ODD_THINGS_DONE 0x00000800 /* fixed drawing ambiguities in fix_odd_things */ |
#define TG_FLAG_FIX_SP3_BUG 0x00040000 /* fix sp3 stereo bug: overlapping 2D stereo bond & coordinate scaling */ |
#define TG_FLAG_FIX_TERM_H_CHRG_BUG 0x00400000 /* fix bug found after v.102b (moving H charge in 'remove_terminal_HDT') */ |
#define TG_FLAG_FOUND_ISOTOPIC_ATOM_DONE 0x00008000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */ |
#define TG_FLAG_FOUND_ISOTOPIC_H_DONE 0x00004000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */ |
#define TG_FLAG_FOUND_SALT_CHARGES_DONE 0x00002000 /* not assigned: preprocessing detected possibility of salt-type tautomerism */ |
#define TG_FLAG_H_ALREADY_REMOVED 0x00020000 /* processing structure restored from InChI */ |
#define TG_FLAG_HARD_ADD_REM_PROTONS 0x00001000 /* add/remove protons to neutralize in hard way */ |
#define TG_FLAG_KETO_ENOL_TAUT 0x00080000 /* turn on keto-enol tautomerism detection */ |
#define TG_FLAG_MERGE_TAUT_SALTS 0x00000040 /* DISCONNECT_SALTS merge all "salt"-t-groups and other =C-OH into one t-group */ |
#define TG_FLAG_MERGE_TAUT_SALTS_DONE 0x00000080 /* added non-taut O to taut groups */ |
#define TG_FLAG_MOVE_CHARGE_COORD_DONE 0x00000400 /* changed charge of a disconnected ligand to fit its valence */ |
#define TG_FLAG_MOVE_HPLUS2NEUTR 0x00000400 /* move protons to neutralize */ |
#define TG_FLAG_MOVE_HPLUS2NEUTR_DONE 0x00000001 /* protons have been moved to neutralize */ |
#define TG_FLAG_MOVE_POS_CHARGES 0x00000008 /* MOVE_CHARGES allow long-range movement of N(+), P(+) charges */ |
#define TG_FLAG_MOVE_POS_CHARGES_DONE 0x00000010 |
#define TG_FLAG_PHOSPHINE_STEREO 0x00008000 /* add phosphine sp3 stereo */ |
#define TG_FLAG_POINTED_EDGE_STEREO 0x00002000 /* only pointed edge of stereo bond defines stereo */ |
#define TG_FLAG_PT_06_00 0x02000000 |
#define TG_FLAG_PT_13_00 0x08000000 |
#define TG_FLAG_PT_16_00 0x01000000 |
#define TG_FLAG_PT_18_00 0x10000000 |
#define TG_FLAG_PT_22_00 0x00800000 |
#define TG_FLAG_PT_39_00 0x04000000 |
#define TG_FLAG_RECONNECT_COORD 0x00000100 /* reconnect disconnected "coord. centers" */ |
#define TG_FLAG_TEST_TAUT2_SALTS 0x00000010 /* TEST_REMOVE_S_ATOMS multi-attachement long-range H/(-) taut. on =C-OH, >C=O */ |
#define TG_FLAG_TEST_TAUT2_SALTS_DONE 0x00000020 /* merged t-groups */ |
#define TG_FLAG_TEST_TAUT3_SALTS_DONE 0x00001000 /* merged t-groups + non-O taut atoms */ |
#define TG_FLAG_TEST_TAUT__ATOMS 0x00000001 /* find regular tautomerism */ |
#define TG_FLAG_TEST_TAUT__ATOMS_DONE 0x00000002 |
#define TG_FLAG_TEST_TAUT__SALTS 0x00000004 /* DISCONNECT_SALTS if possible find long-range H/(-) taut. on =C-OH, >C=O */ |
#define TG_FLAG_TEST_TAUT__SALTS_DONE 0x00000008 /* multiple H tautomerism */ |
#define TG_FLAG_VARIABLE_PROTONS 0x00000800 /* add/remove protons to neutralize */ |
#define TRACE_MEMORY_LEAKS 0 /* 0: do not change */ |
#define UNDERIV_ADD_EXPLICIT_H /* Underiv: add removed explict H after underivatization */ |
#define UNDERIV_OOB_nButyl /* 4r2c1 DERIV_RING_O_OUTSIDE_PRECURSOR: 5 at, n-Butyl */ |
#define UNDERIV_PYRROLIDIDES /* 7r1c1 DERIV_RING2_PRRLDD_OUTSIDE_PRECUR */ |
#define UNDERIV_RNH_AcMe /* 2r1c3 R-NH--C(=O)Me => R-NH2: DERIV_BRIDGE_NH */ |
#define UNDERIV_RO_COX_BENZOATES /* 3r1c2 create alcohols from benzoates DERIV_RO_COX */ |
#define UNDERIV_RO_COX_Me /* 3r1c1 RO-C(=O)Me => ROH: create alcohols from acetates DERIV_RO_COX */ |
#define UNDERIV_RO_COX_PENTAFLOUROBENZOATES /* 3r1c3 create alcohols from pentafluorobenzoates DERIV_RO_COX -C(=O)C6F5*/ |
#define UNDERIV_X_OXIME_TBDMS /* 5r2c3 DERIV_X_OXIME: >C=N--O-TBDMS */ |
#define UNDERIV_X_OXIME_TMS /* 5r2c2 DERIV_X_OXIME: >C=N--O-TMS */ |
#define UNDERIVATIZE 1 /* split to possible underivatized fragments */ |
#define UNDERIVATIZE_REPORT 1 /* if SdfValue found, add to SdfValue a list of removed deriv. agents */ |
#define USE_ALLOCA 0 |
#define USE_AUX_RANKING 1 /* 1=> get auxiliary ranking to accelerate canonicalization of H layers */ |
#define USE_AUX_RANKING_ALL 1 /* 1=> include all vertices in CellGetMinNode() selection 0=> only vertices with highest ranks */ |
#define USE_DISTANCES_FOR_RANKING 0 /* 1 => rank ring systems according to distances from terminal */ |
#define USE_ISO_SORT_KEY_HFIXED |
#define USE_SYMMETRY_TO_ACCELERATE 1 /*1 => for fast CT canonicalization, to avoid full enumeration */ |
#define WORSE_PARITY 2 |
typedef struct tagOutputString INCHI_IOS_STRING |
typedef struct tagOutputStream INCHI_IOSTREAM |