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