69#if defined(TARGET_EXE_STANDALONE) 
   71#define RENUMBER_ATOMS_AND_RECALC_V106 1 
   72#ifdef      RENUMBER_ATOMS_AND_RECALC_V106 
   74#define STOP_AFTER_FIRST_CHANGE_ON_RENUMBERING 1 
   76#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (inchi-1 executable)" 
   79#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (inchi-1 executable)***" 
   83#elif defined(TARGET_API_LIB) 
   84#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (API Library)" 
   86#elif defined(TARGET_EXE_USING_API) 
   87#ifndef APP_DESCRIPTION 
   88#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (executable calling API Library)" 
   91#elif defined(TARGET_LIB_FOR_WINCHI) 
   92#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (Library for wInChI GUI executable)" 
   94#elif defined(TARGET_WINCHI) 
   95#define APP_DESCRIPTION "InChI version 1, Software " CURRENT_VER " (wInChI GUI executable)" 
   98#error  No build target #defined, pls check compiler options... (TARGET_EXE_STANDALONE|TARGET_API_LIB|TARGET_EXE_USING_API|TARGET_LIB_FOR_WINCHI) 
  102#ifndef TARGET_PLATFORM 
  104#define TARGET_PLATFORM "Windows" 
  106#define TARGET_PLATFORM "Linux" 
  135#ifndef BUILD_WITH_ENG_OPTIONS 
  136#define BUILD_WITH_ENG_OPTIONS 0 
  141#ifndef BUILD_WITH_AMI 
  143#define BUILD_WITH_AMI 1 
  146#ifndef TARGET_EXE_STANDALONE 
  154#if( BUILD_WITH_AMI == 1 ) 
  155#if( defined( _MSC_VER ) ) 
  159#if (BUILD_WITH_ENG_OPTIONS==1) 
  160#define OUTPUT_FILE_EXT 1            
  161#define ALLOW_EMPTY_PATHS 1          
  163#define DEL_EMPTY_OUTPUT  1          
  164#define SDF_OUTPUT_HETERO_VALENCE 1  
  197#if ( !defined(_MSC_VER) || defined(TARGET_API_LIB) || defined(TARGET_EXE_USING_API))   
  198#ifndef COMPILE_ANSI_ONLY 
  199#define COMPILE_ANSI_ONLY 
  202#ifdef COMPILE_ANSI_ONLY 
  224#pragma warning( disable : 4706 4127 4514 4100 4786 4996 4244 4267 ) 
  231#if !defined(TARGET_EXE_STANDALONE) && !defined(TARGET_LIB_FOR_WINCHI) && defined(_WIN32) 
  240#include "../../INCHI_API/tbb/tbbmalloc_proxy_for_inchi.h" 
  245#ifndef COMPILE_ALL_CPP 
  258#define INCHI_VERSION       "1" 
  259#define INCHI_NAME          "InChI" 
  260#define INCHI_NAM_VER_DELIM "=" 
  263#define   INCHI_OPTION_PREFX  '/' 
  264#define   INCHI_PATH_DELIM    '\\' 
  266#define   INCHI_OPTION_PREFX  '-' 
  267#define   INCHI_PATH_DELIM    '/' 
  270#define   INCHI_ALT_OPT_PREFIX  '-' 
  271#define   INCHI_ACD_LABS_PREFIX '-' 
  273#define bRELEASE_VERSION  1     
  274#ifndef bRELEASE_VERSION 
  275#define bRELEASE_VERSION  0     
  279#ifndef RELEASE_IS_FINAL 
  280#define RELEASE_IS_FINAL  1     
  284#if ( bRELEASE_VERSION == 1 ) 
  285#define DISPLAY_DEBUG_DATA_C_POINT 0   
  286#define DISPLAY_ORIG_AT_NUMBERS    1   
  288#define DISPLAY_DEBUG_DATA_C_POINT 1   
  289#define DISPLAY_ORIG_AT_NUMBERS    1   
  292#if ( DISPLAY_DEBUG_DATA_C_POINT > 0 ) 
  293#define DISPLAY_DEBUG_DATA         DISPLAY_DEBUG_DATA_C_POINT 
  297#define DISPLAY_ZZ_AS_STAR 1 
  305#define FIX_ChCh_STEREO_CANON_BUG     1   
  306#define ADD_ChCh_STEREO_CANON_CHK     0   
  307#define FIX_ChCh_CONSTIT_CANON_BUG    1   
  308#define FIX_EITHER_STEREO_IN_AUX_INFO 1   
  309#define FIX_NORM_BUG_ADD_ION_PAIR     1   
  310#define FIX_REM_PROTON_COUNT_BUG      1   
  311#define FIX_READ_AUX_MEM_LEAK         1 
  312#define FIX_READ_LONG_LINE_BUG        1   
  313#define FIX_N_V_METAL_BONDS_GPF       1   
  314#define BNS_RAD_SEARCH                1   
  319#define FIX_ODD_THINGS_REM_Plus_BUG   0 
  320#define FIX_N_MINUS_NORN_BUG          0 
  321#define FIX_CANCEL_CHARGE_COUNT_BUG   0 
  322#define FIX_2D_STEREO_BORDER_CASE     0 
  323#define FIX_REM_ION_PAIRS_Si_BUG      0 
  324#define FIX_STEREO_SCALING_BUG        0 
  325#define FIX_EMPTY_LAYER_BUG           0 
  326#define FIX_EITHER_DB_AS_NONSTEREO    0 
  327#define FIX_BOND23_IN_TAUT            0 
  328#define FIX_TACN_POSSIBLE_BUG         0 
  329#define FIX_KEEP_H_ON_NH_ANION        0 
  330#define FIX_AVOID_ADP                 0 
  334#define FIX_CPOINT_BOND_CAP2          0 
  340#define FIX_ISO_FIXEDH_BUG            1  
  341#define FIX_ISO_FIXEDH_BUG_READ       0  
  342#define FIX_DALKE_BUGS                1 
  343#define FIX_TRANSPOSITION_CHARGE_BUG  1  
  344#define FIX_I2I_STEREOCONVERSION_BUG  1  
  345#define FIX_I2I_STEREOCONVERSION_BUG2 1  
  346#define FIX_I2I_STEREOCONVERSION_BUG3 1  
  348#define FIX_TERM_H_CHRG_BUG           1  
  354#define FIX_AROM_RADICAL              1  
  364#ifndef DISABLE_106_FIXES 
  366#define FIX_STEREOCOUNT_ERR           1  
  374#define FIX_IMPOSSIBLE_H_ISOTOPE_BUG  1  
  379#define FIX_OLEAN_SPIRO_CHIRALITY_DETECTION_BUG 1  
  383#define FIX_RENUM_BUG_FOR_CASE_OF_ACIDIC_OH_AT_P_PLUS 1 
  394#define CHECK_STRTOL_ATNUMB 1 
  395#define DISABLE_READ_COMPRESSED_INCHI 1 
  396#define FIX_GAF_2019_1 1 
  397#define FIX_GAF_2019_2 1 
  406#define FIX_GAF_2020_GENERIC 1 
  407#define FIX_OSS_FUZZ_25604 1 
  408#define FIX_GAF_2020_25607 1 
  409#define FIX_GAF_2020_25726 1 
  410#define FIX_GAF_2020_25741 1 
  413#define FIX_OSS_FUZZ_30162_30343 1 
  414#define FIX_OSS_FUZZ_25734_28139 1 
  418#define FIX_CURE53_ISSUE_OOB_ALREADY_HAVE_THIS_MESSAGE 1 
  419#define FIX_CURE53_ISSUE_HEAP_BUFFER_OVERFLOW_INCHITOINPATOM 1 
  420#define FIX_CURE53_ISSUE_NULL_DEREFERENCE_MAKE_A_COPY_OF_T_GROUP_INFO 1 
  426#define FIX_GAF_2019_3 1 
  427#define FIX_ONE_LINE_INCHI_INPUT_CONVERSION_ISSUE 1 
  430#define ALLOW_EMPTY_INCHI_AS_INPUT    1  
  433#if ( !defined(TARGET_API_LIB) && !defined(TARGET_EXE_USING_API) ) 
  434#define I2S_MODIFY_OUTPUT             1   
  436#define I2S_MODIFY_OUTPUT             0   
  440#define FIX_NP_MINUS_BUG  1          
  450#define SDF_OUTPUT_V2000            1   
  451#define SDF_OUTPUT_DT               1   
  452#define CHECK_AROMBOND2ALT          1   
  454#define READ_INCHI_STRING           1   
  456#ifdef TARGET_LIB_FOR_WINCHI 
  457#define READ_INCHI_STRING           0   
  459#define READ_INCHI_STRING           1   
  466#define INCLUDE_NORMALIZATION_ENTRY_POINT  0 
  473#define KETO_ENOL_TAUT             1  
  474#define TAUT_15_NON_RING           1  
  476#define TAUT_PT_22_00              1  
  477#define TAUT_PT_16_00              1  
  478#define TAUT_PT_06_00              1  
  479#define TAUT_PT_39_00              1  
  480#define TAUT_PT_13_00              1  
  481#define TAUT_PT_18_00              1    
  483#ifdef  BUILD_WITH_ENG_OPTIONS 
  484#define UNDERIVATIZE               1  
  489#if( UNDERIVATIZE == 1 ) 
  490#define UNDERIVATIZE_REPORT        1  
  492#define FIX_UNDERIV_TO_SDF        
  498#define ALLOW_NO_CHARGE_ON_STEREO_CENTERS   
  509#define UNDERIV_ACETATE_Me             
  511#define UNDERIV_ACETATE_Et             
  513#define UNDERIV_RN_AcEt                
  514#define UNDERIV_RNH_AcEt               
  515#define UNDERIV_RO_COX_Et              
  520#define UNDERIV_RN_AcMe                
  521#define UNDERIV_RNH_AcMe               
  522#define UNDERIV_RO_COX_Me              
  524#define UNDERIV_RO_COX_BENZOATES              
  526#define UNDERIV_RO_COX_PENTAFLOUROBENZOATES   
  527#define UNDERIV_OOB_nButyl                    
  528#define UNDERIV_X_OXIME_TBDMS                 
  529#define UNDERIV_X_OXIME_TMS                   
  530#define UNDERIV_PYRROLIDIDES                  
  534#define UNDERIV_ADD_EXPLICIT_H                
  541#define HAL_ACID_H_XCHG            1  
  542#define CANON_FIXH_TRANS           1  
  543#define STEREO_WEDGE_ONLY          1  
  546#define REMOVE_ION_PAIRS_EARLY     1  
  547#define REMOVE_ION_PAIRS_DISC_STRU 1  
  548#define REMOVE_ION_PAIRS_FIX_BONDS 1  
  549#define S_VI_O_PLUS_METAL_FIX_BOND 1  
  550#define N_V_STEREOBONDS            1  
  552#define REMOVE_ION_PAIRS_ORIG_STRU 0  
  558#define DISCONNECT_SALTS            1    
  559#define TEST_REMOVE_S_ATOMS         1   
  562#define CHARGED_SALTS_ONLY          1   
  564#define BNS_PROTECT_FROM_TAUT       1   
  565#define BNS_MARK_EDGE_2_DISCONNECT  1   
  567#define REPLACE_ALT_WITH_TAUT       1   
  568#define MOVE_CHARGES                1   
  569#define NEUTRALIZE_ENDPOINTS        1   
  571#define FIX_H_CHECKING_TAUT         1   
  572#define ALWAYS_ADD_TG_ON_THE_FLY    1   
  573#define IGNORE_SINGLE_ENDPOINTS     1   
  576#define INCL_NON_SALT_CANDIDATATES   1   
  578#define SALT_WITH_PROTONS            1   
  579#define OPPOSITE_CHARGE_IN_CGROUP    1   
  580#define MOVE_PPLUS_TO_REMOVE_PROTONS 0   
  582#define ADD_MOVEABLE_O_PLUS          1   
  585#define DISCONNECT_METALS           1    
  586#define RECONNECT_METALS            0   
  588#define CHECK_METAL_VALENCE         0   
  589#define bREUSE_INCHI                1   
  591#define OUTPUT_CONNECTED_METAL_ONLY 0   
  593#define EMBED_REC_METALS_INCHI      1   
  596#define bOUTPUT_ONE_STRUCT_TIME     1   
  610#define ALT_TAUT(X)        ((X)>TAUT_YES? TAUT_YES : 1-(X))   
  624#define NEW_STEREOCENTER_CHECK      1     
  625#define MIN_SB_RING_SIZE            8     
  627#define REMOVE_KNOWN_NONSTEREO      1  
  628#define REMOVE_CALC_NONSTEREO       1  
  629#define PROPAGATE_ILL_DEF_STEREO    1  
  633#define ONLY_DOUBLE_BOND_STEREO     0   
  635#define ONE_BAD_SB_NEIGHBOR         1   
  638#define BREAK_ONE_MORE_SC_TIE       1    
  639#define BREAK_ALSO_NEIGH_TIE        0    
  640#define BREAK_ALSO_NEIGH_TIE_ROTATE 1    
  642#define STEREO_CENTER_BONDS_NORM   1    
  643#define STEREO_CENTER_BOND4_NORM   0    
  644#define NORMALIZE_INP_COORD        0    
  647#define STEREO_WEDGE_ONLY          1  
  648#define CHECK_C2v_S4_SYMM          0  
  650#define EQL_H_NUM_TOGETHER          1  
  651#define ABC_CT_NUM_CLOSURES         1  
  654#define SINGLET_IS_TRIPLET          1  
  658#define FIND_CANON_NE_EQUITABLE     0   
  666#define EXTR_KNOWN_USED_TO_REMOVE_PARITY  0x000001 
  667#define EXTR_CALC_USED_TO_REMOVE_PARITY   0x000002 
  668#define EXTR_2EQL2CENTER_TO_REMOVE_PARITY 0x000004 
  669#define EXTR_HAS_ATOM_WITH_DEFINED_PARITY 0x000008 
  670#define EXTR_REMOVE_PARITY_WARNING        0x000010 
  671#define EXTR_SALT_WAS_DISCONNECTED        0x000020 
  672#define EXTR_SALT_PROTON_MOVED            0x000040 
  673#define EXTR_SALT_PROTON_MOVE_ERR_WARN    0x000080 
  674#define EXTR_METAL_WAS_DISCONNECTED       0x000100 
  675#define EXTR_METAL_WAS_NOT_DISCONNECTED   0x000200 
  676#define EXTR_NON_TRIVIAL_STEREO           0x000400  
  677#define EXTR_UNUSUAL_VALENCES             0x000800 
  678#define EXTR_HAS_METAL_ATOM               0x001000 
  679#define EXTR_TEST_TAUT3_SALTS_DONE        0x002000  
  680#define EXTR_CANON_NE_EQUITABLE           0x004000  
  681#define EXTR_HAS_PROTON_PN                0x008000  
  682#define EXTR_HAS_FEATURE                  0x010000  
  683#define EXTR_TAUT_TREATMENT_CHARGES       0x020000  
  684#define EXTR_TRANSPOSITION_EXAMPLES       0x040000  
  694#define TAUT_TROPOLONE_7            1   
  695#define TAUT_TROPOLONE_5            1   
  696#define TAUT_4PYRIDINOL_RINGS       1   
  697#define TAUT_PYRAZOLE_RINGS         1   
  699#define TAUT_IGNORE_EQL_ENDPOINTS   0   
  702#define TAUT_RINGS_ATTACH_CHAIN     1   
  706#define FIND_RING_SYSTEMS           1   
  709#define FIND_RINS_SYSTEMS_DISTANCES 0   
  710#define USE_DISTANCES_FOR_RANKING   0   
  712#define DISPLAY_RING_SYSTEMS        0   
  717#if ( bRELEASE_VERSION==1 && bOUTPUT_ONE_STRUCT_TIME==1) 
  718#undef bOUTPUT_ONE_STRUCT_TIME 
  719#define bOUTPUT_ONE_STRUCT_TIME 0 
  723#if ( bRELEASE_VERSION==1 && FIND_RING_SYSTEMS!=1 ) 
  724#ifdef FIND_RING_SYSTEMS 
  725#undef FIND_RING_SYSTEMS 
  727#define FIND_RING_SYSTEMS 1 
  731#if ( FIND_RING_SYSTEMS != 1 ) 
  733#if ( FIND_RINS_SYSTEMS_DISTANCES == 1 ) 
  734#undef  FIND_RINS_SYSTEMS_DISTANCES 
  735#define FIND_RINS_SYSTEMS_DISTANCES 0 
  741#if ( FIND_RINS_SYSTEMS_DISTANCES != 1 ) 
  743#if ( USE_DISTANCES_FOR_RANKING == 1 ) 
  744#undef  USE_DISTANCES_FOR_RANKING 
  745#define USE_DISTANCES_FOR_RANKING 0 
  748#if ( DISPLAY_RING_SYSTEMS == 1 ) 
  749#undef  DISPLAY_RING_SYSTEMS 
  750#define DISPLAY_RING_SYSTEMS 0 
  756#if ( FIND_RING_SYSTEMS==1 && (TAUT_TROPOLONE_7==1 || TAUT_TROPOLONE_5==1 || TAUT_4PYRIDINOL_RINGS==1 || TAUT_PYRAZOLE_RINGS) ) 
  762#define APPLY_IMPLICIT_H_DOWN_RULE 0    
  766#define ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 1  
  769#define IGNORE_TGROUP_WITHOUT_H   1     
  771#if ( DISCONNECT_SALTS == 1 ) 
  772#define REMOVE_TGROUP_CHARGE      0     
  774#define REMOVE_TGROUP_CHARGE      1     
  777#if ( REMOVE_TGROUP_CHARGE == 1 ) 
  778#define INCHI_T_NUM_MOVABLE  1 
  780#define INCHI_T_NUM_MOVABLE  2 
  787#define USE_AUX_RANKING        1  
  788#define USE_AUX_RANKING_ALL    1  
  790#define USE_ISO_SORT_KEY_HFIXED  0   
  797#define REL_RAC_STEREO_IGN_1_SC  0  
  800#define CMODE_CT                 0x000001 
  801#define CMODE_ISO                0x000002 
  802#define CMODE_ISO_OUT            0x000004  
  803#define CMODE_STEREO             0x000008 
  804#define CMODE_ISO_STEREO         0x000010 
  805#define CMODE_TAUT               0x000020 
  806#define CMODE_NOEQ_STEREO        0x000040  
  807#define CMODE_REDNDNT_STEREO     0x000080  
  808#define CMODE_NO_ALT_SBONDS      0x000100  
  810#define CMODE_RELATIVE_STEREO    0x000200     
  811#define CMODE_RACEMIC_STEREO     0x000400     
  812#define CMODE_SC_IGN_ALL_UU      0x000800     
  813#define CMODE_SB_IGN_ALL_UU      0x001000     
  817#define CANON_MODE_CT         (CMODE_CT) 
  818#define CANON_MODE_TAUT       (CMODE_CT|CMODE_TAUT) 
  819#define CANON_MODE_ISO        (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT) 
  820#define CANON_MODE_STEREO     (CMODE_CT|CMODE_STEREO) 
  821#define CANON_MODE_ISO_STEREO (CMODE_CT|CMODE_ISO|CMODE_ISO_OUT|CMODE_ISO_STEREO) 
  823#define CANON_MODE_MASK       0x00FF   
  830#define CT_ATOMID_DONTINCLUDE   1 
  831#define CT_ATOMID_IS_INITRANK   2 
  832#define CT_ATOMID_IS_CURRANK    3 
  838#define CANON_TAUTOMERS                1   
  839#define HYDROGENS_IN_INIT_RANKS        1   
  841#define DOUBLE_BOND_NEIGH_LIST    0   
  842#define INCL_NON_6AROM            1   
  846#define CT_NEIGH_SMALLER         
  848#define CT_ATOMID          CT_ATOMID_IS_CURRANK  
  850#define CT_NEIGH_INCREASE                
  852#define USE_SYMMETRY_TO_ACCELERATE 1    
  857#define CT_GREATER_THAN    > 
  858#define CT_INITVALUE      ~0 
  860#define WORSE_PARITY       2 
  862#define CT_GREATER_THAN    < 
  863#define CT_INITVALUE       0 
  865#define WORSE_PARITY       1 
  868#ifdef CT_NEIGH_SMALLER 
  869#define CT_NEIGH_SMALLER_THAN < 
  871#define CT_NEIGH_SMALLER_THAN > 
  875#if !defined( CT_ATOMID ) 
  876#error  You have to #define CT_ATOMID 
  878#if ( defined( CT_ATOMID ) && CT_ATOMID==CT_ATOMID_DONTINCLUDE ) 
  879#error  CT_DELIMITER should be #defined if CT_ATOMID is not included 
  887#define ALL_ALT_AS_AROMATIC         1   
  889#define ANY_ATOM_IN_ALT_CYCLE       1   
  891#define EXCL_ALL_AROM_BOND_PARITY   0   
  896#if ( EXCL_ALL_AROM_BOND_PARITY == 0 ) 
  897#define ADD_6MEMB_AROM_BOND_PARITY  1   
  901#define ADD_6MEMB_AROM_BOND_PARITY  0   
  904#define MAX_NUM_STEREO_BONDS      3 
  905#define MAX_NUM_STEREO_BOND_NEIGH 3 
  906#define MIN_NUM_STEREO_BOND_NEIGH 2 
  908#define MAX_NUM_STEREO_ATOM_NEIGH 4 
  909#define STEREO_AT_MARK            8  
  911#if ( ONLY_DOUBLE_BOND_STEREO == 1 )   
  913#ifdef ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 
  914#undef ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 
  915#define ALLOW_TAUT_ATTACHMENTS_TO_STEREO_BONDS 0 
  918#ifdef EXCL_ALL_AROM_BOND_PARITY 
  919#undef EXCL_ALL_AROM_BOND_PARITY 
  920#define EXCL_ALL_AROM_BOND_PARITY 1 
  923#ifdef ADD_6MEMB_AROM_BOND_PARITY 
  924#undef ADD_6MEMB_AROM_BOND_PARITY 
  925#define ADD_6MEMB_AROM_BOND_PARITY 0 
  931#if ( ALL_ALT_AS_AROMATIC == 1 && DOUBLE_BOND_NEIGH_LIST != 0 ) 
  932#undef DOUBLE_BOND_NEIGH_LIST 
  933#define DOUBLE_BOND_NEIGH_LIST 0 
  941#define DRAW_AROM_TAUT  1               
 
  949#define TG_FLAG_TEST_TAUT__ATOMS         0x00000001    
  950#define TG_FLAG_DISCONNECT_SALTS         0x00000002    
  951#define TG_FLAG_TEST_TAUT__SALTS         0x00000004    
  952#define TG_FLAG_MOVE_POS_CHARGES         0x00000008    
  953#define TG_FLAG_TEST_TAUT2_SALTS         0x00000010    
  954#define TG_FLAG_ALLOW_NO_NEGTV_O         0x00000020    
  955#define TG_FLAG_MERGE_TAUT_SALTS         0x00000040    
  957#define TG_FLAG_ALL_TAUTOMERIC          (TG_FLAG_TEST_TAUT__ATOMS| \ 
  958                                         TG_FLAG_TEST_TAUT__SALTS| \ 
  959                                         TG_FLAG_TEST_TAUT2_SALTS| \ 
  960                                         TG_FLAG_MERGE_TAUT_SALTS) 
  962#define TG_FLAG_DISCONNECT_COORD         0x00000080    
  963#define TG_FLAG_RECONNECT_COORD          0x00000100    
  964#define TG_FLAG_CHECK_VALENCE_COORD      0x00000200    
  965#define TG_FLAG_MOVE_HPLUS2NEUTR         0x00000400    
  966#define TG_FLAG_VARIABLE_PROTONS         0x00000800    
  967#define TG_FLAG_HARD_ADD_REM_PROTONS     0x00001000    
  968#define TG_FLAG_POINTED_EDGE_STEREO      0x00002000    
  969#if ( FIX_ADJ_RAD == 1 ) 
  970#define TG_FLAG_FIX_ADJ_RADICALS         0x00004000    
  972#define TG_FLAG_PHOSPHINE_STEREO         0x00008000    
  973#define TG_FLAG_ARSINE_STEREO            0x00010000    
  974#define TG_FLAG_H_ALREADY_REMOVED        0x00020000    
  975#define TG_FLAG_FIX_SP3_BUG              0x00040000    
  977#define TG_FLAG_KETO_ENOL_TAUT           0x00080000    
  978#define TG_FLAG_1_5_TAUT                 0x00100000    
  981#define TG_FLAG_FIX_ISO_FIXEDH_BUG       0x00200000    
  982#define TG_FLAG_FIX_TERM_H_CHRG_BUG      0x00400000    
  984#define TG_FLAG_PT_22_00                 0x00800000 
  985#define TG_FLAG_PT_16_00                 0x01000000 
 
  986#define TG_FLAG_PT_06_00                 0x02000000 
  987#define TG_FLAG_PT_39_00                 0x04000000 
  988#define TG_FLAG_PT_13_00                 0x08000000 
  989#define TG_FLAG_PT_18_00                 0x10000000 
  993#define TG_FLAG_MOVE_HPLUS2NEUTR_DONE    0x00000001    
  994#define TG_FLAG_TEST_TAUT__ATOMS_DONE    0x00000002 
  995#define TG_FLAG_DISCONNECT_SALTS_DONE    0x00000004 
  996#define TG_FLAG_TEST_TAUT__SALTS_DONE    0x00000008    
  997#define TG_FLAG_MOVE_POS_CHARGES_DONE    0x00000010 
  998#define TG_FLAG_TEST_TAUT2_SALTS_DONE    0x00000020    
  999#define TG_FLAG_ALLOW_NO_NEGTV_O_DONE    0x00000040 
 1000#define TG_FLAG_MERGE_TAUT_SALTS_DONE    0x00000080    
 1002#define TG_FLAG_ALL_SALT_DONE          (TG_FLAG_TEST_TAUT__SALTS_DONE | \ 
 1003                                        TG_FLAG_TEST_TAUT2_SALTS_DONE | \ 
 1004                                        TG_FLAG_MERGE_TAUT_SALTS_DONE ) 
 1006#define TG_FLAG_DISCONNECT_COORD_DONE    0x00000100    
 1007#define TG_FLAG_CHECK_VALENCE_COORD_DONE 0x00000200    
 1008#define TG_FLAG_MOVE_CHARGE_COORD_DONE   0x00000400    
 1009#define TG_FLAG_FIX_ODD_THINGS_DONE      0x00000800    
 1010#define TG_FLAG_TEST_TAUT3_SALTS_DONE    0x00001000    
 1011#define TG_FLAG_FOUND_SALT_CHARGES_DONE  0x00002000    
 1012#define TG_FLAG_FOUND_ISOTOPIC_H_DONE    0x00004000    
 1013#define TG_FLAG_FOUND_ISOTOPIC_ATOM_DONE 0x00008000    
 1014#if ( FIX_ADJ_RAD == 1 ) 
 1015#define TG_FLAG_FIX_ADJ_RADICALS_DONE    0x00010000 
 1018#if ( READ_INCHI_STRING == 1 ) 
 1019#define READ_INCHI_OUTPUT_INCHI          0x00000001 
 1020#define READ_INCHI_SPLIT_OUTPUT          0x00000002 
 1021#define READ_INCHI_KEEP_BALANCE_P        0x00000004 
 
 1022#define READ_INCHI_TO_STRUCTURE          0x00000008 
 1044#define INCHI_IOS_TYPE_NONE 0 
 1045#define INCHI_IOS_TYPE_STRING 1 
 1046#define INCHI_IOS_TYPE_FILE 2 
 1064#if ( defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER)  ) 
 1066#ifndef TARGET_LIB_FOR_WINCHI 
 1067#ifndef DO_NOT_TRACE_MEMORY_LEAKS 
 1068#define TRACE_MEMORY_LEAKS          1     
 1070#define TRACE_MEMORY_LEAKS          0 
 1073#define TRACE_MEMORY_LEAKS          1     
 1076#define TRACE_MEMORY_LEAKS          0     
 1081#define INCHI_HEAPCHK           
 1083#if ( TRACE_MEMORY_LEAKS == 1 ) 
 1086#define   inchi_malloc(s)         _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__) 
 1087#define   inchi_calloc(c, s)      _calloc_dbg(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) 
 1088#define   inchi_realloc(d, s)     _realloc_dbg(d, s, _NORMAL_BLOCK, __FILE__, __LINE__) 
 1089#define   inchi_free(p)           _free_dbg(p, _NORMAL_BLOCK) 
 1091#ifdef TARGET_EXE_USING_API 
 1093#define e_inchi_malloc(a)   inchi_malloc(a) 
 1094#define e_inchi_calloc(a,b) inchi_calloc(a,b) 
 1095#define e_inchi_realloc(a,b) inchi_realloc(a,b) 
 1096#define e_inchi_free(a)     inchi_free(a) 
 1104#ifdef CHECK_WIN32_VC_HEAP 
 1107#define INCHI_HEAPCHK \ 
 1109    int tmp = _crtDbgFlag; \ 
 1110    _crtDbgFlag |= _CRTDBG_ALLOC_MEM_DF; \ 
 1111    _ASSERT( _CrtCheckMemory( ) ); \ 
 1112    _crtDbgFlag = tmp; \ 
 1127#undef  TRACE_MEMORY_LEAKS 
 1128#define TRACE_MEMORY_LEAKS 0 
 1141#ifdef TARGET_EXE_USING_API 
 1144#define inchi_malloc   e_inchi_malloc 
 1147#define inchi_calloc   e_inchi_calloc 
 1149#ifndef inchi_realloc 
 1150#define inchi_realloc   e_inchi_realloc 
 1153#define inchi_free     e_inchi_free 
 1156#ifndef e_inchi_malloc 
 1157#define e_inchi_malloc malloc 
 1159#ifndef e_inchi_calloc 
 1160#define e_inchi_calloc calloc 
 1162#ifndef e_inchi_realloc 
 1163#define e_inchi_realloc realloc 
 1166#define e_inchi_free(X) do{ if(X) free(X); }while(0) 
 1172#define inchi_malloc   malloc 
 1175#define inchi_calloc   calloc 
 1177#ifndef inchi_realloc 
 1178#define inchi_realloc   realloc 
 1181#define inchi_free(X)  do{ if(X) free(X); }while(0) 
 1189#if ( USE_ALLOCA == 1 ) 
 1190#define qmalloc(X) _alloca(X) 
 1191#define qfree(X)   do{(X)=NULL;}while(0) 
 1193#define qmalloc(X) inchi_malloc(X) 
 1194#define qfree(X)   do{if(X){inchi_free(X);(X)=NULL;}}while(0) 
 1197#if ( defined(_MSC_VER) && _MSC_VER >= 800 ) 
 1198#define fast_alloc(X) _alloca(X) 
 1201#define fast_alloc(X) inchi_malloc(X) 
 1202#define fast_free(X)  inchi_free(X) 
 1205#define qzfree(X)   do{if(X){inchi_free(X);(X)=NULL;}}while(0) 
 1209#define MYREALLOC2(PTRTYPE1, PTRTYPE2, PTR1, PTR2, LEN1, LEN2, ERR) \ 
 1211        if( (LEN1) <= (LEN2) ) {\ 
 1212            PTRTYPE1 * newPTR1 = (PTRTYPE1 *)inchi_calloc( (LEN2)+1, sizeof(PTRTYPE1) );\ 
 1213            PTRTYPE2 * newPTR2 = (PTRTYPE2 *)inchi_calloc( (LEN2)+1, sizeof(PTRTYPE2) );\ 
 1214            if ( newPTR1 && newPTR2 ) { \ 
 
 1215                if ( (PTR1) && (LEN1) > 0 ) \ 
 1216                    (memcpy) ( newPTR1, (PTR1), (LEN1) * sizeof(PTRTYPE1) ); \ 
 1217                if ( (PTR2) && (LEN1) > 0 ) \ 
 1218                    (memcpy) ( newPTR2, (PTR2), (LEN1) * sizeof(PTRTYPE2) ); \ 
 1228                inchi_free(newPTR1); \ 
 1229                inchi_free(newPTR2); \ 
 1232        } else { (ERR) = 0; } \ 
 1239#define DEBUG_POLYMERS 0 
 1240#ifndef DEBUG_POLYMERS 
 1241#define DEBUG_POLYMERS  2 
 1244#define POLYMERS_NO 0        
 1245#define POLYMERS_MODERN 1    
 1246#define POLYMERS_LEGACY 2    
 1247#define POLYMERS_LEGACY_PLUS 3   
 1254#define STEREO_AT_ZZ 0 
 1258#define ALLOW_SUBSTRUCTURE_FILTERING 1 
 1261#ifndef COMPILE_ALL_CPP 
struct tagOutputStream INCHI_IOSTREAM
 
struct tagOutputString INCHI_IOS_STRING
 
FILE * f
Definition mode.h:1032
 
INCHI_IOS_STRING s
Definition mode.h:1031
 
int type
Definition mode.h:1033
 
int nPtr
Definition mode.h:1020
 
char * pStr
Definition mode.h:1017
 
int nUsedLength
Definition mode.h:1019
 
int nAllocatedLength
Definition mode.h:1018