InChI
 
Loading...
Searching...
No Matches
ichi_bns.c File Reference
#include <stdlib.h>
#include <string.h>
#include "mode.h"
#include "ichitime.h"
#include "ichicant.h"
#include "ichierr.h"
#include "ichitaut.h"
#include "ichinorm.h"
#include "util.h"
#include "ichister.h"
#include "ichi_bns.h"
#include "bcf_s.h"
#include "logging.h"
+ Include dependency graph for ichi_bns.c:

Data Structures

struct  tagProtonRemovalMaskAndType
 
struct  tagAltPathChanges
 

Macros

#define BNS_MARK_ONLY_BLOCKS   1 /* 1 => find only blocks, do not search for ring systems */
 
#define ALLOW_ONLY_SIMPLE_ALT_PATH   0 /* 0 => allow alt. path to contain same bond 2 times (in opposite directions) */
 
#define CHECK_TG_ALT_PATH
 
#define FIX_CPOINT_BOND_CAP   1 /* 1=> fix bug in case of double bond from neutral cpoint */
 
#define RESET_EDGE_FORBIDDEN_MASK   1 /* 1: previous; 0: do not apply "edge->forbidden &= pBNS->edge_forbidden_mask" */
 
#define IS_FORBIDDEN(EDGE_FORBIDDEN, PBNS)   (EDGE_FORBIDDEN)
 
#define ATBIT_NP_Plus   (1 << ATTOT_NUM_NP_Plus)
 
#define ATBIT_NP_Proton   (1 << ATTOT_NUM_NP_Proton)
 
#define ATBIT_NP_H   (1 << ATTOT_NUM_NP_H)
 
#define ATBIT_N_Minus   (1 << ATTOT_NUM_N_Minus)
 
#define ATBIT_NP   (1 << ATTOT_NUM_NP)
 
#define ATBIT_ON   (1 << ATTOT_NUM_ON)
 
#define ATBIT_COH   (1 << ATTOT_NUM_COH)
 
#define ATBIT_CSH   (1 << ATTOT_NUM_CSH)
 
#define ATBIT_ZOH   (1 << ATTOT_NUM_ZOH)
 
#define ATBIT_OOH   (1 << ATTOT_NUM_OOH)
 
#define ATBIT_ZOOH   (1 << ATTOT_NUM_ZOOH)
 
#define ATBIT_NOH   (1 << ATTOT_NUM_NOH)
 
#define ATBIT_N_OH   (1 << ATTOT_NUM_N_OH)
 
#define ATBIT_CO   (1 << ATTOT_NUM_CO)
 
#define ATBIT_ZO   (1 << ATTOT_NUM_ZO)
 
#define ATBIT_NO   (1 << ATTOT_NUM_NO)
 
#define ATBIT_N_O   (1 << ATTOT_NUM_N_O)
 
#define ATBIT_CO_Minus   (1 << ATTOT_NUM_CO_Minus)
 
#define ATBIT_CS_Minus   (1 << ATTOT_NUM_CS_Minus)
 
#define ATBIT_ZO_Minus   (1 << ATTOT_NUM_ZO_Minus)
 
#define ATBIT_OO_Minus   (1 << ATTOT_NUM_OO_Minus)
 
#define ATBIT_ZOO_Minus   (1 << ATTOT_NUM_ZOO_Minus)
 
#define ATBIT_NO_Minus   (1 << ATTOT_NUM_NO_Minus)
 
#define ATBIT_N_O_Minus   (1 << ATTOT_NUM_N_O_Minus)
 
#define ATBIT_O_Minus   (1 << ATTOT_NUM_O_Minus)
 
#define ATBIT_OH_Plus   (1 << ATTOT_NUM_OH_Plus)
 
#define ATBIT_O_Plus   (1 << ATTOT_NUM_O_Plus)
 
#define ATBIT_Proton   (1 << ATTOT_NUM_Proton)
 
#define ATBIT_HalAnion   (1 << ATTOT_NUM_HalAnion)
 
#define ATBIT_HalAcid   (1 << ATTOT_NUM_HalAcid)
 
#define ATBIT_Errors   (1 << ATTOT_NUM_Errors)
 
#define PR_SIMPLE_MSK   (ATBIT_NP_Proton | ATBIT_OH_Plus)
 
#define PR_SIMPLE_TYP   (ATT_ATOM_N | ATT_ATOM_P | ATT_O_PLUS)
 
#define ATBIT_MSK_NP   (ATBIT_NP_Plus | ATBIT_NP_Proton | ATBIT_NP_H | ATBIT_N_Minus | ATBIT_NP)
 
#define KNOWN_ACIDIC_TYPE   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO)
 
#define ATBIT_MSK_OS
 
#define ATBIT_MSK_H
 
#define ATTYP_OS   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO /*| ATT_OTHER_NEG_O*/ | ATT_OTHER_ZO)
 
#define ATTYP_NP   (ATT_ATOM_N | ATT_ATOM_P)
 
#define ATTYP_N   (ATT_ATOM_N)
 
#define ATTYP_P   (ATT_ATOM_P)
 
#define AR_ANY_OH   0 /* 1 => create unknown to be acidic anions */
 
#define AR_SIMPLE_STEPS   3
 
#define AR_SIMPLE_MSK1   (ATBIT_COH | ATBIT_CSH | ATBIT_OOH | ATBIT_ZOOH | ATBIT_NOH | ATBIT_HalAcid)
 
#define AR_SIMPLE_TYP1   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO | ATT_HalAcid)
 
#define AR_SIMPLE_MSK2   (AR_ANY_OH? (ATBIT_N_OH) :0)
 
#define AR_SIMPLE_TYP2   (AR_ANY_OH? (ATT_N_O) :0)
 
#define AR_SIMPLE_MSK3   (AR_ANY_OH? (ATBIT_ZOH) :0)
 
#define AR_SIMPLE_TYP3   (AR_ANY_OH? (ATT_OTHER_ZO):0)
 
#define AA_ANY_O_Minus   0 /* 1 => neutralize unknown to be acidic anions */
 
#define AA_SIMPLE_STEPS   3
 
#define AA_SIMPLE_MSK1   (ATBIT_CO_Minus | ATBIT_CS_Minus | ATBIT_OO_Minus | ATBIT_ZOO_Minus | ATBIT_NO_Minus | ATBIT_O_Minus | ATBIT_HalAnion)
 
#define AA_SIMPLE_TYP1   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO | ATT_OH_MINUS | ATT_HalAnion )
 
#define AA_SIMPLE_MSK2   (AA_ANY_O_Minus? (ATBIT_N_O_Minus) :0)
 
#define AA_SIMPLE_TYP2   (AA_ANY_O_Minus? (ATT_N_O) :0)
 
#define AA_SIMPLE_MSK3   (AA_ANY_O_Minus? (ATBIT_ZO_Minus | ATBIT_O_Minus):0)
 
#define AA_SIMPLE_TYP3   (AA_ANY_O_Minus? (ATT_OTHER_ZO) :0)
 
#define AA_SIMPLE_STEPS   4
 
#define AA_SIMPLE_MSK4   ATBIT_N_Minus
 
#define AA_SIMPLE_TYP4   ATT_NP_MINUS_V23
 
#define PR_HARD_MSK_POS   ATBIT_MSK_NP
 
#define PR_HARD_TYP_POS   ATTYP_N
 
#define PR_HARD_TYP_POSP   ATTYP_P
 
#define PR_HARD_MSK_NEG   (ATBIT_MSK_NP | ATBIT_MSK_OS)
 
#define PR_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)
 
#define PR_HARD_MSK_H   (ATBIT_MSK_NP | ATBIT_MSK_OS)
 
#define PR_HARD_TYP_H   (ATTYP_N | ATTYP_OS)
 
#define AR_HARD_MSK_POS   ATBIT_MSK_NP
 
#define AR_HARD_TYP_POS   ATTYP_N
 
#define AR_HARD_MSK_NEG   (ATBIT_MSK_NP | ATBIT_MSK_OS)
 
#define AR_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)
 
#define AR_HARD_MSK_HA   (ATBIT_CO | ATBIT_NO )
 
#define AR_HARD_TYP_HA   (ATT_ACIDIC_CO | ATT_NO)
 
#define AR_HARD_MSK_HN   ((ATBIT_MSK_NP | ATBIT_MSK_OS) & ~AR_HARD_MSK_HA)
 
#define AR_HARD_TYP_HN   ((ATTYP_N | ATTYP_OS) /*& ~AR_HARD_TYP_HA*/)
 
#define AA_HARD_MSK_POS   ATBIT_MSK_NP
 
#define AA_HARD_TYP_POS   ATTYP_N
 
#define AA_HARD_MSK_NEG   ((ATBIT_MSK_NP | ATBIT_MSK_OS) & ~(ATBIT_CO | ATBIT_NO ))
 
#define AA_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)
 
#define AA_HARD_MSK_CO   (ATBIT_CO | ATBIT_NO )
 
#define AA_HARD_TYP_CO   (ATT_ACIDIC_CO | ATT_NO)
 
#define AA_HARD_MSK_H   (ATBIT_MSK_NP | ATBIT_MSK_OS)
 
#define AA_HARD_TYP_H   (ATTYP_N | ATTYP_OS)
 
#define BNS_MAX_NUM_FLOW_CHANGES   (1+2*MAX_BOND_EDGE_CAP)
 
#define TREE_NOT_IN_M   0 /* not in T or T' */
 
#define TREE_IN_2   1 /* in T' and not s-reachable */
 
#define TREE_IN_2BLOSS   2 /* in T' and in a blossom, is s-reachable */
 
#define TREE_IN_1   3 /* in T and is s-reachable */
 
#define TREE_IS_S_REACHABLE(X)   (Tree[X] >= TREE_IN_2BLOSS)
 
#define TREE_IS_ON_SCANQ   TREE_IS_S_REACHABLE
 
#define TREE_MARK(X, MARK)   do{ if( Tree[X] < MARK ) Tree[X]=MARK; }while(0)
 
#define prim(v)   (Vertex)((v)^1)
 
#define SwitchEdge_Vert1(u)   SwitchEdge[u][0]
 
#define SwitchEdge_Vert2(u)   Get2ndEdgeVertex( pBNS, SwitchEdge[u] )
 
#define SwitchEdge_IEdge(u)   SwitchEdge[u][1]
 
#define MAX_NEIGH   6
 
#define ALL_NONMETAL_Z   0
 
#define BNS_CHK_ALTP_NO_ALTPATH   0
 
#define BNS_CHK_ALTP_SAME_TGROUP   1
 
#define BNS_CHK_ALTP_SAME_VERTEX   2
 
#define BNS_CHK_ALTP_SET_SUCCESS   4
 
#define ALT_PATH_TAUTOM   1
 
#define ALT_PATH_CHARGE   2
 
#define ALT_PATH_4_SALT   3
 
#define MAX_NUM_RAD   256
 
#define CHECK_TACN   1
 
#define BT_ALTERN_BOND   1 /* 1-2, possibly stereo */
 
#define BT_OTHER_ALTERN_BOND   2 /* 1-3, 2-3, 1-2-3 alternating non-stereo non-taut bonds */
 
#define BT_ALTERN_NS_BOND   4
 
#define BT_TAUTOM_BOND   8
 
#define BT_ALTERN_UNKN_BOND   16
 
#define BT_IGNORE_BOND   0
 
#define BT_NONSTEREO_MASK   (BT_TAUTOM_BOND|BT_ALTERN_NS_BOND)
 
#define BT_ALT_BOND_MASK   (BT_ALTERN_BOND|BT_OTHER_ALTERN_BOND)
 
#define BT_NONTAUT_BOND_MASK   (BT_ALTERN_BOND|BT_OTHER_ALTERN_BOND|BT_ALTERN_NS_BOND)
 
#define nBlockNumberAltBns   flow /* internal variable of the DFS traversal: mark traversed bonds */
 
#define nNumAtInBlockAltBns   cap
 
#define nBondTypeInpAltBns   pass /* 0=>cannot be stereo at all, 1=>alt or taut non-stereo, 2=>can be stereo */
 
#define nBondNonStereoAltBns   cap /* 1=>found to be non-stereogenic although BondTypeInp=2; 0=>as in BondTypeInp */
 
#define bCutVertexAltBns   st_edge.cap0 /* cut-vertex flag */
 
#define nRingSystemAltBns   st_edge.cap /* ordering number of a ring system */
 
#define nNumAtInRingSystemAltBns   st_edge.flow0 /* number of vertices in a ring system */
 
#define nBlockSystemAltBns   st_edge.flow /* result of the DFS traversal: even cirquit must be within one block */
 
#define valenceAltBns   num_adj_edges
 
#define RI_ERR_ALLOC   (-1)
 
#define RI_ERR_SYNTAX   (-2)
 
#define RI_ERR_PROGR   (-3)
 

Typedefs

typedef enum tagAtTypeTotals AT_TYPE_TOTALS
 
typedef struct tagProtonRemovalMaskAndType PRMAT
 
typedef struct tagAltPathChanges ALT_PATH_CHANGES
 

Enumerations

enum  tagAtTypeTotals {
  ATTOT_NUM_NP_Plus , ATTOT_NUM_NP_Proton , ATTOT_NUM_NP_H , ATTOT_NUM_N_Minus ,
  ATTOT_NUM_NP , ATTOT_NUM_ON , ATTOT_NUM_COH , ATTOT_NUM_CSH ,
  ATTOT_NUM_ZOH , ATTOT_NUM_OOH , ATTOT_NUM_ZOOH , ATTOT_NUM_NOH ,
  ATTOT_NUM_N_OH , ATTOT_NUM_CO , ATTOT_NUM_ZO , ATTOT_NUM_NO ,
  ATTOT_NUM_N_O , ATTOT_NUM_CO_Minus , ATTOT_NUM_CS_Minus , ATTOT_NUM_ZO_Minus ,
  ATTOT_NUM_OO_Minus , ATTOT_NUM_ZOO_Minus , ATTOT_NUM_NO_Minus , ATTOT_NUM_N_O_Minus ,
  ATTOT_NUM_O_Minus , ATTOT_NUM_OH_Plus , ATTOT_NUM_O_Plus , ATTOT_NUM_Proton ,
  ATTOT_NUM_HalAnion , ATTOT_NUM_HalAcid , ATTOT_NUM_Errors , ATTOT_TOT_CHARGE ,
  ATTOT_NUM_CHARGES , ATTOT_ARRAY_LEN
}
 

Functions

int RestoreRadicalsOnly (BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at)
 
int bRadChangesAtomType (BN_STRUCT *pBNS, BN_DATA *pBD, Vertex v, Vertex v_1, Vertex v_2)
 
int BnsAdjustFlowBondsRad (BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at, int num_atoms)
 
int SetAtomRadAndChemValFromVertexCapFlow (BN_STRUCT *pBNS, inp_ATOM *atom, int v1)
 
int bNeedToTestTheFlow (int bond_type, int nTestFlow, int bTestForNonStereoBond)
 
int RestoreEdgeFlow (BNS_EDGE *edge, int delta, int bChangeFlow)
 
int SetAtomBondType (BNS_EDGE *edge, U_CHAR *bond_type12, U_CHAR *bond_type21, int delta, int bChangeFlow)
 
int RestoreBnStructFlow (BN_STRUCT *pBNS, int bChangeFlow)
 
int CompTGroupNumber (const void *tg1, const void *tg2, void *p)
 
int CompCGroupNumber (const void *cg1, const void *cg2, void *p)
 
int ReInitBnStructForAltBns (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int bUnknAltAsNoStereo)
 
int MarkRingSystemsAltBns (BN_STRUCT *pBNS, int bUnknAltAsNoStereo)
 
int MarkNonStereoAltBns (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int bUnknAltAsNoStereo)
 
int GetVertexDegree (BN_STRUCT *pBNS, Vertex v)
 
Vertex Get2ndEdgeVertex (BN_STRUCT *pBNS, Edge uv)
 
Vertex GetVertexNeighbor (BN_STRUCT *pBNS, Vertex v, int neigh, EdgeIndex *iedge)
 
int GetEdgePointer (BN_STRUCT *pBNS, Vertex u, Vertex v, EdgeIndex iuv, BNS_EDGE **uv, S_CHAR *s_or_t)
 
int AugmentEdge (BN_STRUCT *pBNS, Vertex u, Vertex v, EdgeIndex iuv, int delta, S_CHAR bReverse, int bChangeFlow)
 
int rescap_mark (BN_STRUCT *pBNS, Vertex u, Vertex v, EdgeIndex iuv)
 
int rescap (BN_STRUCT *pBNS, Vertex u, Vertex v, EdgeIndex iuv)
 
Vertex FindBase (Vertex u, Vertex *BasePtr)
 
int FindPathToVertex_s (Vertex x, Edge *SwitchEdge, Vertex *BasePtr, Vertex *Path, int MaxPathLen)
 
Vertex MakeBlossom (BN_STRUCT *pBNS, Vertex *ScanQ, int *pQSize, Vertex *Pu, Vertex *Pv, int max_len_Pu_Pv, Edge *SwitchEdge, Vertex *BasePtr, Vertex u, Vertex v, EdgeIndex iuv, Vertex b_u, Vertex b_v, S_CHAR *Tree)
 
int PullFlow (BN_STRUCT *pBNS, Edge *SwitchEdge, Vertex x, Vertex y, int delta, S_CHAR bReverse, int bChangeFlow)
 
int FindPathCap (BN_STRUCT *pBNS, Edge *SwitchEdge, Vertex x, Vertex y, int delta)
 
int SetBondsFromBnStructFlow (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int bChangeFlow0)
 
int MarkAtomsAtTautGroups (BN_STRUCT *pBNS, int num_atoms, BN_AATG *pAATG, int nEnd1, int nEnd2)
 
int nMinFlow2Check (BN_STRUCT *pBNS, int iedge)
 
int nMaxFlow2Check (BN_STRUCT *pBNS, int iedge)
 
int nCurFlow2Check (BN_STRUCT *pBNS, int iedge)
 
int bSetFlowToCheckOneBond (BN_STRUCT *pBNS, int iedge, int flow, BNS_FLOW_CHANGES *fcd)
 
int bRestoreFlowAfterCheckOneBond (BN_STRUCT *pBNS, BNS_FLOW_CHANGES *fcd)
 
int bSetBondsAfterCheckOneBond (BN_STRUCT *pBNS, BNS_FLOW_CHANGES *fcd, int nTestFlow, inp_ATOM *at, int num_atoms, int bChangeFlow)
 
int BnsTestAndMarkAltBonds (BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at, int num_atoms, BNS_FLOW_CHANGES *fcd, int bChangeFlow, int nBondTypeToTest)
 
int fix_special_bonds (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int edge_forbidden_mask)
 
int TempFix_NH_NH_Bonds (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms)
 
int CorrectFixing_NH_NH_Bonds (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms)
 
int fix_explicitly_indicated_bonds (int nebend, int *ebend, BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms)
 
int bSetBnsToCheckAltPath (BN_STRUCT *pBNS, int nVertDoubleBond, int nVertSingleBond, AT_NUMB type, int path_type, ALT_PATH_CHANGES *apc, BNS_FLOW_CHANGES *fcd, int *nDots)
 
int bRestoreBnsAfterCheckAltPath (BN_STRUCT *pBNS, ALT_PATH_CHANGES *apc, int bChangeFlow)
 
Vertex GetGroupVertex (BN_STRUCT *pBNS, Vertex v1, AT_NUMB type)
 
BNS_IEDGE GetEdgeToGroupVertex (BN_STRUCT *pBNS, Vertex v1, AT_NUMB type)
 
int bAddNewVertex (BN_STRUCT *pBNS, int nVertDoubleBond, int nCap, int nFlow, int nMaxAdjEdges, int *nDots)
 
int AddNewEdge (BNS_VERTEX *p1, BNS_VERTEX *p2, BN_STRUCT *pBNS, int nEdgeCap, int nEdgeFlow)
 
int bAddStCapToAVertex (BN_STRUCT *pBNS, Vertex v1, Vertex v2, VertexFlow *nOldCapVertSingleBond, int *nDots, int bAdjacentDonors)
 
static void remove_alt_bond_marks (inp_ATOM *at, int num_atoms)
 
int bIsBnsEndpoint (BN_STRUCT *pBNS, int v)
 
int mark_at_type (inp_ATOM *atom, int num_atoms, int nAtTypeTotals[])
 
int GetAtomChargeType (inp_ATOM *atom, int at_no, int nAtTypeTotals[], int *pMask, int bSubtract)
 
int AddChangedAtHChargeBNS (inp_ATOM *at, int num_atoms, int nAtTypeTotals[], S_CHAR *mark)
 
int EliminatePlusMinusChargeAmbiguity (BN_STRUCT *pBNS, int num_atoms)
 
int AddOrRemoveExplOrImplH (int nDelta, inp_ATOM *at, int num_atoms, AT_NUMB at_no, T_GROUP_INFO *t_group_info)
 
int SubtractOrChangeAtHChargeBNS (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int nAtTypeTotals[], S_CHAR *mark, T_GROUP_INFO *t_group_info, int bSubtract)
 
int is_Z_atom (U_CHAR el_number)
 
int IsZOX (inp_ATOM *atom, int at_x, int ord)
 
int SimpleRemoveHplusNPO (inp_ATOM *at, int num_atoms, int nAtTypeTotals[], T_GROUP_INFO *t_group_info)
 
int CreateCGroupInBnStruct (inp_ATOM *at, int num_atoms, BN_STRUCT *pBNS, int nType, int nMask, int nCharge)
 
int CreateTGroupInBnStruct (inp_ATOM *at, int num_atoms, BN_STRUCT *pBNS, int nType, int nMask)
 
int RemoveLastGroupFromBnStruct (inp_ATOM *at, int num_atoms, int tg, BN_STRUCT *pBNS)
 
int SetInitCapFlowToCurrent (BN_STRUCT *pBNS)
 
int SimpleRemoveAcidicProtons (inp_ATOM *at, int num_atoms, BN_AATG *pAATG, int num2remove)
 
int SimpleAddAcidicProtons (inp_ATOM *at, int num_atoms, BN_AATG *pAATG, int num2add)
 
int HardRemoveAcidicProtons (struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, BN_AATG *pAATG, int num2remove, int *nNumCanceledCharges, BN_STRUCT *pBNS, BN_DATA *pBD)
 
int HardAddAcidicProtons (struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, BN_AATG *pAATG, int num2add, int *nNumCanceledCharges, BN_STRUCT *pBNS, BN_DATA *pBD)
 
int HardRemoveHplusNP (struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, int bCancelChargesAlways, int *nNumCanceledCharges, BN_AATG *pAATG, BN_STRUCT *pBNS, BN_DATA *pBD)
 
int RemoveNPProtonsAndAcidCharges (struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, BN_AATG *pAATG, BN_STRUCT *pBNS, BN_DATA *pBD)
 
Vertex GetPrevVertex (BN_STRUCT *pBNS, Vertex y, Edge *SwitchEdge, EdgeIndex *iuv)
 
int bIgnoreVertexNonTACN_atom (BN_STRUCT *pBNS, Vertex u, Vertex v)
 
int bIgnoreVertexNonTACN_group (BN_STRUCT *pBNS, Vertex v, Vertex w, Edge *SwitchEdge)
 
int bIsRemovedHfromNHaion (BN_STRUCT *pBNS, Vertex u, Vertex v)
 
int bIsAggressiveDeprotonation (BN_STRUCT *pBNS, Vertex v, Vertex w, Edge *SwitchEdge)
 
int bIsAtomTypeHard (inp_ATOM *at, int endpoint, int nType, int nMask, int nCharge)
 
int bIsHDonorAccAtomType (inp_ATOM *at, int endpoint, int *cSubType)
 
int bIsNegAtomType (inp_ATOM *at, int i, int *cSubType)
 
int RegisterRadEndpoint (BN_STRUCT *pBNS, BN_DATA *pBD, Vertex u)
 
int cmp_rad_endpoints (const void *a1, const void *a2)
 
int cmp_endpoints_rad (const void *a1, const void *a2)
 
int bHasChargedNeighbor (inp_ATOM *at, int iat)
 
int RunBalancedNetworkSearch (BN_STRUCT *pBNS, BN_DATA *pBD, int bChangeFlow)
 
int nBondsValenceInpAt (const inp_ATOM *at, int *nNumAltBonds, int *nNumWrongBonds)
 
int SetForbiddenEdges (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int forbidden_mask, int nebend, int *ebend)
 
void update_some_attype_totals (int nAtTypeTotals[], int mask, int delta, S_CHAR at_charge)
 
int bIsHardRemHCandidate (inp_ATOM *at, int i, int *cSubType)
 
int bHasAcidicHydrogen (inp_ATOM *at, int i)
 
int bHasOtherExchangableH (inp_ATOM *at, int i)
 
int bHasAcidicMinus (inp_ATOM *at, int i)
 
int mark_alt_bonds_and_taut_groups (struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, inp_ATOM *at, inp_ATOM *at_fixed_bonds_out, int num_atoms, struct tagInchiTime *ulTimeOutTime, T_GROUP_INFO *t_group_info, INCHI_MODE *inpbTautFlags, INCHI_MODE *inpbTautFlagsDone, int nebend, int *ebend)
 
int bExistsAnyAltPath (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at, int num_atoms, int nVert2, int nVert1, int path_type)
 
int RemoveRadEndpoints (BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at)
 
int SetRadEndpoints (BN_STRUCT *pBNS, BN_DATA *pBD, BRS_MODE bRadSrchMode)
 
int SetRadEndpoints2 (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, BN_DATA *pBD, BRS_MODE bRadSrchMode)
 
int bExistsAltPath (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, BN_DATA *pBD, BN_AATG *pAATG, inp_ATOM *at, int num_atoms, int nVertDoubleBond, int nVertSingleBond, int path_type)
 
BN_STRUCTAllocateAndInitBnStruct (inp_ATOM *at, int num_atoms, int nMaxAddAtoms, int nMaxAddEdges, int max_altp, int *pNum_changed_bonds)
 
BN_STRUCTDeAllocateBnStruct (BN_STRUCT *pBNS)
 
int ReInitBnStructAltPaths (BN_STRUCT *pBNS)
 
int ReInitBnStructAddGroups (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, T_GROUP_INFO *tgi, C_GROUP_INFO *cgi)
 
int ReInitBnStruct (BN_STRUCT *pBNS, inp_ATOM *at, int num_at, int bRemoveGroupsFromAtoms)
 
int AddTGroups2BnStruct (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, T_GROUP_INFO *tgi)
 
int AddCGroups2BnStruct (CANON_GLOBALS *pCG, BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, C_GROUP_INFO *cgi)
 
void ClearAllBnDataVertices (Vertex *v, Vertex value, int size)
 
void ClearAllBnDataEdges (Edge *e, Vertex value, int size)
 
BN_DATADeAllocateBnData (BN_DATA *pBD)
 
BN_DATAAllocateAndInitBnData (int max_num_vertices)
 
int ReInitBnData (BN_DATA *pBD)
 
int BalancedNetworkSearch (BN_STRUCT *pBNS, BN_DATA *pBD, int bChangeFlow)
 
int AddRemoveProtonsRestr (inp_ATOM *at, int num_atoms, int *num_protons_to_add, int nNumProtAddedByRestr, INCHI_MODE bNormalizationFlags, int num_tg, int nChargeRevrs, int nChargeInChI)
 
int AddRemoveIsoProtonsRestr (inp_ATOM *at, int num_atoms, NUM_H num_protons_to_add[], int num_tg)
 

Variables

int ArTypMask []
 
int AaTypMask []
 

Macro Definition Documentation

◆ AA_ANY_O_Minus

#define AA_ANY_O_Minus   0 /* 1 => neutralize unknown to be acidic anions */

◆ AA_HARD_MSK_CO

#define AA_HARD_MSK_CO   (ATBIT_CO | ATBIT_NO )

◆ AA_HARD_MSK_H

#define AA_HARD_MSK_H   (ATBIT_MSK_NP | ATBIT_MSK_OS)

◆ AA_HARD_MSK_NEG

#define AA_HARD_MSK_NEG   ((ATBIT_MSK_NP | ATBIT_MSK_OS) & ~(ATBIT_CO | ATBIT_NO ))

◆ AA_HARD_MSK_POS

#define AA_HARD_MSK_POS   ATBIT_MSK_NP

◆ AA_HARD_TYP_CO

#define AA_HARD_TYP_CO   (ATT_ACIDIC_CO | ATT_NO)

◆ AA_HARD_TYP_H

#define AA_HARD_TYP_H   (ATTYP_N | ATTYP_OS)

◆ AA_HARD_TYP_NEG

#define AA_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)

◆ AA_HARD_TYP_POS

#define AA_HARD_TYP_POS   ATTYP_N

◆ AA_SIMPLE_MSK1

◆ AA_SIMPLE_MSK2

#define AA_SIMPLE_MSK2   (AA_ANY_O_Minus? (ATBIT_N_O_Minus) :0)

◆ AA_SIMPLE_MSK3

#define AA_SIMPLE_MSK3   (AA_ANY_O_Minus? (ATBIT_ZO_Minus | ATBIT_O_Minus):0)

◆ AA_SIMPLE_MSK4

#define AA_SIMPLE_MSK4   ATBIT_N_Minus

◆ AA_SIMPLE_STEPS [1/2]

#define AA_SIMPLE_STEPS   3

◆ AA_SIMPLE_STEPS [2/2]

#define AA_SIMPLE_STEPS   4

◆ AA_SIMPLE_TYP1

#define AA_SIMPLE_TYP1   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO | ATT_OH_MINUS | ATT_HalAnion )

◆ AA_SIMPLE_TYP2

#define AA_SIMPLE_TYP2   (AA_ANY_O_Minus? (ATT_N_O) :0)

◆ AA_SIMPLE_TYP3

#define AA_SIMPLE_TYP3   (AA_ANY_O_Minus? (ATT_OTHER_ZO) :0)

◆ AA_SIMPLE_TYP4

#define AA_SIMPLE_TYP4   ATT_NP_MINUS_V23

◆ ALL_NONMETAL_Z

#define ALL_NONMETAL_Z   0

◆ ALLOW_ONLY_SIMPLE_ALT_PATH

#define ALLOW_ONLY_SIMPLE_ALT_PATH   0 /* 0 => allow alt. path to contain same bond 2 times (in opposite directions) */

◆ ALT_PATH_4_SALT

#define ALT_PATH_4_SALT   3

◆ ALT_PATH_CHARGE

#define ALT_PATH_CHARGE   2

◆ ALT_PATH_TAUTOM

#define ALT_PATH_TAUTOM   1

◆ AR_ANY_OH

#define AR_ANY_OH   0 /* 1 => create unknown to be acidic anions */

◆ AR_HARD_MSK_HA

#define AR_HARD_MSK_HA   (ATBIT_CO | ATBIT_NO )

◆ AR_HARD_MSK_HN

#define AR_HARD_MSK_HN   ((ATBIT_MSK_NP | ATBIT_MSK_OS) & ~AR_HARD_MSK_HA)

◆ AR_HARD_MSK_NEG

#define AR_HARD_MSK_NEG   (ATBIT_MSK_NP | ATBIT_MSK_OS)

◆ AR_HARD_MSK_POS

#define AR_HARD_MSK_POS   ATBIT_MSK_NP

◆ AR_HARD_TYP_HA

#define AR_HARD_TYP_HA   (ATT_ACIDIC_CO | ATT_NO)

◆ AR_HARD_TYP_HN

#define AR_HARD_TYP_HN   ((ATTYP_N | ATTYP_OS) /*& ~AR_HARD_TYP_HA*/)

◆ AR_HARD_TYP_NEG

#define AR_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)

◆ AR_HARD_TYP_POS

#define AR_HARD_TYP_POS   ATTYP_N

◆ AR_SIMPLE_MSK1

#define AR_SIMPLE_MSK1   (ATBIT_COH | ATBIT_CSH | ATBIT_OOH | ATBIT_ZOOH | ATBIT_NOH | ATBIT_HalAcid)

◆ AR_SIMPLE_MSK2

#define AR_SIMPLE_MSK2   (AR_ANY_OH? (ATBIT_N_OH) :0)

◆ AR_SIMPLE_MSK3

#define AR_SIMPLE_MSK3   (AR_ANY_OH? (ATBIT_ZOH) :0)

◆ AR_SIMPLE_STEPS

#define AR_SIMPLE_STEPS   3

◆ AR_SIMPLE_TYP1

#define AR_SIMPLE_TYP1   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO | ATT_HalAcid)

◆ AR_SIMPLE_TYP2

#define AR_SIMPLE_TYP2   (AR_ANY_OH? (ATT_N_O) :0)

◆ AR_SIMPLE_TYP3

#define AR_SIMPLE_TYP3   (AR_ANY_OH? (ATT_OTHER_ZO):0)

◆ ATBIT_CO

#define ATBIT_CO   (1 << ATTOT_NUM_CO)

◆ ATBIT_CO_Minus

#define ATBIT_CO_Minus   (1 << ATTOT_NUM_CO_Minus)

◆ ATBIT_COH

#define ATBIT_COH   (1 << ATTOT_NUM_COH)

◆ ATBIT_CS_Minus

#define ATBIT_CS_Minus   (1 << ATTOT_NUM_CS_Minus)

◆ ATBIT_CSH

#define ATBIT_CSH   (1 << ATTOT_NUM_CSH)

◆ ATBIT_Errors

#define ATBIT_Errors   (1 << ATTOT_NUM_Errors)

◆ ATBIT_HalAcid

#define ATBIT_HalAcid   (1 << ATTOT_NUM_HalAcid)

◆ ATBIT_HalAnion

#define ATBIT_HalAnion   (1 << ATTOT_NUM_HalAnion)

◆ ATBIT_MSK_H

#define ATBIT_MSK_H
Value:
#define ATBIT_N_OH
Definition ichi_bns.c:137
#define ATBIT_OOH
Definition ichi_bns.c:134
#define ATBIT_NP_Proton
Definition ichi_bns.c:126
#define ATBIT_NP_H
Definition ichi_bns.c:127
#define ATBIT_NOH
Definition ichi_bns.c:136
#define ATBIT_ZOOH
Definition ichi_bns.c:135
#define ATBIT_ZOH
Definition ichi_bns.c:133
#define ATBIT_COH
Definition ichi_bns.c:131
#define ATBIT_CSH
Definition ichi_bns.c:132

◆ ATBIT_MSK_NP

#define ATBIT_MSK_NP   (ATBIT_NP_Plus | ATBIT_NP_Proton | ATBIT_NP_H | ATBIT_N_Minus | ATBIT_NP)

◆ ATBIT_MSK_OS

#define ATBIT_MSK_OS
Value:
#define ATBIT_ZO_Minus
Definition ichi_bns.c:144
#define ATBIT_N_O
Definition ichi_bns.c:141
#define ATBIT_NO
Definition ichi_bns.c:140
#define ATBIT_ZO
Definition ichi_bns.c:139
#define ATBIT_N_O_Minus
Definition ichi_bns.c:148
#define ATBIT_CO_Minus
Definition ichi_bns.c:142
#define ATBIT_CO
Definition ichi_bns.c:138
#define ATBIT_OO_Minus
Definition ichi_bns.c:145
#define ATBIT_CS_Minus
Definition ichi_bns.c:143
#define ATBIT_ZOO_Minus
Definition ichi_bns.c:146
#define ATBIT_NO_Minus
Definition ichi_bns.c:147

◆ ATBIT_N_Minus

#define ATBIT_N_Minus   (1 << ATTOT_NUM_N_Minus)

◆ ATBIT_N_O

#define ATBIT_N_O   (1 << ATTOT_NUM_N_O)

◆ ATBIT_N_O_Minus

#define ATBIT_N_O_Minus   (1 << ATTOT_NUM_N_O_Minus)

◆ ATBIT_N_OH

#define ATBIT_N_OH   (1 << ATTOT_NUM_N_OH)

◆ ATBIT_NO

#define ATBIT_NO   (1 << ATTOT_NUM_NO)

◆ ATBIT_NO_Minus

#define ATBIT_NO_Minus   (1 << ATTOT_NUM_NO_Minus)

◆ ATBIT_NOH

#define ATBIT_NOH   (1 << ATTOT_NUM_NOH)

◆ ATBIT_NP

#define ATBIT_NP   (1 << ATTOT_NUM_NP)

◆ ATBIT_NP_H

#define ATBIT_NP_H   (1 << ATTOT_NUM_NP_H)

◆ ATBIT_NP_Plus

#define ATBIT_NP_Plus   (1 << ATTOT_NUM_NP_Plus)

◆ ATBIT_NP_Proton

#define ATBIT_NP_Proton   (1 << ATTOT_NUM_NP_Proton)

◆ ATBIT_O_Minus

#define ATBIT_O_Minus   (1 << ATTOT_NUM_O_Minus)

◆ ATBIT_O_Plus

#define ATBIT_O_Plus   (1 << ATTOT_NUM_O_Plus)

◆ ATBIT_OH_Plus

#define ATBIT_OH_Plus   (1 << ATTOT_NUM_OH_Plus)

◆ ATBIT_ON

#define ATBIT_ON   (1 << ATTOT_NUM_ON)

◆ ATBIT_OO_Minus

#define ATBIT_OO_Minus   (1 << ATTOT_NUM_OO_Minus)

◆ ATBIT_OOH

#define ATBIT_OOH   (1 << ATTOT_NUM_OOH)

◆ ATBIT_Proton

#define ATBIT_Proton   (1 << ATTOT_NUM_Proton)

◆ ATBIT_ZO

#define ATBIT_ZO   (1 << ATTOT_NUM_ZO)

◆ ATBIT_ZO_Minus

#define ATBIT_ZO_Minus   (1 << ATTOT_NUM_ZO_Minus)

◆ ATBIT_ZOH

#define ATBIT_ZOH   (1 << ATTOT_NUM_ZOH)

◆ ATBIT_ZOO_Minus

#define ATBIT_ZOO_Minus   (1 << ATTOT_NUM_ZOO_Minus)

◆ ATBIT_ZOOH

#define ATBIT_ZOOH   (1 << ATTOT_NUM_ZOOH)

◆ ATTYP_N

#define ATTYP_N   (ATT_ATOM_N)

◆ ATTYP_NP

#define ATTYP_NP   (ATT_ATOM_N | ATT_ATOM_P)

◆ ATTYP_OS

#define ATTYP_OS   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO /*| ATT_OTHER_NEG_O*/ | ATT_OTHER_ZO)

◆ ATTYP_P

#define ATTYP_P   (ATT_ATOM_P)

◆ bCutVertexAltBns

#define bCutVertexAltBns   st_edge.cap0 /* cut-vertex flag */

◆ BNS_CHK_ALTP_NO_ALTPATH

#define BNS_CHK_ALTP_NO_ALTPATH   0

◆ BNS_CHK_ALTP_SAME_TGROUP

#define BNS_CHK_ALTP_SAME_TGROUP   1

◆ BNS_CHK_ALTP_SAME_VERTEX

#define BNS_CHK_ALTP_SAME_VERTEX   2

◆ BNS_CHK_ALTP_SET_SUCCESS

#define BNS_CHK_ALTP_SET_SUCCESS   4

◆ BNS_MARK_ONLY_BLOCKS

#define BNS_MARK_ONLY_BLOCKS   1 /* 1 => find only blocks, do not search for ring systems */

◆ BNS_MAX_NUM_FLOW_CHANGES

#define BNS_MAX_NUM_FLOW_CHANGES   (1+2*MAX_BOND_EDGE_CAP)

◆ BT_ALT_BOND_MASK

#define BT_ALT_BOND_MASK   (BT_ALTERN_BOND|BT_OTHER_ALTERN_BOND)

◆ BT_ALTERN_BOND

#define BT_ALTERN_BOND   1 /* 1-2, possibly stereo */

◆ BT_ALTERN_NS_BOND

#define BT_ALTERN_NS_BOND   4

◆ BT_ALTERN_UNKN_BOND

#define BT_ALTERN_UNKN_BOND   16

◆ BT_IGNORE_BOND

#define BT_IGNORE_BOND   0

◆ BT_NONSTEREO_MASK

#define BT_NONSTEREO_MASK   (BT_TAUTOM_BOND|BT_ALTERN_NS_BOND)

◆ BT_NONTAUT_BOND_MASK

#define BT_NONTAUT_BOND_MASK   (BT_ALTERN_BOND|BT_OTHER_ALTERN_BOND|BT_ALTERN_NS_BOND)

◆ BT_OTHER_ALTERN_BOND

#define BT_OTHER_ALTERN_BOND   2 /* 1-3, 2-3, 1-2-3 alternating non-stereo non-taut bonds */

◆ BT_TAUTOM_BOND

#define BT_TAUTOM_BOND   8

◆ CHECK_TACN

#define CHECK_TACN   1

◆ CHECK_TG_ALT_PATH

#define CHECK_TG_ALT_PATH
Value:
0 /* 1=> when chacking alt path of a tautomeric atom modify
t-group, not the atom */

◆ FIX_CPOINT_BOND_CAP

#define FIX_CPOINT_BOND_CAP   1 /* 1=> fix bug in case of double bond from neutral cpoint */

◆ IS_FORBIDDEN

#define IS_FORBIDDEN (   EDGE_FORBIDDEN,
  PBNS 
)    (EDGE_FORBIDDEN)

◆ KNOWN_ACIDIC_TYPE

#define KNOWN_ACIDIC_TYPE   (ATT_ACIDIC_CO | ATT_ACIDIC_S | ATT_OO | ATT_ZOO | ATT_NO)

◆ MAX_NEIGH

#define MAX_NEIGH   6

◆ MAX_NUM_RAD

#define MAX_NUM_RAD   256

◆ nBlockNumberAltBns

#define nBlockNumberAltBns   flow /* internal variable of the DFS traversal: mark traversed bonds */

◆ nBlockSystemAltBns

#define nBlockSystemAltBns   st_edge.flow /* result of the DFS traversal: even cirquit must be within one block */

◆ nBondNonStereoAltBns

#define nBondNonStereoAltBns   cap /* 1=>found to be non-stereogenic although BondTypeInp=2; 0=>as in BondTypeInp */

◆ nBondTypeInpAltBns

#define nBondTypeInpAltBns   pass /* 0=>cannot be stereo at all, 1=>alt or taut non-stereo, 2=>can be stereo */

◆ nNumAtInBlockAltBns

#define nNumAtInBlockAltBns   cap

◆ nNumAtInRingSystemAltBns

#define nNumAtInRingSystemAltBns   st_edge.flow0 /* number of vertices in a ring system */

◆ nRingSystemAltBns

#define nRingSystemAltBns   st_edge.cap /* ordering number of a ring system */

◆ PR_HARD_MSK_H

#define PR_HARD_MSK_H   (ATBIT_MSK_NP | ATBIT_MSK_OS)

◆ PR_HARD_MSK_NEG

#define PR_HARD_MSK_NEG   (ATBIT_MSK_NP | ATBIT_MSK_OS)

◆ PR_HARD_MSK_POS

#define PR_HARD_MSK_POS   ATBIT_MSK_NP

◆ PR_HARD_TYP_H

#define PR_HARD_TYP_H   (ATTYP_N | ATTYP_OS)

◆ PR_HARD_TYP_NEG

#define PR_HARD_TYP_NEG   (ATTYP_N | ATTYP_OS)

◆ PR_HARD_TYP_POS

#define PR_HARD_TYP_POS   ATTYP_N

◆ PR_HARD_TYP_POSP

#define PR_HARD_TYP_POSP   ATTYP_P

◆ PR_SIMPLE_MSK

#define PR_SIMPLE_MSK   (ATBIT_NP_Proton | ATBIT_OH_Plus)

◆ PR_SIMPLE_TYP

#define PR_SIMPLE_TYP   (ATT_ATOM_N | ATT_ATOM_P | ATT_O_PLUS)

◆ prim

#define prim (   v)    (Vertex)((v)^1)

◆ RESET_EDGE_FORBIDDEN_MASK

#define RESET_EDGE_FORBIDDEN_MASK   1 /* 1: previous; 0: do not apply "edge->forbidden &= pBNS->edge_forbidden_mask" */

◆ RI_ERR_ALLOC

#define RI_ERR_ALLOC   (-1)

◆ RI_ERR_PROGR

#define RI_ERR_PROGR   (-3)

◆ RI_ERR_SYNTAX

#define RI_ERR_SYNTAX   (-2)

◆ SwitchEdge_IEdge

#define SwitchEdge_IEdge (   u)    SwitchEdge[u][1]

◆ SwitchEdge_Vert1

#define SwitchEdge_Vert1 (   u)    SwitchEdge[u][0]

◆ SwitchEdge_Vert2

#define SwitchEdge_Vert2 (   u)    Get2ndEdgeVertex( pBNS, SwitchEdge[u] )

◆ TREE_IN_1

#define TREE_IN_1   3 /* in T and is s-reachable */

◆ TREE_IN_2

#define TREE_IN_2   1 /* in T' and not s-reachable */

◆ TREE_IN_2BLOSS

#define TREE_IN_2BLOSS   2 /* in T' and in a blossom, is s-reachable */

◆ TREE_IS_ON_SCANQ

#define TREE_IS_ON_SCANQ   TREE_IS_S_REACHABLE

◆ TREE_IS_S_REACHABLE

#define TREE_IS_S_REACHABLE (   X)    (Tree[X] >= TREE_IN_2BLOSS)

◆ TREE_MARK

#define TREE_MARK (   X,
  MARK 
)    do{ if( Tree[X] < MARK ) Tree[X]=MARK; }while(0)

◆ TREE_NOT_IN_M

#define TREE_NOT_IN_M   0 /* not in T or T' */

◆ valenceAltBns

#define valenceAltBns   num_adj_edges

Typedef Documentation

◆ ALT_PATH_CHANGES

◆ AT_TYPE_TOTALS

◆ PRMAT

Enumeration Type Documentation

◆ tagAtTypeTotals

Enumerator
ATTOT_NUM_NP_Plus 
ATTOT_NUM_NP_Proton 
ATTOT_NUM_NP_H 
ATTOT_NUM_N_Minus 
ATTOT_NUM_NP 
ATTOT_NUM_ON 
ATTOT_NUM_COH 
ATTOT_NUM_CSH 
ATTOT_NUM_ZOH 
ATTOT_NUM_OOH 
ATTOT_NUM_ZOOH 
ATTOT_NUM_NOH 
ATTOT_NUM_N_OH 
ATTOT_NUM_CO 
ATTOT_NUM_ZO 
ATTOT_NUM_NO 
ATTOT_NUM_N_O 
ATTOT_NUM_CO_Minus 
ATTOT_NUM_CS_Minus 
ATTOT_NUM_ZO_Minus 
ATTOT_NUM_OO_Minus 
ATTOT_NUM_ZOO_Minus 
ATTOT_NUM_NO_Minus 
ATTOT_NUM_N_O_Minus 
ATTOT_NUM_O_Minus 
ATTOT_NUM_OH_Plus 
ATTOT_NUM_O_Plus 
ATTOT_NUM_Proton 
ATTOT_NUM_HalAnion 
ATTOT_NUM_HalAcid 
ATTOT_NUM_Errors 
ATTOT_TOT_CHARGE 
ATTOT_NUM_CHARGES 
ATTOT_ARRAY_LEN 

Function Documentation

◆ AddCGroups2BnStruct()

int AddCGroups2BnStruct ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
C_GROUP_INFO cgi 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddChangedAtHChargeBNS()

int AddChangedAtHChargeBNS ( inp_ATOM at,
int  num_atoms,
int  nAtTypeTotals[],
S_CHAR mark 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddNewEdge()

int AddNewEdge ( BNS_VERTEX p1,
BNS_VERTEX p2,
BN_STRUCT pBNS,
int  nEdgeCap,
int  nEdgeFlow 
)
+ Here is the caller graph for this function:

◆ AddOrRemoveExplOrImplH()

int AddOrRemoveExplOrImplH ( int  nDelta,
inp_ATOM at,
int  num_atoms,
AT_NUMB  at_no,
T_GROUP_INFO t_group_info 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddRemoveIsoProtonsRestr()

int AddRemoveIsoProtonsRestr ( inp_ATOM at,
int  num_atoms,
NUM_H  num_protons_to_add[],
int  num_tg 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddRemoveProtonsRestr()

int AddRemoveProtonsRestr ( inp_ATOM at,
int  num_atoms,
int *  num_protons_to_add,
int  nNumProtAddedByRestr,
INCHI_MODE  bNormalizationFlags,
int  num_tg,
int  nChargeRevrs,
int  nChargeInChI 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddTGroups2BnStruct()

int AddTGroups2BnStruct ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
T_GROUP_INFO tgi 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AllocateAndInitBnData()

BN_DATA * AllocateAndInitBnData ( int  max_num_vertices)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AllocateAndInitBnStruct()

BN_STRUCT * AllocateAndInitBnStruct ( inp_ATOM at,
int  num_atoms,
int  nMaxAddAtoms,
int  nMaxAddEdges,
int  max_altp,
int *  pNum_changed_bonds 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AugmentEdge()

int AugmentEdge ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v,
EdgeIndex  iuv,
int  delta,
S_CHAR  bReverse,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bAddNewVertex()

int bAddNewVertex ( BN_STRUCT pBNS,
int  nVertDoubleBond,
int  nCap,
int  nFlow,
int  nMaxAdjEdges,
int *  nDots 
)
+ Here is the caller graph for this function:

◆ bAddStCapToAVertex()

int bAddStCapToAVertex ( BN_STRUCT pBNS,
Vertex  v1,
Vertex  v2,
VertexFlow nOldCapVertSingleBond,
int *  nDots,
int  bAdjacentDonors 
)
+ Here is the caller graph for this function:

◆ BalancedNetworkSearch()

int BalancedNetworkSearch ( BN_STRUCT pBNS,
BN_DATA pBD,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bExistsAltPath()

int bExistsAltPath ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
BN_DATA pBD,
BN_AATG pAATG,
inp_ATOM at,
int  num_atoms,
int  nVertDoubleBond,
int  nVertSingleBond,
int  path_type 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bExistsAnyAltPath()

int bExistsAnyAltPath ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
BN_DATA pBD,
inp_ATOM at,
int  num_atoms,
int  nVert2,
int  nVert1,
int  path_type 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bHasAcidicHydrogen()

int bHasAcidicHydrogen ( inp_ATOM at,
int  i 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bHasAcidicMinus()

int bHasAcidicMinus ( inp_ATOM at,
int  i 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bHasChargedNeighbor()

int bHasChargedNeighbor ( inp_ATOM at,
int  iat 
)
+ Here is the caller graph for this function:

◆ bHasOtherExchangableH()

int bHasOtherExchangableH ( inp_ATOM at,
int  i 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIgnoreVertexNonTACN_atom()

int bIgnoreVertexNonTACN_atom ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIgnoreVertexNonTACN_group()

int bIgnoreVertexNonTACN_group ( BN_STRUCT pBNS,
Vertex  v,
Vertex  w,
Edge SwitchEdge 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIsAggressiveDeprotonation()

int bIsAggressiveDeprotonation ( BN_STRUCT pBNS,
Vertex  v,
Vertex  w,
Edge SwitchEdge 
)
+ Here is the caller graph for this function:

◆ bIsAtomTypeHard()

int bIsAtomTypeHard ( inp_ATOM at,
int  endpoint,
int  nType,
int  nMask,
int  nCharge 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIsBnsEndpoint()

int bIsBnsEndpoint ( BN_STRUCT pBNS,
int  v 
)
+ Here is the caller graph for this function:

◆ bIsHardRemHCandidate()

int bIsHardRemHCandidate ( inp_ATOM at,
int  i,
int *  cSubType 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIsHDonorAccAtomType()

int bIsHDonorAccAtomType ( inp_ATOM at,
int  endpoint,
int *  cSubType 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIsNegAtomType()

int bIsNegAtomType ( inp_ATOM at,
int  i,
int *  cSubType 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bIsRemovedHfromNHaion()

int bIsRemovedHfromNHaion ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v 
)
+ Here is the caller graph for this function:

◆ bNeedToTestTheFlow()

int bNeedToTestTheFlow ( int  bond_type,
int  nTestFlow,
int  bTestForNonStereoBond 
)
+ Here is the caller graph for this function:

◆ BnsAdjustFlowBondsRad()

int BnsAdjustFlowBondsRad ( BN_STRUCT pBNS,
BN_DATA pBD,
inp_ATOM at,
int  num_atoms 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ BnsTestAndMarkAltBonds()

int BnsTestAndMarkAltBonds ( BN_STRUCT pBNS,
BN_DATA pBD,
inp_ATOM at,
int  num_atoms,
BNS_FLOW_CHANGES fcd,
int  bChangeFlow,
int  nBondTypeToTest 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bRadChangesAtomType()

int bRadChangesAtomType ( BN_STRUCT pBNS,
BN_DATA pBD,
Vertex  v,
Vertex  v_1,
Vertex  v_2 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bRestoreBnsAfterCheckAltPath()

int bRestoreBnsAfterCheckAltPath ( BN_STRUCT pBNS,
ALT_PATH_CHANGES apc,
int  bChangeFlow 
)
+ Here is the caller graph for this function:

◆ bRestoreFlowAfterCheckOneBond()

int bRestoreFlowAfterCheckOneBond ( BN_STRUCT pBNS,
BNS_FLOW_CHANGES fcd 
)
+ Here is the caller graph for this function:

◆ bSetBnsToCheckAltPath()

int bSetBnsToCheckAltPath ( BN_STRUCT pBNS,
int  nVertDoubleBond,
int  nVertSingleBond,
AT_NUMB  type,
int  path_type,
ALT_PATH_CHANGES apc,
BNS_FLOW_CHANGES fcd,
int *  nDots 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bSetBondsAfterCheckOneBond()

int bSetBondsAfterCheckOneBond ( BN_STRUCT pBNS,
BNS_FLOW_CHANGES fcd,
int  nTestFlow,
inp_ATOM at,
int  num_atoms,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bSetFlowToCheckOneBond()

int bSetFlowToCheckOneBond ( BN_STRUCT pBNS,
int  iedge,
int  flow,
BNS_FLOW_CHANGES fcd 
)
+ Here is the caller graph for this function:

◆ ClearAllBnDataEdges()

void ClearAllBnDataEdges ( Edge e,
Vertex  value,
int  size 
)
+ Here is the caller graph for this function:

◆ ClearAllBnDataVertices()

void ClearAllBnDataVertices ( Vertex v,
Vertex  value,
int  size 
)
+ Here is the caller graph for this function:

◆ cmp_endpoints_rad()

int cmp_endpoints_rad ( const void *  a1,
const void *  a2 
)

◆ cmp_rad_endpoints()

int cmp_rad_endpoints ( const void *  a1,
const void *  a2 
)
+ Here is the caller graph for this function:

◆ CompCGroupNumber()

int CompCGroupNumber ( const void *  cg1,
const void *  cg2,
void *  p 
)
+ Here is the caller graph for this function:

◆ CompTGroupNumber()

int CompTGroupNumber ( const void *  tg1,
const void *  tg2,
void *  p 
)
+ Here is the caller graph for this function:

◆ CorrectFixing_NH_NH_Bonds()

int CorrectFixing_NH_NH_Bonds ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ CreateCGroupInBnStruct()

int CreateCGroupInBnStruct ( inp_ATOM at,
int  num_atoms,
BN_STRUCT pBNS,
int  nType,
int  nMask,
int  nCharge 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CreateTGroupInBnStruct()

int CreateTGroupInBnStruct ( inp_ATOM at,
int  num_atoms,
BN_STRUCT pBNS,
int  nType,
int  nMask 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DeAllocateBnData()

BN_DATA * DeAllocateBnData ( BN_DATA pBD)
+ Here is the caller graph for this function:

◆ DeAllocateBnStruct()

BN_STRUCT * DeAllocateBnStruct ( BN_STRUCT pBNS)
+ Here is the caller graph for this function:

◆ EliminatePlusMinusChargeAmbiguity()

int EliminatePlusMinusChargeAmbiguity ( BN_STRUCT pBNS,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ FindBase()

Vertex FindBase ( Vertex  u,
Vertex BasePtr 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FindPathCap()

int FindPathCap ( BN_STRUCT pBNS,
Edge SwitchEdge,
Vertex  x,
Vertex  y,
int  delta 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FindPathToVertex_s()

int FindPathToVertex_s ( Vertex  x,
Edge SwitchEdge,
Vertex BasePtr,
Vertex Path,
int  MaxPathLen 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fix_explicitly_indicated_bonds()

int fix_explicitly_indicated_bonds ( int  nebend,
int *  ebend,
BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ fix_special_bonds()

int fix_special_bonds ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  edge_forbidden_mask 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Get2ndEdgeVertex()

Vertex Get2ndEdgeVertex ( BN_STRUCT pBNS,
Edge  uv 
)

◆ GetAtomChargeType()

int GetAtomChargeType ( inp_ATOM atom,
int  at_no,
int  nAtTypeTotals[],
int *  pMask,
int  bSubtract 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetEdgePointer()

int GetEdgePointer ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v,
EdgeIndex  iuv,
BNS_EDGE **  uv,
S_CHAR s_or_t 
)
+ Here is the caller graph for this function:

◆ GetEdgeToGroupVertex()

BNS_IEDGE GetEdgeToGroupVertex ( BN_STRUCT pBNS,
Vertex  v1,
AT_NUMB  type 
)
+ Here is the caller graph for this function:

◆ GetGroupVertex()

Vertex GetGroupVertex ( BN_STRUCT pBNS,
Vertex  v1,
AT_NUMB  type 
)
+ Here is the caller graph for this function:

◆ GetPrevVertex()

Vertex GetPrevVertex ( BN_STRUCT pBNS,
Vertex  y,
Edge SwitchEdge,
EdgeIndex iuv 
)
+ Here is the caller graph for this function:

◆ GetVertexDegree()

int GetVertexDegree ( BN_STRUCT pBNS,
Vertex  v 
)
+ Here is the caller graph for this function:

◆ GetVertexNeighbor()

Vertex GetVertexNeighbor ( BN_STRUCT pBNS,
Vertex  v,
int  neigh,
EdgeIndex iedge 
)
+ Here is the caller graph for this function:

◆ HardAddAcidicProtons()

int HardAddAcidicProtons ( struct tagCANON_GLOBALS pCG,
inp_ATOM at,
int  num_atoms,
BN_AATG pAATG,
int  num2add,
int *  nNumCanceledCharges,
BN_STRUCT pBNS,
BN_DATA pBD 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HardRemoveAcidicProtons()

int HardRemoveAcidicProtons ( struct tagCANON_GLOBALS pCG,
inp_ATOM at,
int  num_atoms,
BN_AATG pAATG,
int  num2remove,
int *  nNumCanceledCharges,
BN_STRUCT pBNS,
BN_DATA pBD 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HardRemoveHplusNP()

int HardRemoveHplusNP ( struct tagCANON_GLOBALS pCG,
inp_ATOM at,
int  num_atoms,
int  bCancelChargesAlways,
int *  nNumCanceledCharges,
BN_AATG pAATG,
BN_STRUCT pBNS,
BN_DATA pBD 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_Z_atom()

int is_Z_atom ( U_CHAR  el_number)
+ Here is the caller graph for this function:

◆ IsZOX()

int IsZOX ( inp_ATOM atom,
int  at_x,
int  ord 
)
+ Here is the caller graph for this function:

◆ MakeBlossom()

Vertex MakeBlossom ( BN_STRUCT pBNS,
Vertex ScanQ,
int *  pQSize,
Vertex Pu,
Vertex Pv,
int  max_len_Pu_Pv,
Edge SwitchEdge,
Vertex BasePtr,
Vertex  u,
Vertex  v,
EdgeIndex  iuv,
Vertex  b_u,
Vertex  b_v,
S_CHAR Tree 
)

IsInScanQ(prim(z))

IsInScanQ(prim(z))

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_alt_bonds_and_taut_groups()

int mark_alt_bonds_and_taut_groups ( struct tagINCHI_CLOCK ic,
struct tagCANON_GLOBALS pCG,
inp_ATOM at,
inp_ATOM at_fixed_bonds_out,
int  num_atoms,
struct tagInchiTime ulTimeOutTime,
T_GROUP_INFO t_group_info,
INCHI_MODE inpbTautFlags,
INCHI_MODE inpbTautFlagsDone,
int  nebend,
int *  ebend 
)

Underivatization, ring-chain tautomerism, OriGAtData edits, etc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_at_type()

int mark_at_type ( inp_ATOM atom,
int  num_atoms,
int  nAtTypeTotals[] 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MarkAtomsAtTautGroups()

int MarkAtomsAtTautGroups ( BN_STRUCT pBNS,
int  num_atoms,
BN_AATG pAATG,
int  nEnd1,
int  nEnd2 
)
+ Here is the caller graph for this function:

◆ MarkNonStereoAltBns()

int MarkNonStereoAltBns ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  bUnknAltAsNoStereo 
)
+ Here is the caller graph for this function:

◆ MarkRingSystemsAltBns()

int MarkRingSystemsAltBns ( BN_STRUCT pBNS,
int  bUnknAltAsNoStereo 
)
+ Here is the caller graph for this function:

◆ nBondsValenceInpAt()

int nBondsValenceInpAt ( const inp_ATOM at,
int *  nNumAltBonds,
int *  nNumWrongBonds 
)
+ Here is the caller graph for this function:

◆ nCurFlow2Check()

int nCurFlow2Check ( BN_STRUCT pBNS,
int  iedge 
)
+ Here is the caller graph for this function:

◆ nMaxFlow2Check()

int nMaxFlow2Check ( BN_STRUCT pBNS,
int  iedge 
)
+ Here is the caller graph for this function:

◆ nMinFlow2Check()

int nMinFlow2Check ( BN_STRUCT pBNS,
int  iedge 
)
+ Here is the caller graph for this function:

◆ PullFlow()

int PullFlow ( BN_STRUCT pBNS,
Edge SwitchEdge,
Vertex  x,
Vertex  y,
int  delta,
S_CHAR  bReverse,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RegisterRadEndpoint()

int RegisterRadEndpoint ( BN_STRUCT pBNS,
BN_DATA pBD,
Vertex  u 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReInitBnData()

int ReInitBnData ( BN_DATA pBD)
+ Here is the caller graph for this function:

◆ ReInitBnStruct()

int ReInitBnStruct ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_at,
int  bRemoveGroupsFromAtoms 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReInitBnStructAddGroups()

int ReInitBnStructAddGroups ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
T_GROUP_INFO tgi,
C_GROUP_INFO cgi 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReInitBnStructAltPaths()

int ReInitBnStructAltPaths ( BN_STRUCT pBNS)
+ Here is the caller graph for this function:

◆ ReInitBnStructForAltBns()

int ReInitBnStructForAltBns ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  bUnknAltAsNoStereo 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_alt_bond_marks()

static void remove_alt_bond_marks ( inp_ATOM at,
int  num_atoms 
)
static
+ Here is the caller graph for this function:

◆ RemoveLastGroupFromBnStruct()

int RemoveLastGroupFromBnStruct ( inp_ATOM at,
int  num_atoms,
int  tg,
BN_STRUCT pBNS 
)
+ Here is the caller graph for this function:

◆ RemoveNPProtonsAndAcidCharges()

int RemoveNPProtonsAndAcidCharges ( struct tagCANON_GLOBALS pCG,
inp_ATOM at,
int  num_atoms,
BN_AATG pAATG,
BN_STRUCT pBNS,
BN_DATA pBD 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RemoveRadEndpoints()

int RemoveRadEndpoints ( BN_STRUCT pBNS,
BN_DATA pBD,
inp_ATOM at 
)
+ Here is the caller graph for this function:

◆ rescap()

int rescap ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v,
EdgeIndex  iuv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rescap_mark()

int rescap_mark ( BN_STRUCT pBNS,
Vertex  u,
Vertex  v,
EdgeIndex  iuv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RestoreBnStructFlow()

int RestoreBnStructFlow ( BN_STRUCT pBNS,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RestoreEdgeFlow()

int RestoreEdgeFlow ( BNS_EDGE edge,
int  delta,
int  bChangeFlow 
)
+ Here is the caller graph for this function:

◆ RestoreRadicalsOnly()

int RestoreRadicalsOnly ( BN_STRUCT pBNS,
BN_DATA pBD,
inp_ATOM at 
)
+ Here is the caller graph for this function:

◆ RunBalancedNetworkSearch()

int RunBalancedNetworkSearch ( BN_STRUCT pBNS,
BN_DATA pBD,
int  bChangeFlow 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetAtomBondType()

int SetAtomBondType ( BNS_EDGE edge,
U_CHAR bond_type12,
U_CHAR bond_type21,
int  delta,
int  bChangeFlow 
)
+ Here is the caller graph for this function:

◆ SetAtomRadAndChemValFromVertexCapFlow()

int SetAtomRadAndChemValFromVertexCapFlow ( BN_STRUCT pBNS,
inp_ATOM atom,
int  v1 
)
+ Here is the caller graph for this function:

◆ SetBondsFromBnStructFlow()

int SetBondsFromBnStructFlow ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  bChangeFlow0 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetForbiddenEdges()

int SetForbiddenEdges ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  forbidden_mask,
int  nebend,
int *  ebend 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetInitCapFlowToCurrent()

int SetInitCapFlowToCurrent ( BN_STRUCT pBNS)
+ Here is the caller graph for this function:

◆ SetRadEndpoints()

int SetRadEndpoints ( BN_STRUCT pBNS,
BN_DATA pBD,
BRS_MODE  bRadSrchMode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetRadEndpoints2()

int SetRadEndpoints2 ( CANON_GLOBALS pCG,
BN_STRUCT pBNS,
BN_DATA pBD,
BRS_MODE  bRadSrchMode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SimpleAddAcidicProtons()

int SimpleAddAcidicProtons ( inp_ATOM at,
int  num_atoms,
BN_AATG pAATG,
int  num2add 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SimpleRemoveAcidicProtons()

int SimpleRemoveAcidicProtons ( inp_ATOM at,
int  num_atoms,
BN_AATG pAATG,
int  num2remove 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SimpleRemoveHplusNPO()

int SimpleRemoveHplusNPO ( inp_ATOM at,
int  num_atoms,
int  nAtTypeTotals[],
T_GROUP_INFO t_group_info 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SubtractOrChangeAtHChargeBNS()

int SubtractOrChangeAtHChargeBNS ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms,
int  nAtTypeTotals[],
S_CHAR mark,
T_GROUP_INFO t_group_info,
int  bSubtract 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TempFix_NH_NH_Bonds()

int TempFix_NH_NH_Bonds ( BN_STRUCT pBNS,
inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ update_some_attype_totals()

void update_some_attype_totals ( int  nAtTypeTotals[],
int  mask,
int  delta,
S_CHAR  at_charge 
)

Variable Documentation

◆ AaTypMask

int AaTypMask[]
Initial value:
=
{
0,
0
}
#define AA_SIMPLE_TYP1
Definition ichi_bns.c:204
#define AA_SIMPLE_MSK2
Definition ichi_bns.c:206
#define AA_SIMPLE_TYP4
Definition ichi_bns.c:217
#define AA_SIMPLE_MSK3
Definition ichi_bns.c:209
#define AA_SIMPLE_MSK4
Definition ichi_bns.c:216
#define AA_SIMPLE_TYP2
Definition ichi_bns.c:207
#define AA_SIMPLE_TYP3
Definition ichi_bns.c:210
#define AA_SIMPLE_MSK1
Definition ichi_bns.c:203

◆ ArTypMask

int ArTypMask[]
Initial value:
=
{
0,
0
}
#define AR_SIMPLE_TYP3
Definition ichi_bns.c:197
#define AR_SIMPLE_MSK2
Definition ichi_bns.c:193
#define AR_SIMPLE_TYP1
Definition ichi_bns.c:191
#define AR_SIMPLE_MSK3
Definition ichi_bns.c:196
#define AR_SIMPLE_TYP2
Definition ichi_bns.c:194
#define AR_SIMPLE_MSK1
Definition ichi_bns.c:190