InChI
 
Loading...
Searching...
No Matches
ichi_bns.c File Reference
#include <stdlib.h>
#include <string.h>
#include <stdint.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_STRUCT * AllocateAndInitBnStruct (inp_ATOM *at, int num_atoms, int nMaxAddAtoms, int nMaxAddEdges, int max_altp, int *pNum_changed_bonds)
 
BN_STRUCT * DeAllocateBnStruct (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_DATA * DeAllocateBnData (BN_DATA *pBD)
 
BN_DATA * AllocateAndInitBnData (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:103
#define ATBIT_OOH
Definition ichi_bns.c:100
#define ATBIT_NP_Proton
Definition ichi_bns.c:92
#define ATBIT_NP_H
Definition ichi_bns.c:93
#define ATBIT_NOH
Definition ichi_bns.c:102
#define ATBIT_ZOOH
Definition ichi_bns.c:101
#define ATBIT_ZOH
Definition ichi_bns.c:99
#define ATBIT_COH
Definition ichi_bns.c:97
#define ATBIT_CSH
Definition ichi_bns.c:98

◆ 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:110
#define ATBIT_N_O
Definition ichi_bns.c:107
#define ATBIT_NO
Definition ichi_bns.c:106
#define ATBIT_ZO
Definition ichi_bns.c:105
#define ATBIT_N_O_Minus
Definition ichi_bns.c:114
#define ATBIT_CO_Minus
Definition ichi_bns.c:108
#define ATBIT_CO
Definition ichi_bns.c:104
#define ATBIT_OO_Minus
Definition ichi_bns.c:111
#define ATBIT_CS_Minus
Definition ichi_bns.c:109
#define ATBIT_ZOO_Minus
Definition ichi_bns.c:112
#define ATBIT_NO_Minus
Definition ichi_bns.c:113

◆ 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:170
#define AA_SIMPLE_MSK2
Definition ichi_bns.c:172
#define AA_SIMPLE_TYP4
Definition ichi_bns.c:183
#define AA_SIMPLE_MSK3
Definition ichi_bns.c:175
#define AA_SIMPLE_MSK4
Definition ichi_bns.c:182
#define AA_SIMPLE_TYP2
Definition ichi_bns.c:173
#define AA_SIMPLE_TYP3
Definition ichi_bns.c:176
#define AA_SIMPLE_MSK1
Definition ichi_bns.c:169

◆ ArTypMask

int ArTypMask[]
Initial value:
=
{
0,
0
}
#define AR_SIMPLE_TYP3
Definition ichi_bns.c:163
#define AR_SIMPLE_MSK2
Definition ichi_bns.c:159
#define AR_SIMPLE_TYP1
Definition ichi_bns.c:157
#define AR_SIMPLE_MSK3
Definition ichi_bns.c:162
#define AR_SIMPLE_TYP2
Definition ichi_bns.c:160
#define AR_SIMPLE_MSK1
Definition ichi_bns.c:156