InChI
 
Loading...
Searching...
No Matches
mode.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include "bcf_s.h"
+ Include dependency graph for mode.h:

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
 

Macro Definition Documentation

◆ ABC_CT_NUM_CLOSURES

#define ABC_CT_NUM_CLOSURES   1 /* 1=> in coinnections compressed format output decimal number of closures instead of '-' */

◆ ADD_6MEMB_AROM_BOND_PARITY

#define ADD_6MEMB_AROM_BOND_PARITY   1 /* 1 => all arom bonds are stereo bonds */

◆ ADD_ChCh_STEREO_CANON_CHK

#define ADD_ChCh_STEREO_CANON_CHK   0 /* 1 is NOT needed; let it always be 0 */

◆ ADD_CMLPP

#define ADD_CMLPP   0

◆ ADD_MOVEABLE_O_PLUS

#define ADD_MOVEABLE_O_PLUS   1 /* 1=> allow charges on O(+) to move */

◆ ALL_ALT_AS_AROMATIC

#define ALL_ALT_AS_AROMATIC   1 /* 1 => all altrnate bonds (even in cyclooctateraene) treat as aromatic */

◆ ALLOW_EMPTY_INCHI_AS_INPUT

#define ALLOW_EMPTY_INCHI_AS_INPUT   1 /* Allow "InChI=1//" and standard/beta analogues in input */

◆ ALLOW_SUBSTRUCTURE_FILTERING

#define ALLOW_SUBSTRUCTURE_FILTERING   1

◆ ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS

#define ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS   1 /* 1=> consider bond in an alternating circuit stereogenic */

◆ ALT_TAUT

#define ALT_TAUT (   X)    ((X)>TAUT_YES? TAUT_YES : 1-(X)) /* was (1-(X)) */

◆ ALWAYS_ADD_TG_ON_THE_FLY

#define ALWAYS_ADD_TG_ON_THE_FLY   1 /* 1 => disables radical calcellation by taut-charge movement */

◆ ANY_ATOM_IN_ALT_CYCLE

#define ANY_ATOM_IN_ALT_CYCLE   1 /* 1=> accept any atom in alternating bond circuit, 0=>only some */

◆ APPLY_IMPLICIT_H_DOWN_RULE

#define APPLY_IMPLICIT_H_DOWN_RULE   0 /* 1=> if 3 non-H atoms around stereocenter are in same plane */

◆ BEST_PARITY

#define BEST_PARITY   1 /* odd */

◆ BNS_MARK_EDGE_2_DISCONNECT

#define BNS_MARK_EDGE_2_DISCONNECT   1 /* 1=> mark edge as temp forbidden instead of disconnection */

◆ BNS_PROTECT_FROM_TAUT

#define BNS_PROTECT_FROM_TAUT   1 /* 1=> do not allow testing of bonds to acetyl or nitro */

◆ BNS_RAD_SEARCH

#define BNS_RAD_SEARCH   1 /* 1=> prevent normalization failures due to radical centers */

◆ bOUTPUT_ONE_STRUCT_TIME [1/2]

#define bOUTPUT_ONE_STRUCT_TIME   1 /* 1 => output each structure time (non-release only) */

◆ bOUTPUT_ONE_STRUCT_TIME [2/2]

#define bOUTPUT_ONE_STRUCT_TIME   0

◆ BREAK_ALSO_NEIGH_TIE

#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 */

◆ BREAK_ALSO_NEIGH_TIE_ROTATE

#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) */

◆ BREAK_ONE_MORE_SC_TIE

#define BREAK_ONE_MORE_SC_TIE   1 /* break one more tie when comparing possible stereocenter neighbors */

◆ bRELEASE_VERSION

#define bRELEASE_VERSION   1 /* 1=> release version; comment out to disable */

◆ bREUSE_INCHI

#define bREUSE_INCHI
Value:
1 /* 1=> do not recalulate INChI for components in reconnected
* structure that are same as in the connected one */

◆ BUILD_WITH_AMI

#define BUILD_WITH_AMI   1

◆ BUILD_WITH_ENG_OPTIONS

#define BUILD_WITH_ENG_OPTIONS   0

◆ CANON_FIXH_TRANS

#define CANON_FIXH_TRANS   1 /* produce canonical fixed-H transposition */

◆ CANON_MODE_CT

#define CANON_MODE_CT   (CMODE_CT)

◆ CANON_MODE_ISO

#define CANON_MODE_ISO   (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT)

◆ CANON_MODE_ISO_STEREO

#define CANON_MODE_ISO_STEREO   (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT|CMODE_ISO_STEREO)

◆ CANON_MODE_MASK

#define CANON_MODE_MASK   0x00FF /* used to determine canonicalization mode */

◆ CANON_MODE_STEREO

#define CANON_MODE_STEREO   (CMODE_CT|CMODE_STEREO)

◆ CANON_MODE_TAUT

#define CANON_MODE_TAUT   (CMODE_CT|CMODE_TAUT)

◆ CANON_TAUTOMERS

#define CANON_TAUTOMERS   1 /* 1=> process tautomers */

◆ CHARGED_SALTS_ONLY

#define CHARGED_SALTS_ONLY
Value:
1 /* 1=>(default)do not test far salts tautomerism if
* no negative charge(s) present */

◆ CHECK_AROMBOND2ALT

#define CHECK_AROMBOND2ALT   1 /* 1=> check whether arom->alt bond conversion succeeded */

◆ CHECK_C2v_S4_SYMM

#define CHECK_C2v_S4_SYMM   0 /* post-1.12Beta 1=> check if a stereocenter has C2v or S4 symmetry; 0=>old mode */

◆ CHECK_METAL_VALENCE

#define CHECK_METAL_VALENCE   0 /* 1=> disconnect only metals that have abnormal valence */

◆ CHECK_STRTOL_ATNUMB

#define CHECK_STRTOL_ATNUMB   1

◆ CMODE_CT

#define CMODE_CT   0x000001

◆ CMODE_ISO

#define CMODE_ISO   0x000002

◆ CMODE_ISO_OUT

#define CMODE_ISO_OUT   0x000004 /* obsolete ? */

◆ CMODE_ISO_STEREO

#define CMODE_ISO_STEREO   0x000010

◆ CMODE_NO_ALT_SBONDS

#define CMODE_NO_ALT_SBONDS   0x000100 /* 6-14-2002: do not assign stereo to alternating bonds */

◆ CMODE_NOEQ_STEREO

#define CMODE_NOEQ_STEREO   0x000040 /* 5-24-2002: do not use stereo equivalence to accelerate */

◆ CMODE_RACEMIC_STEREO

#define CMODE_RACEMIC_STEREO   0x000400 /* RAC All Racemic Stereo */

◆ CMODE_REDNDNT_STEREO

#define CMODE_REDNDNT_STEREO   0x000080 /* 6-11-2002: do not check for redundant stereo elements */

◆ CMODE_RELATIVE_STEREO

#define CMODE_RELATIVE_STEREO   0x000200 /* REL All Relative Stereo */

◆ CMODE_SB_IGN_ALL_UU

#define CMODE_SB_IGN_ALL_UU   0x001000 /* IAUSC Ignore stereobonds if All Undef/Unknown */

◆ CMODE_SC_IGN_ALL_UU

#define CMODE_SC_IGN_ALL_UU   0x000800 /* IAUSC Ignore stereocenters if All Undef/Unknown */

◆ CMODE_STEREO

#define CMODE_STEREO   0x000008

◆ CMODE_TAUT

#define CMODE_TAUT   0x000020

◆ COMPILE_ANSI_ONLY

#define COMPILE_ANSI_ONLY

◆ CT_ATOMID

#define CT_ATOMID   CT_ATOMID_IS_CURRANK /*CT_ATOMID_DONTINCLUDE */

◆ CT_ATOMID_DONTINCLUDE

#define CT_ATOMID_DONTINCLUDE   1

◆ CT_ATOMID_IS_CURRANK

#define CT_ATOMID_IS_CURRANK   3

◆ CT_ATOMID_IS_INITRANK

#define CT_ATOMID_IS_INITRANK   2

◆ CT_GREATER_THAN

#define CT_GREATER_THAN   >

◆ CT_INITVALUE

#define CT_INITVALUE   ~0

◆ CT_NEIGH_INCREASE

#define CT_NEIGH_INCREASE   /* in CT, neighbors ranks increase */

◆ CT_NEIGH_SMALLER

#define CT_NEIGH_SMALLER   /* in CT, include neighbors with smaller ranks */

◆ CT_NEIGH_SMALLER_THAN

#define CT_NEIGH_SMALLER_THAN   <

◆ CT_SMALLEST

#define CT_SMALLEST   /* minimal CT */

◆ DEBUG_POLYMERS

#define DEBUG_POLYMERS   0

◆ DISABLE_READ_COMPRESSED_INCHI

#define DISABLE_READ_COMPRESSED_INCHI   1

◆ DISCONNECT_METALS

#define DISCONNECT_METALS   1 /* make main layer disconnected */ /* djb-rwth: default 1 */

◆ DISCONNECT_SALTS

#define DISCONNECT_SALTS   1 /* 1=>disconnect metal atoms from salts, 0=>dont */ /* djb-rwth: default 1 */

◆ DISPLAY_DEBUG_DATA_C_POINT

#define DISPLAY_DEBUG_DATA_C_POINT   0 /* disabled release version for now */

◆ DISPLAY_ORIG_AT_NUMBERS

#define DISPLAY_ORIG_AT_NUMBERS   1 /* 1 => in an uncanonicalized components display orig. atom numbers (default) */

◆ DISPLAY_RING_SYSTEMS

#define DISPLAY_RING_SYSTEMS   0 /* 1 => for debug only; displays: */

◆ DISPLAY_ZZ_AS_STAR

#define DISPLAY_ZZ_AS_STAR   1

◆ DOUBLE_BOND_NEIGH_LIST

#define DOUBLE_BOND_NEIGH_LIST   0 /* 1 => include double bond neighbor in NeighList 2 times */

◆ DRAW_AROM_TAUT

#define DRAW_AROM_TAUT   1 /* 1=> draw distinct aromatic & tautomer bonds, 0=> don't */

◆ EMBED_REC_METALS_INCHI

#define EMBED_REC_METALS_INCHI
Value:
1 /* 1=> (default) output Reconnected embedded in Disconnected INChI;
* 0=> separate output */

◆ EQL_H_NUM_TOGETHER

#define EQL_H_NUM_TOGETHER   1 /* 1=> output 1-3,5H2 intead of 1-3H2,5H2 (CT_MODE_EQL_H_TOGETHER) */

◆ EXCL_ALL_AROM_BOND_PARITY

#define EXCL_ALL_AROM_BOND_PARITY   0 /* 1 => any arom atom cannot belong to stereo bond. */

◆ EXTR_2EQL2CENTER_TO_REMOVE_PARITY

#define EXTR_2EQL2CENTER_TO_REMOVE_PARITY   0x000004

◆ EXTR_CALC_USED_TO_REMOVE_PARITY

#define EXTR_CALC_USED_TO_REMOVE_PARITY   0x000002

◆ EXTR_CANON_NE_EQUITABLE

#define EXTR_CANON_NE_EQUITABLE   0x004000 /* find structures where canonical partition is different from equitable */

◆ EXTR_FLAGS

◆ EXTR_HAS_ATOM_WITH_DEFINED_PARITY

#define EXTR_HAS_ATOM_WITH_DEFINED_PARITY   0x000008

◆ EXTR_HAS_FEATURE

#define EXTR_HAS_FEATURE   0x010000 /* found a feature */

◆ EXTR_HAS_METAL_ATOM

#define EXTR_HAS_METAL_ATOM   0x001000

◆ EXTR_HAS_PROTON_PN

#define EXTR_HAS_PROTON_PN   0x008000 /* has movable H+ attached to N or P */

◆ EXTR_KNOWN_USED_TO_REMOVE_PARITY

#define EXTR_KNOWN_USED_TO_REMOVE_PARITY   0x000001

◆ EXTR_MASK

#define EXTR_MASK   0 /*EXTR_TAUT_TREATMENT_CHARGES*/ /*(EXTR_HAS_FEATURE)*/ /*(EXTR_UNUSUAL_VALENCES | EXTR_HAS_METAL_ATOM)*/ /* 0 to disable */

◆ EXTR_METAL_WAS_DISCONNECTED

#define EXTR_METAL_WAS_DISCONNECTED   0x000100

◆ EXTR_METAL_WAS_NOT_DISCONNECTED

#define EXTR_METAL_WAS_NOT_DISCONNECTED   0x000200

◆ EXTR_NON_TRIVIAL_STEREO

#define EXTR_NON_TRIVIAL_STEREO   0x000400 /* (Inv != Abs stereo) && (parities can't be obtained by inverting them) */

◆ EXTR_REMOVE_PARITY_WARNING

#define EXTR_REMOVE_PARITY_WARNING   0x000010

◆ EXTR_SALT_PROTON_MOVE_ERR_WARN

#define EXTR_SALT_PROTON_MOVE_ERR_WARN   0x000080

◆ EXTR_SALT_PROTON_MOVED

#define EXTR_SALT_PROTON_MOVED   0x000040

◆ EXTR_SALT_WAS_DISCONNECTED

#define EXTR_SALT_WAS_DISCONNECTED   0x000020

◆ EXTR_TAUT_TREATMENT_CHARGES

#define EXTR_TAUT_TREATMENT_CHARGES   0x020000 /* tautomeric treatment of charges */

◆ EXTR_TEST_TAUT3_SALTS_DONE

#define EXTR_TEST_TAUT3_SALTS_DONE   0x002000 /* non-oxygen t-points used to discover tautomerism of merged t-groups */

◆ EXTR_TRANSPOSITION_EXAMPLES

#define EXTR_TRANSPOSITION_EXAMPLES   0x040000 /* extract structures that have different mobile-H and fixed-H orders */

◆ EXTR_UNUSUAL_VALENCES

#define EXTR_UNUSUAL_VALENCES   0x000800

◆ fast_alloc

#define fast_alloc (   X)    inchi_malloc(X)

◆ fast_free

#define fast_free (   X)    inchi_free(X)

◆ FIND_CANON_NE_EQUITABLE

#define FIND_CANON_NE_EQUITABLE   0 /* 0=>normal mode */

◆ FIND_RING_SYSTEMS

#define FIND_RING_SYSTEMS   1 /* 1 => find and mark ring systems, blocks, cut-vertices */

◆ FIND_RINS_SYSTEMS_DISTANCES

#define FIND_RINS_SYSTEMS_DISTANCES   0 /* 1 => find ring system and atom distance from terminal */

◆ FIX_2D_STEREO_BORDER_CASE

#define FIX_2D_STEREO_BORDER_CASE   0

◆ FIX_ADJ_RAD

#define FIX_ADJ_RAD   0

◆ FIX_AROM_RADICAL

#define FIX_AROM_RADICAL   1 /* (2011-05-09) 1=> Fix bug which leads for different InChI */

◆ FIX_AVOID_ADP

#define FIX_AVOID_ADP   0

◆ FIX_BOND23_IN_TAUT

#define FIX_BOND23_IN_TAUT   0

◆ FIX_CANCEL_CHARGE_COUNT_BUG

#define FIX_CANCEL_CHARGE_COUNT_BUG   0

◆ FIX_ChCh_CONSTIT_CANON_BUG

#define FIX_ChCh_CONSTIT_CANON_BUG   1 /* 1=> (NEEDED) */

◆ FIX_ChCh_STEREO_CANON_BUG

#define FIX_ChCh_STEREO_CANON_BUG   1 /* 1=> (NEEDED) */

◆ FIX_CPOINT_BOND_CAP2

#define FIX_CPOINT_BOND_CAP2   0

◆ FIX_CURE53_ISSUE_HEAP_BUFFER_OVERFLOW_INCHITOINPATOM

#define FIX_CURE53_ISSUE_HEAP_BUFFER_OVERFLOW_INCHITOINPATOM   1

◆ FIX_CURE53_ISSUE_NULL_DEREFERENCE_MAKE_A_COPY_OF_T_GROUP_INFO

#define FIX_CURE53_ISSUE_NULL_DEREFERENCE_MAKE_A_COPY_OF_T_GROUP_INFO   1

◆ FIX_CURE53_ISSUE_OOB_ALREADY_HAVE_THIS_MESSAGE

#define FIX_CURE53_ISSUE_OOB_ALREADY_HAVE_THIS_MESSAGE   1

◆ FIX_DALKE_BUGS

#define FIX_DALKE_BUGS   1

◆ FIX_EITHER_DB_AS_NONSTEREO

#define FIX_EITHER_DB_AS_NONSTEREO   0

◆ FIX_EITHER_STEREO_IN_AUX_INFO

#define FIX_EITHER_STEREO_IN_AUX_INFO   1 /* 1=> fix bug: Either stereobond direction in Aux_Info; 0=> do not fix */

◆ FIX_EMPTY_LAYER_BUG

#define FIX_EMPTY_LAYER_BUG   0

◆ FIX_GAF_2019_1

#define FIX_GAF_2019_1   1

◆ FIX_GAF_2019_2

#define FIX_GAF_2019_2   1

◆ FIX_GAF_2019_3

#define FIX_GAF_2019_3   1

◆ FIX_GAF_2020_25607

#define FIX_GAF_2020_25607   1

◆ FIX_GAF_2020_25726

#define FIX_GAF_2020_25726   1

◆ FIX_GAF_2020_25741

#define FIX_GAF_2020_25741   1

◆ FIX_GAF_2020_GENERIC

#define FIX_GAF_2020_GENERIC   1

◆ FIX_H_CHECKING_TAUT

#define FIX_H_CHECKING_TAUT   1 /* 1 => Fix moveable H or (-) before checking if taut. exchange is possible */

◆ FIX_I2I_STEREOCONVERSION_BUG

#define FIX_I2I_STEREOCONVERSION_BUG   1 /* (2008-03-06) 1=> Fix bug of i2i conversion SAbs-->(SRel||Srac) */

◆ FIX_I2I_STEREOCONVERSION_BUG2

#define FIX_I2I_STEREOCONVERSION_BUG2   1 /* (2008-04-02) 1=> Fix bug of i2i conversion (missed empty /t) */

◆ FIX_I2I_STEREOCONVERSION_BUG3

#define FIX_I2I_STEREOCONVERSION_BUG3   1 /* (2008-04-10) 1=> Fix bug of i2i conversion */

◆ FIX_IMPOSSIBLE_H_ISOTOPE_BUG

#define FIX_IMPOSSIBLE_H_ISOTOPE_BUG   1 /* (2018-01-25) Bug reported by Andrew Dalke, inchi-discuss */

◆ FIX_ISO_FIXEDH_BUG

#define FIX_ISO_FIXEDH_BUG   1 /* (2007-09-24) 1=> Fix bug: missing fixed-H iso segment in case of single removed D(+) */

◆ FIX_ISO_FIXEDH_BUG_READ

#define FIX_ISO_FIXEDH_BUG_READ   0 /* (2007-09-24) 1=> Accommodate this InChI bug in reading InChI */

◆ FIX_KEEP_H_ON_NH_ANION

#define FIX_KEEP_H_ON_NH_ANION   0

◆ FIX_N_MINUS_NORN_BUG

#define FIX_N_MINUS_NORN_BUG   0

◆ FIX_N_V_METAL_BONDS_GPF

#define FIX_N_V_METAL_BONDS_GPF   1 /* 1=> (NEEDED) InChI v1 GPF bug fix */

◆ FIX_NORM_BUG_ADD_ION_PAIR

#define FIX_NORM_BUG_ADD_ION_PAIR   1 /* 1=> (NEEDED) fix bug: Miscount number of charges when creating an ion pair */

◆ FIX_NP_MINUS_BUG

#define FIX_NP_MINUS_BUG   1 /* 2010-03-11 DT Fix for bug reported by Timo Boehme */

◆ FIX_NUM_TG

#define FIX_NUM_TG   0 /* increase number of t-groups for isothiocyanate */

◆ FIX_ODD_THINGS_REM_Plus_BUG

#define FIX_ODD_THINGS_REM_Plus_BUG   0

◆ FIX_OLEAN_SPIRO_CHIRALITY_DETECTION_BUG

#define FIX_OLEAN_SPIRO_CHIRALITY_DETECTION_BUG   1

◆ FIX_ONE_LINE_INCHI_INPUT_CONVERSION_ISSUE

#define FIX_ONE_LINE_INCHI_INPUT_CONVERSION_ISSUE   1

◆ FIX_OSS_FUZZ_25604

#define FIX_OSS_FUZZ_25604   1

◆ FIX_OSS_FUZZ_25734_28139

#define FIX_OSS_FUZZ_25734_28139   1

◆ FIX_OSS_FUZZ_30162_30343

#define FIX_OSS_FUZZ_30162_30343   1

◆ FIX_READ_AUX_MEM_LEAK

#define FIX_READ_AUX_MEM_LEAK   1

◆ FIX_READ_LONG_LINE_BUG

#define FIX_READ_LONG_LINE_BUG   1 /* 1=> (NEEDED) prevent failure when reading AuxInfo and InChI is too long */

◆ FIX_REM_ION_PAIRS_Si_BUG

#define FIX_REM_ION_PAIRS_Si_BUG   0

◆ FIX_REM_PROTON_COUNT_BUG

#define FIX_REM_PROTON_COUNT_BUG   1 /* 1=> (NEEDED) check for number of actually removed protons and issue an error if mismatch */

◆ FIX_RENUM_BUG_FOR_CASE_OF_ACIDIC_OH_AT_P_PLUS

#define FIX_RENUM_BUG_FOR_CASE_OF_ACIDIC_OH_AT_P_PLUS   1

◆ FIX_STEREO_SCALING_BUG

#define FIX_STEREO_SCALING_BUG   0

◆ FIX_STEREOCOUNT_ERR

#define FIX_STEREOCOUNT_ERR   1 /* (2018-01-09) Supplied by DT */

◆ FIX_TACN_POSSIBLE_BUG

#define FIX_TACN_POSSIBLE_BUG   0

◆ FIX_TERM_H_CHRG_BUG

#define FIX_TERM_H_CHRG_BUG   1 /* (2008-06-06) IPl) */

◆ FIX_TRANSPOSITION_CHARGE_BUG

#define FIX_TRANSPOSITION_CHARGE_BUG   1 /* (2008-01-02) fix bug that leads to missed charge in some cases when /o is present */

◆ FIX_UNDERIV_TO_SDF

#define FIX_UNDERIV_TO_SDF   /* prevent bond normalization if underivatization result goes to SDF 2013-05-10 DCh */

◆ HAL_ACID_H_XCHG

#define HAL_ACID_H_XCHG   1 /* allow iso H exchange to HX (X=halogen) and H2Y (Y=halcogen) */

◆ HYDROGENS_IN_INIT_RANKS

#define HYDROGENS_IN_INIT_RANKS   1 /* 1=> include num_H in initial ranking */

◆ I2S_MODIFY_OUTPUT

#define I2S_MODIFY_OUTPUT   1 /* 1=> Allow various InChI2InChI output types from cInChI */

◆ IGNORE_SINGLE_ENDPOINTS

#define IGNORE_SINGLE_ENDPOINTS   1 /* 1 => see FindAccessibleEndPoints() in INChITaut.c */

◆ IGNORE_TGROUP_WITHOUT_H

#define IGNORE_TGROUP_WITHOUT_H   1 /* ignore tautomeric groups containing charges only */

◆ INCHI_ACD_LABS_PREFIX

#define INCHI_ACD_LABS_PREFIX   '-'

◆ INCHI_ALT_OPT_PREFIX

#define INCHI_ALT_OPT_PREFIX   '-'

◆ INCHI_BAS

#define INCHI_BAS   0 /* 0 => disconnected or normal */

◆ inchi_calloc

#define inchi_calloc   calloc

◆ inchi_free

#define inchi_free (   X)    do{ if(X) free(X); }while(0)

◆ INCHI_HEAPCHK

#define INCHI_HEAPCHK   /* default: no explicit heap checking during the execution */

◆ INCHI_IOS_TYPE_FILE

#define INCHI_IOS_TYPE_FILE   2

◆ INCHI_IOS_TYPE_NONE

#define INCHI_IOS_TYPE_NONE   0

◆ INCHI_IOS_TYPE_STRING

#define INCHI_IOS_TYPE_STRING   1

◆ inchi_malloc

#define inchi_malloc   malloc

◆ INCHI_NAM_VER_DELIM

#define INCHI_NAM_VER_DELIM   "="

◆ INCHI_NAME

#define INCHI_NAME   "InChI"

◆ INCHI_NUM

#define INCHI_NUM   2 /* = array size; member indexes: */

◆ INCHI_OPTION_PREFX

#define INCHI_OPTION_PREFX   '-'

◆ INCHI_PATH_DELIM

#define INCHI_PATH_DELIM   '/'

◆ inchi_realloc

#define inchi_realloc   realloc

◆ INCHI_REC

#define INCHI_REC   1 /* 1 => reconnected */

◆ INCHI_T_NUM_MOVABLE

#define INCHI_T_NUM_MOVABLE   2

◆ INCHI_VERSION

#define INCHI_VERSION   "1"

◆ INCL_NON_6AROM

#define INCL_NON_6AROM   1 /* 1 => mark all arom. bonds; 0=>mark arom. bonds only in 6-member rings */

◆ INCL_NON_SALT_CANDIDATATES

#define INCL_NON_SALT_CANDIDATATES
Value:
1 /* 1=> allow H and (-) migrate between "acidic" O and
* other possible endpoints */

◆ INCLUDE_NORMALIZATION_ENTRY_POINT

#define INCLUDE_NORMALIZATION_ENTRY_POINT   0

◆ KETO_ENOL_TAUT

#define KETO_ENOL_TAUT   1 /* include keto-enol tautomerism */

◆ MAX_NUM_STEREO_ATOM_NEIGH

#define MAX_NUM_STEREO_ATOM_NEIGH   4

◆ MAX_NUM_STEREO_BOND_NEIGH

#define MAX_NUM_STEREO_BOND_NEIGH   3

◆ MAX_NUM_STEREO_BONDS

#define MAX_NUM_STEREO_BONDS   3

◆ MIN_NUM_STEREO_BOND_NEIGH

#define MIN_NUM_STEREO_BOND_NEIGH   2

◆ MIN_SB_RING_SIZE

#define MIN_SB_RING_SIZE   8 /* do not assume stereo bonds in rings containing 3..MIN_SB_RING_SIZE-1 atoms */

◆ MOVE_CHARGES

#define MOVE_CHARGES   1 /* 1 => take moveable charges into account */

◆ MOVE_PPLUS_TO_REMOVE_PROTONS

#define MOVE_PPLUS_TO_REMOVE_PROTONS
Value:
0 /* 0=> default; 1=> (disabled) add P/P+ charge group during
* 'hard' proton removal */

◆ MYREALLOC2

#define MYREALLOC2 (   PTRTYPE1,
  PTRTYPE2,
  PTR1,
  PTR2,
  LEN1,
  LEN2,
  ERR 
)
Value:
do { \
if( (LEN1) <= (LEN2) ) {\
PTRTYPE1 * newPTR1 = (PTRTYPE1 *)inchi_calloc( (LEN2)+1, sizeof(PTRTYPE1) );\
PTRTYPE2 * newPTR2 = (PTRTYPE2 *)inchi_calloc( (LEN2)+1, sizeof(PTRTYPE2) );\
if ( newPTR1 && newPTR2 ) { \
if ( (PTR1) && (LEN1) > 0 ) \
(memcpy) ( newPTR1, (PTR1), (LEN1) * sizeof(PTRTYPE1) ); \
if ( (PTR2) && (LEN1) > 0 ) \
(memcpy) ( newPTR2, (PTR2), (LEN1) * sizeof(PTRTYPE2) ); \
if ( PTR1 ) \
inchi_free(PTR1); \
if ( PTR2 ) \
inchi_free(PTR2); \
(PTR1) = newPTR1; \
(PTR2) = newPTR2; \
(LEN1) = (LEN2); \
(ERR) = 0; \
} else { \
inchi_free(newPTR1); \
inchi_free(newPTR2); \
(ERR) = 1; \
} \
} else { (ERR) = 0; } \
} while(0)
#define inchi_calloc
Definition mode.h:1156

◆ N_V_STEREOBONDS

#define N_V_STEREOBONDS   1 /* 1=> detect stereobonds incident to N(V); 0 => don't */

◆ NEUTRALIZE_ENDPOINTS

#define NEUTRALIZE_ENDPOINTS   1 /* 1 => before checking whether an H is moveable make 2 endpoints neutral */

◆ NEW_STEREOCENTER_CHECK

#define NEW_STEREOCENTER_CHECK   1 /* 1 => add new stereocenter categories (see bCanInpAtomBeAStereoCenter(...)) */

◆ NORMALIZE_INP_COORD

#define NORMALIZE_INP_COORD   0 /* 0=>keep unchanged, 1 => make atom coordinates integer by normalizing to avg bond len 20 */

◆ ONE_BAD_SB_NEIGHBOR

#define ONE_BAD_SB_NEIGHBOR   1 /* 1 => allow 1 "bad" bond type neighbor to a stereobond atom. 2004-06-02 */

◆ ONLY_DOUBLE_BOND_STEREO

#define ONLY_DOUBLE_BOND_STEREO   0 /* 1=> no alt bond stereo, no taut. bond attachment to stereo bond */

◆ OPPOSITE_CHARGE_IN_CGROUP

#define OPPOSITE_CHARGE_IN_CGROUP   1 /* 1=> allow N(-) in (+) c-group, 0=> disallow */

◆ OUT_N1

#define OUT_N1   0 /* non-tautomeric only */

◆ OUT_NN

#define OUT_NN   4 /* only non-taut representations: non-taut else tautomeric */

◆ OUT_NT

#define OUT_NT   2 /* only non-taut representations of tautomeric */

◆ OUT_T1

#define OUT_T1   1 /* tautomeric if present otherwise non-tautomeric */

◆ OUT_TN

#define OUT_TN
Value:
3 /* tautomeric if present otherwise non-tautomeric;
separately output non-taut representations of tautomeric if present */

◆ OUTPUT_CONNECTED_METAL_ONLY

#define OUTPUT_CONNECTED_METAL_ONLY
Value:
0 /* 0=> default; 1 => (debug) create only reconnected or
* initial struct. output */

◆ POLYMERS_LEGACY

#define POLYMERS_LEGACY   2 /* v. 1.05 mode, no explicit Zz (internally they are here) */

◆ POLYMERS_LEGACY_PLUS

#define POLYMERS_LEGACY_PLUS
Value:
3 /* v. 1.05 mode with an addition of that in all
frame-shiftable-bistar-CRUs their backbone bonds
are reordered in descending seniority order.
Used as hidden 1st pass in 1.06 treatment */

◆ POLYMERS_MODERN

#define POLYMERS_MODERN   1 /* v. 1.06+ way to treat polymers with Zz */

◆ POLYMERS_NO

#define POLYMERS_NO   0 /* ignore polymers */

◆ PROPAGATE_ILL_DEF_STEREO

#define PROPAGATE_ILL_DEF_STEREO   1 /* 1=> if at least one of the pair of constitutionally identical (far) neighbors */

◆ qfree

#define qfree (   X)    do{if(X){inchi_free(X);(X)=NULL;}}while(0)

◆ qmalloc

#define qmalloc (   X)    inchi_malloc(X)

◆ qzfree

#define qzfree (   X)    do{if(X){inchi_free(X);(X)=NULL;}}while(0)

◆ READ_INCHI_KEEP_BALANCE_P

#define READ_INCHI_KEEP_BALANCE_P   0x00000004

◆ READ_INCHI_OUTPUT_INCHI

#define READ_INCHI_OUTPUT_INCHI   0x00000001

◆ READ_INCHI_SPLIT_OUTPUT

#define READ_INCHI_SPLIT_OUTPUT   0x00000002

◆ READ_INCHI_STRING

#define READ_INCHI_STRING   1 /* 1=> input InChI string and process it */

◆ READ_INCHI_TO_STRUCTURE

#define READ_INCHI_TO_STRUCTURE   0x00000008

◆ RECONNECT_METALS

#define RECONNECT_METALS
Value:
0 /* 1=> by default add reconnected layer in case of coord.
* compound disconnection */ /* djb-rwth: default 0 */

◆ REL_RAC_STEREO_IGN_1_SC

#define REL_RAC_STEREO_IGN_1_SC   0 /* 1=> drop from InChI sp3 stereo in components that have a single stereocenter */

◆ RELEASE_IS_FINAL

#define RELEASE_IS_FINAL   1 /* final release */

◆ REMOVE_CALC_NONSTEREO

#define REMOVE_CALC_NONSTEREO   1 /* 1=> check new stereo numberings to remove parities from non-stereogenic elements */

◆ REMOVE_ION_PAIRS_DISC_STRU

#define REMOVE_ION_PAIRS_DISC_STRU   1 /* 1=> new post-preprocessing: remove charhes after metal disconnection */

◆ REMOVE_ION_PAIRS_EARLY

#define REMOVE_ION_PAIRS_EARLY   1 /* 1=> new preprocessing: step 1 before disconnecting metals in fix_odd_things() */

◆ REMOVE_ION_PAIRS_FIX_BONDS

#define REMOVE_ION_PAIRS_FIX_BONDS   1 /* 1=> step2: set unchangeable bonds around removed ion pairs */

◆ REMOVE_ION_PAIRS_ORIG_STRU

#define REMOVE_ION_PAIRS_ORIG_STRU
Value:
0 /* 0=> normal mode (default)
* 1=> testing mode only: remove ion pairs from the original structure
* to save the changes in the output Molfile (/OutputSDF) or AuxInfo
* NIP=No Ion Pairs
*/

◆ REMOVE_KNOWN_NONSTEREO

#define REMOVE_KNOWN_NONSTEREO   1 /* 1=> check in advance known stereo to remove parities from non-stereogenic elements */

◆ REMOVE_TGROUP_CHARGE

#define REMOVE_TGROUP_CHARGE   0 /* 0: do not remove charge information from tautomeric groups */

◆ REPLACE_ALT_WITH_TAUT

#define REPLACE_ALT_WITH_TAUT   1 /* 1 => replace alt bonds with tautomeric bonds in case of standard t-groups */

◆ RING2CHAIN

#define RING2CHAIN   1 /* open rings R-C(-OH)-O-R => R-C(=O) OH-R */

◆ S_VI_O_PLUS_METAL_FIX_BOND

#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 */

◆ SALT_WITH_PROTONS

#define SALT_WITH_PROTONS   1 /* 1=> (new new) include proton migrarion C-SH, =C-OH, NH+ */

◆ SDF_OUTPUT_DT

#define SDF_OUTPUT_DT   1 /* 1=> all option -SdfAtomsDT to output D and T into SDfile */

◆ SDF_OUTPUT_V2000

#define SDF_OUTPUT_V2000   1 /* 1=>always output V2000 SDfile, 0=>only if needed */

◆ SINGLET_IS_TRIPLET

#define SINGLET_IS_TRIPLET
Value:
1 /* 'singlet' means two electrons make a lone pair instead of 2 bonds
its effect on valence is same as the effect of a triplet */

◆ STEREO_AT_MARK

#define STEREO_AT_MARK   8 /* > MAX_NUM_STEREO_BONDS */

◆ STEREO_AT_ZZ

#define STEREO_AT_ZZ   0

◆ STEREO_CENTER_BOND4_NORM

#define STEREO_CENTER_BOND4_NORM   0 /* set length of the added bond around a stereocenter = 1 before getting the parity */

◆ STEREO_CENTER_BONDS_NORM

#define STEREO_CENTER_BONDS_NORM   1 /* set length of the bonds around a stereocenter = 1 before getting the parity */

◆ STEREO_WEDGE_ONLY [1/2]

#define STEREO_WEDGE_ONLY   1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends */

◆ STEREO_WEDGE_ONLY [2/2]

#define STEREO_WEDGE_ONLY   1 /* 1=> only pointed ends stereo bonds define stereo; 0=> both ends 1.12Beta */

◆ TARGET_PLATFORM

#define TARGET_PLATFORM   "Linux"

◆ TAUT_15_NON_RING

#define TAUT_15_NON_RING   1 /* 1,5 tautomerism with endpoints not in ring */

◆ TAUT_4PYRIDINOL_RINGS

#define TAUT_4PYRIDINOL_RINGS   1 /* 1=> OH-C5H4N rings tautomerism */

◆ TAUT_IGNORE_EQL_ENDPOINTS

#define TAUT_IGNORE_EQL_ENDPOINTS
Value:
0 /* 0=> even though 2 endpoints belong to same t-group check
them to find more alt bonds (new)
1=> ignore and do not check (old mode) */

◆ TAUT_INI

#define TAUT_INI   2 /* 2 => intermediate tautomeric structure */

◆ TAUT_NON

#define TAUT_NON   0 /* 0 => normal structure */

◆ TAUT_NUM

#define TAUT_NUM   2 /* = array size; member indexes: */

◆ TAUT_OTHER

#define TAUT_OTHER   1

◆ TAUT_PT_06_00

#define TAUT_PT_06_00   1 /* tautomerism rule PT_06_00 */

◆ TAUT_PT_13_00

#define TAUT_PT_13_00   1 /* tautomerism rule PT_13_00 */

◆ TAUT_PT_16_00

#define TAUT_PT_16_00   1 /* tautomerism rule PT_16_00 */

◆ TAUT_PT_18_00

#define TAUT_PT_18_00   1 /* tautomerism rule PT_18_00 */

◆ TAUT_PT_22_00

#define TAUT_PT_22_00   1 /* tautomerism rule PT_22_00 */

◆ TAUT_PT_39_00

#define TAUT_PT_39_00   1 /* tautomerism rule PT_39_00 */

◆ TAUT_PYRAZOLE_RINGS

#define TAUT_PYRAZOLE_RINGS   1 /* 1=> tautomerizm in pyrazole rings */

◆ TAUT_RINGS_ATTACH_CHAIN

#define TAUT_RINGS_ATTACH_CHAIN   1 /* 1=> allow only chain attachments to tautomeric endpoints */

◆ TAUT_TROPOLONE_5

#define TAUT_TROPOLONE_5   1 /* 1=> taut. similar to tropolone, 5-member ring */

◆ TAUT_TROPOLONE_7

#define TAUT_TROPOLONE_7   1 /* 1=> tautomeric 7-member rings ON */

◆ TAUT_YES

#define TAUT_YES   1 /* 1 => tautomeric */

◆ TEST_REMOVE_S_ATOMS

#define TEST_REMOVE_S_ATOMS
Value:
1 /* 1=>default: after merging into one group test &
* remove unreachable,
* 0=> old version: test only before merging into one t-group */

◆ TG_FLAG_1_5_TAUT

#define TG_FLAG_1_5_TAUT   0x00100000 /* turn on 1,5 tautomerism detection */

◆ TG_FLAG_ALL_SALT_DONE

#define TG_FLAG_ALL_SALT_DONE
Value:
#define TG_FLAG_TEST_TAUT__SALTS_DONE
Definition mode.h:977
#define TG_FLAG_MERGE_TAUT_SALTS_DONE
Definition mode.h:981
#define TG_FLAG_TEST_TAUT2_SALTS_DONE
Definition mode.h:979

◆ TG_FLAG_ALL_TAUTOMERIC

#define TG_FLAG_ALL_TAUTOMERIC
Value:
#define TG_FLAG_MERGE_TAUT_SALTS
Definition mode.h:936
#define TG_FLAG_TEST_TAUT__SALTS
Definition mode.h:932
#define TG_FLAG_TEST_TAUT2_SALTS
Definition mode.h:934
#define TG_FLAG_TEST_TAUT__ATOMS
Definition mode.h:930

◆ TG_FLAG_ALLOW_NO_NEGTV_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 */

◆ TG_FLAG_ALLOW_NO_NEGTV_O_DONE

#define TG_FLAG_ALLOW_NO_NEGTV_O_DONE   0x00000040

◆ TG_FLAG_ARSINE_STEREO

#define TG_FLAG_ARSINE_STEREO   0x00010000 /* add arsine sp3 stereo */

◆ TG_FLAG_CHECK_VALENCE_COORD

#define TG_FLAG_CHECK_VALENCE_COORD   0x00000200 /* do not disconnect "coord. centers" with usual valence */

◆ TG_FLAG_CHECK_VALENCE_COORD_DONE

#define TG_FLAG_CHECK_VALENCE_COORD_DONE   0x00000200 /* did not disconnect "coord. centers" with usual valence */

◆ TG_FLAG_DISCONNECT_COORD

#define TG_FLAG_DISCONNECT_COORD   0x00000080 /* find "coord. centers" and disconnect them */

◆ TG_FLAG_DISCONNECT_COORD_DONE

#define TG_FLAG_DISCONNECT_COORD_DONE   0x00000100 /* found and disconnected "coord. centers" */

◆ TG_FLAG_DISCONNECT_SALTS

#define TG_FLAG_DISCONNECT_SALTS   0x00000002 /* DISCONNECT_SALTS disconnect */

◆ TG_FLAG_DISCONNECT_SALTS_DONE

#define TG_FLAG_DISCONNECT_SALTS_DONE   0x00000004

◆ TG_FLAG_FIX_ISO_FIXEDH_BUG

#define TG_FLAG_FIX_ISO_FIXEDH_BUG   0x00200000 /* fix bug found after v.102b (isotopic H representation) */

◆ TG_FLAG_FIX_ODD_THINGS_DONE

#define TG_FLAG_FIX_ODD_THINGS_DONE   0x00000800 /* fixed drawing ambiguities in fix_odd_things */

◆ TG_FLAG_FIX_SP3_BUG

#define TG_FLAG_FIX_SP3_BUG   0x00040000 /* fix sp3 stereo bug: overlapping 2D stereo bond & coordinate scaling */

◆ TG_FLAG_FIX_TERM_H_CHRG_BUG

#define TG_FLAG_FIX_TERM_H_CHRG_BUG   0x00400000 /* fix bug found after v.102b (moving H charge in 'remove_terminal_HDT') */

◆ TG_FLAG_FOUND_ISOTOPIC_ATOM_DONE

#define TG_FLAG_FOUND_ISOTOPIC_ATOM_DONE   0x00008000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */

◆ TG_FLAG_FOUND_ISOTOPIC_H_DONE

#define TG_FLAG_FOUND_ISOTOPIC_H_DONE   0x00004000 /* preprocessing detected isotopic H on "good" heteroatoms or isotopic H(+) */

◆ TG_FLAG_FOUND_SALT_CHARGES_DONE

#define TG_FLAG_FOUND_SALT_CHARGES_DONE   0x00002000 /* not assigned: preprocessing detected possibility of salt-type tautomerism */

◆ TG_FLAG_H_ALREADY_REMOVED

#define TG_FLAG_H_ALREADY_REMOVED   0x00020000 /* processing structure restored from InChI */

◆ TG_FLAG_HARD_ADD_REM_PROTONS

#define TG_FLAG_HARD_ADD_REM_PROTONS   0x00001000 /* add/remove protons to neutralize in hard way */

◆ TG_FLAG_KETO_ENOL_TAUT

#define TG_FLAG_KETO_ENOL_TAUT   0x00080000 /* turn on keto-enol tautomerism detection */

◆ TG_FLAG_MERGE_TAUT_SALTS

#define TG_FLAG_MERGE_TAUT_SALTS   0x00000040 /* DISCONNECT_SALTS merge all "salt"-t-groups and other =C-OH into one t-group */

◆ TG_FLAG_MERGE_TAUT_SALTS_DONE

#define TG_FLAG_MERGE_TAUT_SALTS_DONE   0x00000080 /* added non-taut O to taut groups */

◆ TG_FLAG_MOVE_CHARGE_COORD_DONE

#define TG_FLAG_MOVE_CHARGE_COORD_DONE   0x00000400 /* changed charge of a disconnected ligand to fit its valence */

◆ TG_FLAG_MOVE_HPLUS2NEUTR

#define TG_FLAG_MOVE_HPLUS2NEUTR   0x00000400 /* move protons to neutralize */

◆ TG_FLAG_MOVE_HPLUS2NEUTR_DONE

#define TG_FLAG_MOVE_HPLUS2NEUTR_DONE   0x00000001 /* protons have been moved to neutralize */

◆ TG_FLAG_MOVE_POS_CHARGES

#define TG_FLAG_MOVE_POS_CHARGES   0x00000008 /* MOVE_CHARGES allow long-range movement of N(+), P(+) charges */

◆ TG_FLAG_MOVE_POS_CHARGES_DONE

#define TG_FLAG_MOVE_POS_CHARGES_DONE   0x00000010

◆ TG_FLAG_PHOSPHINE_STEREO

#define TG_FLAG_PHOSPHINE_STEREO   0x00008000 /* add phosphine sp3 stereo */

◆ TG_FLAG_POINTED_EDGE_STEREO

#define TG_FLAG_POINTED_EDGE_STEREO   0x00002000 /* only pointed edge of stereo bond defines stereo */

◆ TG_FLAG_PT_06_00

#define TG_FLAG_PT_06_00   0x02000000

◆ TG_FLAG_PT_13_00

#define TG_FLAG_PT_13_00   0x08000000

◆ TG_FLAG_PT_16_00

#define TG_FLAG_PT_16_00   0x01000000

◆ TG_FLAG_PT_18_00

#define TG_FLAG_PT_18_00   0x10000000

◆ TG_FLAG_PT_22_00

#define TG_FLAG_PT_22_00   0x00800000

◆ TG_FLAG_PT_39_00

#define TG_FLAG_PT_39_00   0x04000000

◆ TG_FLAG_RECONNECT_COORD

#define TG_FLAG_RECONNECT_COORD   0x00000100 /* reconnect disconnected "coord. centers" */

◆ TG_FLAG_TEST_TAUT2_SALTS

#define TG_FLAG_TEST_TAUT2_SALTS   0x00000010 /* TEST_REMOVE_S_ATOMS multi-attachement long-range H/(-) taut. on =C-OH, >C=O */

◆ TG_FLAG_TEST_TAUT2_SALTS_DONE

#define TG_FLAG_TEST_TAUT2_SALTS_DONE   0x00000020 /* merged t-groups */

◆ TG_FLAG_TEST_TAUT3_SALTS_DONE

#define TG_FLAG_TEST_TAUT3_SALTS_DONE   0x00001000 /* merged t-groups + non-O taut atoms */

◆ TG_FLAG_TEST_TAUT__ATOMS

#define TG_FLAG_TEST_TAUT__ATOMS   0x00000001 /* find regular tautomerism */

◆ TG_FLAG_TEST_TAUT__ATOMS_DONE

#define TG_FLAG_TEST_TAUT__ATOMS_DONE   0x00000002

◆ TG_FLAG_TEST_TAUT__SALTS

#define TG_FLAG_TEST_TAUT__SALTS   0x00000004 /* DISCONNECT_SALTS if possible find long-range H/(-) taut. on =C-OH, >C=O */

◆ TG_FLAG_TEST_TAUT__SALTS_DONE

#define TG_FLAG_TEST_TAUT__SALTS_DONE   0x00000008 /* multiple H tautomerism */

◆ TG_FLAG_VARIABLE_PROTONS

#define TG_FLAG_VARIABLE_PROTONS   0x00000800 /* add/remove protons to neutralize */

◆ TRACE_MEMORY_LEAKS

#define TRACE_MEMORY_LEAKS   0 /* 0: do not change */

◆ UNDERIV_ADD_EXPLICIT_H

#define UNDERIV_ADD_EXPLICIT_H   /* Underiv: add removed explict H after underivatization */

◆ UNDERIV_OOB_nButyl

#define UNDERIV_OOB_nButyl   /* 4r2c1 DERIV_RING_O_OUTSIDE_PRECURSOR: 5 at, n-Butyl */

◆ UNDERIV_PYRROLIDIDES

#define UNDERIV_PYRROLIDIDES   /* 7r1c1 DERIV_RING2_PRRLDD_OUTSIDE_PRECUR */

◆ UNDERIV_RN_AcMe

#define UNDERIV_RN_AcMe   /* 2r1c3 R-N(-X)--C(=O)Me => R-N(-X)H: DERIV_BRIDGE_tN, X is not H */

◆ UNDERIV_RNH_AcMe

#define UNDERIV_RNH_AcMe   /* 2r1c3 R-NH--C(=O)Me => R-NH2: DERIV_BRIDGE_NH */

◆ UNDERIV_RO_COX_BENZOATES

#define UNDERIV_RO_COX_BENZOATES   /* 3r1c2 create alcohols from benzoates DERIV_RO_COX */

◆ UNDERIV_RO_COX_Me

#define UNDERIV_RO_COX_Me   /* 3r1c1 RO-C(=O)Me => ROH: create alcohols from acetates DERIV_RO_COX */

◆ UNDERIV_RO_COX_PENTAFLOUROBENZOATES

#define UNDERIV_RO_COX_PENTAFLOUROBENZOATES   /* 3r1c3 create alcohols from pentafluorobenzoates DERIV_RO_COX -C(=O)C6F5*/

◆ UNDERIV_X_OXIME_TBDMS

#define UNDERIV_X_OXIME_TBDMS   /* 5r2c3 DERIV_X_OXIME: >C=N--O-TBDMS */

◆ UNDERIV_X_OXIME_TMS

#define UNDERIV_X_OXIME_TMS   /* 5r2c2 DERIV_X_OXIME: >C=N--O-TMS */

◆ UNDERIVATIZE

#define UNDERIVATIZE   1 /* split to possible underivatized fragments */

◆ UNDERIVATIZE_REPORT

#define UNDERIVATIZE_REPORT   1 /* if SdfValue found, add to SdfValue a list of removed deriv. agents */

◆ USE_ALLOCA

#define USE_ALLOCA   0

◆ USE_AUX_RANKING

#define USE_AUX_RANKING   1 /* 1=> get auxiliary ranking to accelerate canonicalization of H layers */

◆ USE_AUX_RANKING_ALL

#define USE_AUX_RANKING_ALL   1 /* 1=> include all vertices in CellGetMinNode() selection 0=> only vertices with highest ranks */

◆ USE_DISTANCES_FOR_RANKING

#define USE_DISTANCES_FOR_RANKING   0 /* 1 => rank ring systems according to distances from terminal */

◆ USE_ISO_SORT_KEY_HFIXED

#define USE_ISO_SORT_KEY_HFIXED
Value:
0 /* 0=> normal mode: merge isotopic taut H to isotopic atom sorting key in
taut H-fixed canonicalization;
1=> add one more "string" iso_sort_Hfixed to the canonicalization */

◆ USE_SYMMETRY_TO_ACCELERATE

#define USE_SYMMETRY_TO_ACCELERATE   1 /*1 => for fast CT canonicalization, to avoid full enumeration */

◆ WORSE_PARITY

#define WORSE_PARITY   2

Typedef Documentation

◆ INCHI_IOS_STRING

◆ INCHI_IOSTREAM