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)
 Gets the number of bond valences.
 
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 
)

Gets the number of bond valences.

Parameters
atPointer to atom list
nNumAltBondsPointer to the number of alternative bonds (4)
nNumWrongBondsPointer to the number of wrong bonds
Returns
int The number of bond valences
+ 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