18#define tsort insertions_sort
29#ifndef COMPILE_ALL_CPP
56 int comp_AT_RANK(
const void* a1,
const void* a2,
void * );
57 int CompRank(
const void* a1,
const void* a2,
void *p );
58 int CompRanksOrd(
const void* a1,
const void* a2,
void *p );
70 int*
iisort(
int *list,
int num );
88 AT_RANK *nAtomNumber,
int bUseAltSort,
int( *comp )(
const void *,
const void *,
void * ) );
97 AT_RANK *nAtomNumber,
long *lNumIter,
int bUseAltSort );
101 AT_RANK *nAtomNumber,
long *lNumIter );
107 AT_RANK *nAtomNumber,
long *lNumIter,
int bUseAltSort );
122 int nNumMappedRanks,
int *pnNewNumMappedRanks,
135 int vABParityUnknown );
142 const AT_RANK *nCanonRankFrom,
const AT_RANK *nAtomNumberCanonFrom,
145 AT_RANK *nTempRank,
int nNumMappedRanksInput,
148 int vABParityUnknown );
151 sp_ATOM *at,
int num_atoms,
int num_at_tg,
int num_max,
154 AT_RANK *nTempRank,
int nNumMappedRanksInput,
157 int vABParityUnknown );
185 int *bFirstTime,
S_CHAR *bAtomUsedForStereo,
187 const AT_RANK *nCanonRankFrom,
const AT_RANK *nAtomNumberCanonFrom,
188 const sp_ATOM *at,
int num_atoms,
int bAllene );
194 S_CHAR *bAtomUsedForStereo,
197 const AT_RANK *nAtomNumberCanonFrom,
201 int nNumBest,
int nNumWorse,
int nNumUnkn,
int nNumUndf,
int nNumCalc,
202 int vABParityUnknown );
206 const AT_RANK *nAtomNumberCanonFrom,
211 const AT_RANK *nAtomNumberCanonFrom,
221 AT_STEREO_DBLE *LinearCTStereoDble2,
int nLenLinearCTStereoDble2 );
223 AT_STEREO_CARB *LinearCTStereoCarb2,
int nLenLinearCTStereoCarb2 );
227 AT_STEREO_CARB *LinearCTStereoCarb2,
int nLenLinearCTStereoCarb2 );
232 ,
AT_STEREO_CARB *LinearCTStereoCarb,
int *nStereoCarbLen,
int nMaxStereoCarbLen
233 ,
AT_STEREO_DBLE *LinearCTStereoDble,
int *nStereoDbleLen,
int nMaxStereoDbleLen
250#ifndef COMPILE_ALL_CPP
long AT_ISO_SORT_KEY
Definition extr_ct.h:34
AT_RANK * NEIGH_LIST
Definition ichicant.h:39
int CompareNeighListLex(NEIGH_LIST pp1, NEIGH_LIST pp2, const AT_RANK *nRank)
Definition ichisort.c:525
void CurTreeKeepLastAtomsOnly(CUR_TREE *cur_tree, int tpos, int shift)
Definition ichimap1.c:925
int CurTreeAlloc(CUR_TREE *cur_tree, int num_atoms)
Definition ichimap1.c:788
int SetNewRanksFromNeighLists4(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, AT_RANK *nRank, AT_RANK *nNewRank, AT_RANK *nAtomNumber, AT_RANK nMaxAtRank)
Definition ichimap2.c:273
int nJoin2Mcrs(AT_RANK *nEqArray, AT_RANK n1, AT_RANK n2)
Definition ichimap1.c:331
int CompRanksInvOrd(const void *a1, const void *a2, void *)
Definition ichisort.c:635
int set_atom_iso_sort_keys(int num_at, sp_ATOM *at, T_GROUP_INFO *t_group_info, int *bHasIsotopicInTautomerGroups)
Definition ichiisot.c:32
int CurTreeRemoveIfLastAtom(CUR_TREE *cur_tree, int at_no)
Definition ichimap1.c:958
int CompareLinCtStereoCarb(AT_STEREO_CARB *LinearCTStereoCarb1, int nLenLinearCTStereoCarb1, AT_STEREO_CARB *LinearCTStereoCarb2, int nLenLinearCTStereoCarb2)
Definition ichimap1.c:188
int CompareLinCtStereoAtomToValues(AT_STEREO_CARB *LinearCTStereoCarb, AT_RANK at_rank_canon1, U_CHAR parity)
Definition ichimap1.c:252
int DifferentiateRanks2(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, int nNumCurrRanks, AT_RANK *pnCurrRank, AT_RANK *pnPrevRank, AT_RANK *nAtomNumber, long *lNumIter, int bUseAltSort)
Definition ichimap2.c:483
int insertions_sort_NeighList_AT_NUMBERS3(NEIGH_LIST base, AT_RANK *nRank)
Definition ichisort.c:361
int DifferentiateRanks3(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, int nNumCurrRanks, AT_RANK *pnCurrRank, AT_RANK *pnPrevRank, AT_RANK *nAtomNumber, long *lNumIter)
Definition ichimap2.c:526
int CompareLinCtStereo(AT_STEREO_DBLE *LinearCTStereoDble1, int nLenLinearCTStereoDble1, AT_STEREO_CARB *LinearCTStereoCarb1, int nLenLinearCTStereoCarb1, AT_STEREO_DBLE *LinearCTStereoDble2, int nLenLinearCTStereoDble2, AT_STEREO_CARB *LinearCTStereoCarb2, int nLenLinearCTStereoCarb2)
Definition ichimap1.c:227
int CurTreeIsLastRank(CUR_TREE *cur_tree, AT_NUMB rank)
Definition ichimap1.c:867
int CompNeighListRanksOrd(const void *a1, const void *a2, void *p)
Definition ichisort.c:622
int compare_NeighLists(const NEIGH_LIST *op1, const NEIGH_LIST *op2, void *p)
Definition ichisort.c:572
NEIGH_LIST * CreateNeighListFromLinearCT(AT_NUMB *LinearCT, int nLenCT, int num_atoms)
Definition ichisort.c:666
struct tagEquNeigh EQ_NEIGH
void SetCtToIsotopicStereo(CANON_STAT *pCS, CANON_STAT *pCS2)
Definition ichicans.c:694
AT_RANK nGetMcr(AT_RANK *nEqArray, AT_RANK n)
Definition ichimap1.c:301
int GetStereoBondParity(sp_ATOM *at, int i, int n, AT_RANK *nRank)
Definition ichicans.c:2184
void FreeNeighList(NEIGH_LIST *pp)
Definition ichisort.c:906
int bUniqueAtNbrFromMappingRank(AT_RANK **pRankStack, AT_RANK nAtRank, AT_NUMB *nAtNumber)
Definition ichimap1.c:281
int RemoveCalculatedNonStereo(CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, int num_at_tg, AT_RANK **pRankStack1, AT_RANK **pRankStack2, AT_RANK *nTempRank, NEIGH_LIST *NeighList, const AT_RANK *nSymmRank, AT_RANK *nCanonRank, AT_RANK *nAtomNumberCanon, CANON_STAT *pCS, int vABParityUnknown)
Definition ichimap2.c:3637
int CurTreeIsLastAtomEqu(CUR_TREE *cur_tree, int at_no, AT_NUMB *nSymmStereo)
Definition ichimap1.c:1019
int unpack_iso_sort_key(AT_ISO_SORT_KEY iso_sort_key, S_CHAR *num_1H, S_CHAR *num_2H, S_CHAR *num_3H, S_CHAR *iso_atw_diff)
int SortedRanksToEquInfo(AT_RANK *nSymmRank, const AT_RANK *nRank, const AT_RANK *nAtomNumber, int num_atoms)
Definition ichimap2.c:164
int ClearPreviousMappings(AT_RANK **pRankStack1)
Definition ichimap2.c:1299
int CurTreeAddRank(CUR_TREE *cur_tree, AT_NUMB rank)
Definition ichimap1.c:846
int InvertStereo(sp_ATOM *at, int num_at_tg, AT_RANK *nCanonRank, AT_RANK *nAtomNumberCanon, CANON_STAT *pCS, int bInvertLinearCTStereo)
Definition ichicans.c:1981
int CompRank(const void *a1, const void *a2, void *p)
Definition ichisort.c:440
void CurTreeFree(CUR_TREE *cur_tree)
Definition ichimap1.c:836
int BreakAllTies(CANON_GLOBALS *pCG, int num_atoms, int num_max, AT_RANK **pRankStack, NEIGH_LIST *NeighList, AT_RANK *nTempRank, CANON_STAT *pCS)
Definition ichisort.c:921
int parity_of_mapped_half_bond(int from_at, int to_at, int from_neigh, int to_neigh, sp_ATOM *at, EQ_NEIGH *pEN, const AT_RANK *nCanonRankFrom, const AT_RANK *nRankFrom, const AT_RANK *nRankTo)
Definition ichimap2.c:923
int might_change_other_atom_parity(sp_ATOM *at, int num_atoms, int at_no, AT_RANK *nRank2, AT_RANK *nRank1)
Definition ichimap2.c:1426
int HalfStereoBondParity(sp_ATOM *at, int at_no1, int i_sb_neigh, const AT_RANK *nRank)
Definition ichimap2.c:767
int RemoveOneStereoCenter(sp_ATOM *at, int jc)
Definition ichicans.c:265
void switch_ptrs(AT_RANK **p1, AT_RANK **p2)
Definition ichimap2.c:195
int All_SB_Same(AT_RANK canon_rank1, AT_RANK canon_rank2, const ppAT_RANK pRankStack1, const ppAT_RANK pRankStack2, const AT_RANK *nAtomNumberCanonFrom, sp_ATOM *at)
Definition ichimap1.c:358
int CurTreeSetPos(CUR_TREE *cur_tree, int len)
Definition ichimap1.c:988
int CompRanksOrd(const void *a1, const void *a2, void *p)
Definition ichisort.c:451
int * iisort(int *list, int num)
Definition ichisort.c:979
int Next_SB_At_CanonRanks2(AT_RANK *canon_rank1, AT_RANK *canon_rank2, AT_RANK *canon_rank1_min, AT_RANK *canon_rank2_min, int *bFirstTime, S_CHAR *bAtomUsedForStereo, const ppAT_RANK pRankStack1, const ppAT_RANK pRankStack2, const AT_RANK *nCanonRankFrom, const AT_RANK *nAtomNumberCanonFrom, const sp_ATOM *at, int num_atoms, int bAllene)
Definition ichimap1.c:483
void SwitchAtomStereoAndIsotopicStereo(sp_ATOM *at, int num_atoms, int *bSwitched)
Definition ichicans.c:670
int FillAllStereoDescriptors(CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, const AT_RANK *nCanonRank, const AT_RANK *nAtomNumberCanon, CANON_STAT *pCS)
Definition ichicans.c:731
int CurTreeRemoveLastRank(CUR_TREE *cur_tree)
Definition ichimap1.c:1001
int SetNewRanksFromNeighLists3(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, AT_RANK *nRank, AT_RANK *nNewRank, AT_RANK *nAtomNumber)
Definition ichimap2.c:206
int find_atoms_with_parity(sp_ATOM *at, S_CHAR *visited, int from_atom, int cur_atom)
Definition ichicans.c:120
int CompNeighborsAT_NUMBER(const void *a1, const void *a2, void *p)
Definition ichisort.c:418
int All_SC_Same(AT_RANK canon_rank1, const ppAT_RANK pRankStack1, const ppAT_RANK pRankStack2, const AT_RANK *nAtomNumberCanonFrom, const sp_ATOM *at)
Definition ichimap1.c:18
int CompAtomInvariants2Only(const void *a1, const void *a2, void *p)
Definition ichisort.c:467
int SetNewRanksFromNeighLists(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, AT_RANK *nRank, AT_RANK *nNewRank, AT_RANK *nAtomNumber, int bUseAltSort, int(*comp)(const void *, const void *, void *))
Definition ichimap2.c:345
int SortNeighLists2(int num_atoms, AT_RANK *nRank, NEIGH_LIST *NeighList, AT_RANK *nAtomNumber)
Definition ichimap2.c:413
int CurTreeRemoveLastAtom(CUR_TREE *cur_tree)
int SetOneStereoBondIllDefParity(sp_ATOM *at, int jc, int k, int new_parity)
Definition ichicans.c:207
void insertions_sort_NeighListBySymmAndCanonRank(NEIGH_LIST base, const AT_RANK *nSymmRank, const AT_RANK *nCanonRank)
Definition ichisort.c:386
int CompNeighborsRanksCountEql(const void *a1, const void *a2, void *p)
Definition ichisort.c:642
int CompAtomInvariants2(const void *a1, const void *a2, void *p)
Definition ichisort.c:501
AT_ISO_SORT_KEY make_iso_sort_key(int iso_atw_diff, int num_1H, int num_2H, int num_3H)
Definition ichiisot.c:12
int UnmarkNonStereo(CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, const AT_RANK *nRank, const AT_RANK *nAtomNumber, int bIsotopic)
Definition ichicans.c:287
int GetStereoNeighborPos(sp_ATOM *at, int iAt1, int iAt2)
Definition ichicans.c:2162
int map_an_atom2(CANON_GLOBALS *pCG, int num_atoms, int num_max, int at_no1, int at_no2, AT_RANK *nTempRank, int nNumMappedRanks, int *pnNewNumMappedRanks, CANON_STAT *pCS, NEIGH_LIST *NeighList, AT_RANK **pRankStack1, AT_RANK **pRankStack2, int *bAddStack)
Definition ichimap2.c:1315
int insertions_sort_AT_RANK(AT_RANK *base, int num)
Definition ichisort.c:340
int CompNeighLists(const void *a1, const void *a2, void *p)
Definition ichisort.c:597
int CompNeighListsUpToMaxRank(const void *a1, const void *a2, void *p)
Definition ichisort.c:609
int CompareNeighListLexUpToMaxRank(NEIGH_LIST pp1, NEIGH_LIST pp2, const AT_RANK *nRank, AT_RANK nMaxAtNeighRank)
Definition ichisort.c:547
int NumberOfTies(AT_RANK **pRankStack1, AT_RANK **pRankStack2, int length, int at_no1, int at_no2, AT_RANK *nNewRank, int *bAddStack, int *bMapped1)
Definition ichimap2.c:645
int CurTreeFindTheRankPos(CUR_TREE *cur_tree, AT_NUMB rank)
int FillSingleStereoDescriptors(CANON_GLOBALS *pCG, sp_ATOM *at, int i, int num_trans, const AT_RANK *nRank, AT_STEREO_CARB *LinearCTStereoCarb, int *nStereoCarbLen, int nMaxStereoCarbLen, AT_STEREO_DBLE *LinearCTStereoDble, int *nStereoDbleLen, int nMaxStereoDbleLen, int bAllene)
Definition ichicans.c:490
void SortNeighListsBySymmAndCanonRank(int num_atoms, NEIGH_LIST *NeighList, const AT_RANK *nSymmRank, const AT_RANK *nCanonRank)
Definition ichimap2.c:399
int parity_of_mapped_atom2(CANON_GLOBALS *pCG, int from_at, int to_at, const sp_ATOM *at, EQ_NEIGH *pEN, const AT_RANK *nCanonRankFrom, const AT_RANK *nRankFrom, const AT_RANK *nRankTo)
Definition ichimap2.c:1133
int RemoveOneStereoBond(sp_ATOM *at, int jc, int k)
Definition ichicans.c:236
void insertions_sort_NeighList_AT_NUMBERS(NEIGH_LIST base, AT_RANK *nRank)
Definition ichisort.c:320
int CompChemElemLex(const void *a1, const void *a2)
Definition ichisort.c:516
void SetCtToNonIsotopicStereo(CANON_STAT *pCS, CANON_STAT *pCS2)
Definition ichicans.c:711
int Next_SC_At_CanonRank2(AT_RANK *canon_rank1, AT_RANK *canon_rank1_min, int *bFirstTime, S_CHAR *bAtomUsedForStereo, const ppAT_RANK pRankStack1, const ppAT_RANK pRankStack2, const AT_RANK *nAtomNumberCanonFrom, int num_atoms)
Definition ichimap1.c:64
int CompareLinCtStereoDble(AT_STEREO_DBLE *LinearCTStereoDble1, int nLenLinearCTStereoDble1, AT_STEREO_DBLE *LinearCTStereoDble2, int nLenLinearCTStereoDble2)
Definition ichimap1.c:143
int NextStereoParity2Test(int *stereo_bond_parity, int *sb_parity_calc, int nNumBest, int nNumWorse, int nNumUnkn, int nNumUndf, int nNumCalc, int vABParityUnknown)
Definition ichimap1.c:624
int map_stereo_bonds4(struct tagINCHI_CLOCK *ic, CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, int num_at_tg, int num_max, int bAllene, const AT_RANK *nCanonRankFrom, const AT_RANK *nAtomNumberCanonFrom, AT_RANK *nCanonRankTo, const AT_RANK *nSymmRank, AT_RANK **pRankStack1, AT_RANK **pRankStack2, AT_RANK *nTempRank, int nNumMappedRanksInput, AT_RANK *nSymmStereo, NEIGH_LIST *NeighList, CANON_STAT *pCS, CUR_TREE *cur_tree, int nNumMappedBonds, int vABParityUnknown)
Definition ichimap4.c:48
int comp_AT_RANK(const void *a1, const void *a2, void *)
Definition ichisort.c:432
int SortedEquInfoToRanks(const AT_RANK *nSymmRank, AT_RANK *nRank, const AT_RANK *nAtomNumber, int num_atoms, int *bChanged)
Definition ichimap2.c:113
int CompareLinCtStereoDoubleToValues(AT_STEREO_DBLE *LinearCTStereoDble, AT_RANK at_rank_canon1, AT_RANK at_rank_canon2, U_CHAR bond_parity)
Definition ichimap1.c:729
int CompNeighListRanks(const void *a1, const void *a2, void *p)
Definition ichisort.c:580
int CurTreeRemoveLastRankIfNoAtoms(CUR_TREE *cur_tree)
Definition ichimap1.c:885
void SetUseAtomForStereo(S_CHAR *bAtomUsedForStereo, sp_ATOM *at, int num_atoms)
Definition ichimap1.c:769
int GetStereoCenterParity(CANON_GLOBALS *pCG, sp_ATOM *at, int i, AT_RANK *nRank)
Definition ichicans.c:2305
int GetPermutationParity(CANON_GLOBALS *pCG, sp_ATOM *at, AT_RANK nAvoidNeighbor, AT_RANK *nCanonRank)
Definition ichicans.c:2261
int DifferentiateRanks4(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, int nNumCurrRanks, AT_RANK *pnCurrRank, AT_RANK *pnPrevRank, AT_RANK *nAtomNumber, AT_RANK nMaxAtRank, long *lNumIter)
Definition ichimap2.c:567
NEIGH_LIST * CreateNeighList(int num_atoms, int num_at_tg, sp_ATOM *at, int bDoubleBondSquare, T_GROUP_INFO *t_group_info)
Definition ichisort.c:775
int FillOutStereoParities(sp_ATOM *at, int num_atoms, const AT_RANK *nCanonRank, const AT_RANK *nAtomNumberCanon, const AT_RANK *nRank, const AT_RANK *nAtomNumber, CANON_STAT *pCS, CANON_GLOBALS *pCG, int bIsotopic)
Definition ichicans.c:2092
int map_stereo_atoms4(struct tagINCHI_CLOCK *ic, CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, int num_at_tg, int num_max, const AT_RANK *nCanonRankFrom, const AT_RANK *nAtomNumberCanonFrom, AT_RANK *nCanonRankTo, const AT_RANK *nSymmRank, AT_RANK **pRankStack1, AT_RANK **pRankStack2, AT_RANK *nTempRank, int nNumMappedRanksInput, AT_RANK *nSymmStereo, NEIGH_LIST *NeighList, CANON_STAT *pCS, CUR_TREE *cur_tree, int nNumMappedAtoms, int vABParityUnknown)
Definition ichimap4.c:1091
int CurTreeGetPos(CUR_TREE *cur_tree)
Definition ichimap1.c:976
int CurTreeReplaceLastRank(CUR_TREE *cur_tree, AT_NUMB rank)
int CurTreeReAlloc(CUR_TREE *cur_tree)
Definition ichimap1.c:815
int DifferentiateRanksBasic(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, int nNumCurrRanks, AT_RANK *pnCurrRank, AT_RANK *pnPrevRank, AT_RANK *nAtomNumber, long *lNumIter, int bUseAltSort)
Definition ichimap2.c:602
int CurTreeAddAtom(CUR_TREE *cur_tree, int at_no)
Definition ichimap1.c:900
pAT_RANK * ppAT_RANK
Definition ichisize.h:23
unsigned short AT_NUMB
Definition ichisize.h:10
unsigned short AT_RANK
Definition ichisize.h:11
signed char S_CHAR
Definition inchi_api.h:78
unsigned char U_CHAR
Definition inchi_api.h:79
Definition ichicant.h:303
Definition ichicant.h:169
Definition ichicant.h:389
AT_RANK canon_rank
Definition ichicomn.h:25
AT_RANK rank
Definition ichicomn.h:24
AT_RANK from_at
Definition ichicomn.h:23
AT_RANK to_at[4]
Definition ichicomn.h:22
int num_to
Definition ichicomn.h:21
Definition ichitaut.h:187