53#define tsort insertions_sort
64#ifndef COMPILE_ALL_CPP
91 int comp_AT_RANK(
const void* a1,
const void* a2,
void * );
92 int CompRank(
const void* a1,
const void* a2,
void *p );
93 int CompRanksOrd(
const void* a1,
const void* a2,
void *p );
105 int*
iisort(
int *list,
int num );
123 AT_RANK *nAtomNumber,
int bUseAltSort,
int( *comp )(
const void *,
const void *,
void * ) );
132 AT_RANK *nAtomNumber,
long *lNumIter,
int bUseAltSort );
136 AT_RANK *nAtomNumber,
long *lNumIter );
142 AT_RANK *nAtomNumber,
long *lNumIter,
int bUseAltSort );
157 int nNumMappedRanks,
int *pnNewNumMappedRanks,
170 int vABParityUnknown );
177 const AT_RANK *nCanonRankFrom,
const AT_RANK *nAtomNumberCanonFrom,
180 AT_RANK *nTempRank,
int nNumMappedRanksInput,
183 int vABParityUnknown );
186 sp_ATOM *at,
int num_atoms,
int num_at_tg,
int num_max,
189 AT_RANK *nTempRank,
int nNumMappedRanksInput,
192 int vABParityUnknown );
220 int *bFirstTime,
S_CHAR *bAtomUsedForStereo,
222 const AT_RANK *nCanonRankFrom,
const AT_RANK *nAtomNumberCanonFrom,
223 const sp_ATOM *at,
int num_atoms,
int bAllene );
229 S_CHAR *bAtomUsedForStereo,
232 const AT_RANK *nAtomNumberCanonFrom,
236 int nNumBest,
int nNumWorse,
int nNumUnkn,
int nNumUndf,
int nNumCalc,
237 int vABParityUnknown );
241 const AT_RANK *nAtomNumberCanonFrom,
246 const AT_RANK *nAtomNumberCanonFrom,
256 AT_STEREO_DBLE *LinearCTStereoDble2,
int nLenLinearCTStereoDble2 );
258 AT_STEREO_CARB *LinearCTStereoCarb2,
int nLenLinearCTStereoCarb2 );
262 AT_STEREO_CARB *LinearCTStereoCarb2,
int nLenLinearCTStereoCarb2 );
267 ,
AT_STEREO_CARB *LinearCTStereoCarb,
int *nStereoCarbLen,
int nMaxStereoCarbLen
268 ,
AT_STEREO_DBLE *LinearCTStereoDble,
int *nStereoDbleLen,
int nMaxStereoDbleLen
285#ifndef COMPILE_ALL_CPP
long AT_ISO_SORT_KEY
Definition extr_ct.h:69
AT_RANK * NEIGH_LIST
Definition ichicant.h:74
int CompareNeighListLex(NEIGH_LIST pp1, NEIGH_LIST pp2, const AT_RANK *nRank)
Definition ichisort.c:560
void CurTreeKeepLastAtomsOnly(CUR_TREE *cur_tree, int tpos, int shift)
Definition ichimap1.c:960
int CurTreeAlloc(CUR_TREE *cur_tree, int num_atoms)
Definition ichimap1.c:823
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:308
int nJoin2Mcrs(AT_RANK *nEqArray, AT_RANK n1, AT_RANK n2)
Definition ichimap1.c:366
int CompRanksInvOrd(const void *a1, const void *a2, void *)
Definition ichisort.c:670
int set_atom_iso_sort_keys(int num_at, sp_ATOM *at, T_GROUP_INFO *t_group_info, int *bHasIsotopicInTautomerGroups)
Definition ichiisot.c:67
int CurTreeRemoveIfLastAtom(CUR_TREE *cur_tree, int at_no)
Definition ichimap1.c:993
int CompareLinCtStereoCarb(AT_STEREO_CARB *LinearCTStereoCarb1, int nLenLinearCTStereoCarb1, AT_STEREO_CARB *LinearCTStereoCarb2, int nLenLinearCTStereoCarb2)
Definition ichimap1.c:223
int CompareLinCtStereoAtomToValues(AT_STEREO_CARB *LinearCTStereoCarb, AT_RANK at_rank_canon1, U_CHAR parity)
Definition ichimap1.c:287
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:518
int insertions_sort_NeighList_AT_NUMBERS3(NEIGH_LIST base, AT_RANK *nRank)
Definition ichisort.c:396
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:561
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:262
int CurTreeIsLastRank(CUR_TREE *cur_tree, AT_NUMB rank)
Definition ichimap1.c:902
int CompNeighListRanksOrd(const void *a1, const void *a2, void *p)
Definition ichisort.c:657
int compare_NeighLists(const NEIGH_LIST *op1, const NEIGH_LIST *op2, void *p)
Definition ichisort.c:607
NEIGH_LIST * CreateNeighListFromLinearCT(AT_NUMB *LinearCT, int nLenCT, int num_atoms)
Definition ichisort.c:701
struct tagEquNeigh EQ_NEIGH
void SetCtToIsotopicStereo(CANON_STAT *pCS, CANON_STAT *pCS2)
Definition ichicans.c:729
AT_RANK nGetMcr(AT_RANK *nEqArray, AT_RANK n)
Definition ichimap1.c:336
int GetStereoBondParity(sp_ATOM *at, int i, int n, AT_RANK *nRank)
Definition ichicans.c:2219
void FreeNeighList(NEIGH_LIST *pp)
Definition ichisort.c:941
int bUniqueAtNbrFromMappingRank(AT_RANK **pRankStack, AT_RANK nAtRank, AT_NUMB *nAtNumber)
Definition ichimap1.c:316
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:3672
int CurTreeIsLastAtomEqu(CUR_TREE *cur_tree, int at_no, AT_NUMB *nSymmStereo)
Definition ichimap1.c:1054
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:199
int ClearPreviousMappings(AT_RANK **pRankStack1)
Definition ichimap2.c:1334
int CurTreeAddRank(CUR_TREE *cur_tree, AT_NUMB rank)
Definition ichimap1.c:881
int InvertStereo(sp_ATOM *at, int num_at_tg, AT_RANK *nCanonRank, AT_RANK *nAtomNumberCanon, CANON_STAT *pCS, int bInvertLinearCTStereo)
Definition ichicans.c:2016
int CompRank(const void *a1, const void *a2, void *p)
Definition ichisort.c:475
void CurTreeFree(CUR_TREE *cur_tree)
Definition ichimap1.c:871
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:956
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:958
int might_change_other_atom_parity(sp_ATOM *at, int num_atoms, int at_no, AT_RANK *nRank2, AT_RANK *nRank1)
Definition ichimap2.c:1461
int HalfStereoBondParity(sp_ATOM *at, int at_no1, int i_sb_neigh, const AT_RANK *nRank)
Definition ichimap2.c:802
int RemoveOneStereoCenter(sp_ATOM *at, int jc)
Definition ichicans.c:300
void switch_ptrs(AT_RANK **p1, AT_RANK **p2)
Definition ichimap2.c:230
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:393
int CurTreeSetPos(CUR_TREE *cur_tree, int len)
Definition ichimap1.c:1023
int CompRanksOrd(const void *a1, const void *a2, void *p)
Definition ichisort.c:486
int * iisort(int *list, int num)
Definition ichisort.c:1014
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:518
void SwitchAtomStereoAndIsotopicStereo(sp_ATOM *at, int num_atoms, int *bSwitched)
Definition ichicans.c:705
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:766
int CurTreeRemoveLastRank(CUR_TREE *cur_tree)
Definition ichimap1.c:1036
int SetNewRanksFromNeighLists3(CANON_GLOBALS *pCG, int num_atoms, NEIGH_LIST *NeighList, AT_RANK *nRank, AT_RANK *nNewRank, AT_RANK *nAtomNumber)
Definition ichimap2.c:241
int find_atoms_with_parity(sp_ATOM *at, S_CHAR *visited, int from_atom, int cur_atom)
Definition ichicans.c:155
int CompNeighborsAT_NUMBER(const void *a1, const void *a2, void *p)
Definition ichisort.c:453
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:53
int CompAtomInvariants2Only(const void *a1, const void *a2, void *p)
Definition ichisort.c:502
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:380
int SortNeighLists2(int num_atoms, AT_RANK *nRank, NEIGH_LIST *NeighList, AT_RANK *nAtomNumber)
Definition ichimap2.c:448
int CurTreeRemoveLastAtom(CUR_TREE *cur_tree)
int SetOneStereoBondIllDefParity(sp_ATOM *at, int jc, int k, int new_parity)
Definition ichicans.c:242
void insertions_sort_NeighListBySymmAndCanonRank(NEIGH_LIST base, const AT_RANK *nSymmRank, const AT_RANK *nCanonRank)
Definition ichisort.c:421
int CompNeighborsRanksCountEql(const void *a1, const void *a2, void *p)
Definition ichisort.c:677
int CompAtomInvariants2(const void *a1, const void *a2, void *p)
Definition ichisort.c:536
AT_ISO_SORT_KEY make_iso_sort_key(int iso_atw_diff, int num_1H, int num_2H, int num_3H)
Definition ichiisot.c:47
int UnmarkNonStereo(CANON_GLOBALS *pCG, sp_ATOM *at, int num_atoms, const AT_RANK *nRank, const AT_RANK *nAtomNumber, int bIsotopic)
Definition ichicans.c:322
int GetStereoNeighborPos(sp_ATOM *at, int iAt1, int iAt2)
Definition ichicans.c:2197
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:1350
int insertions_sort_AT_RANK(AT_RANK *base, int num)
Definition ichisort.c:375
int CompNeighLists(const void *a1, const void *a2, void *p)
Definition ichisort.c:632
int CompNeighListsUpToMaxRank(const void *a1, const void *a2, void *p)
Definition ichisort.c:644
int CompareNeighListLexUpToMaxRank(NEIGH_LIST pp1, NEIGH_LIST pp2, const AT_RANK *nRank, AT_RANK nMaxAtNeighRank)
Definition ichisort.c:582
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:680
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:525
void SortNeighListsBySymmAndCanonRank(int num_atoms, NEIGH_LIST *NeighList, const AT_RANK *nSymmRank, const AT_RANK *nCanonRank)
Definition ichimap2.c:434
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:1168
int RemoveOneStereoBond(sp_ATOM *at, int jc, int k)
Definition ichicans.c:271
void insertions_sort_NeighList_AT_NUMBERS(NEIGH_LIST base, AT_RANK *nRank)
Definition ichisort.c:355
int CompChemElemLex(const void *a1, const void *a2)
Definition ichisort.c:551
void SetCtToNonIsotopicStereo(CANON_STAT *pCS, CANON_STAT *pCS2)
Definition ichicans.c:746
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:99
int CompareLinCtStereoDble(AT_STEREO_DBLE *LinearCTStereoDble1, int nLenLinearCTStereoDble1, AT_STEREO_DBLE *LinearCTStereoDble2, int nLenLinearCTStereoDble2)
Definition ichimap1.c:178
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:659
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:83
int comp_AT_RANK(const void *a1, const void *a2, void *)
Definition ichisort.c:467
int SortedEquInfoToRanks(const AT_RANK *nSymmRank, AT_RANK *nRank, const AT_RANK *nAtomNumber, int num_atoms, int *bChanged)
Definition ichimap2.c:148
int CompareLinCtStereoDoubleToValues(AT_STEREO_DBLE *LinearCTStereoDble, AT_RANK at_rank_canon1, AT_RANK at_rank_canon2, U_CHAR bond_parity)
Definition ichimap1.c:764
int CompNeighListRanks(const void *a1, const void *a2, void *p)
Definition ichisort.c:615
int CurTreeRemoveLastRankIfNoAtoms(CUR_TREE *cur_tree)
Definition ichimap1.c:920
void SetUseAtomForStereo(S_CHAR *bAtomUsedForStereo, sp_ATOM *at, int num_atoms)
Definition ichimap1.c:804
int GetStereoCenterParity(CANON_GLOBALS *pCG, sp_ATOM *at, int i, AT_RANK *nRank)
Definition ichicans.c:2340
int GetPermutationParity(CANON_GLOBALS *pCG, sp_ATOM *at, AT_RANK nAvoidNeighbor, AT_RANK *nCanonRank)
Definition ichicans.c:2296
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:602
NEIGH_LIST * CreateNeighList(int num_atoms, int num_at_tg, sp_ATOM *at, int bDoubleBondSquare, T_GROUP_INFO *t_group_info)
Definition ichisort.c:813
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:2127
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:1129
int CurTreeGetPos(CUR_TREE *cur_tree)
Definition ichimap1.c:1011
int CurTreeReplaceLastRank(CUR_TREE *cur_tree, AT_NUMB rank)
int CurTreeReAlloc(CUR_TREE *cur_tree)
Definition ichimap1.c:850
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:637
int CurTreeAddAtom(CUR_TREE *cur_tree, int at_no)
Definition ichimap1.c:935
pAT_RANK * ppAT_RANK
Definition ichisize.h:58
unsigned short AT_NUMB
Definition ichisize.h:45
unsigned short AT_RANK
Definition ichisize.h:46
signed char S_CHAR
Definition inchi_api.h:113
unsigned char U_CHAR
Definition inchi_api.h:114
Definition ichicant.h:338
Definition ichicant.h:204
Definition ichicant.h:424
AT_RANK canon_rank
Definition ichicomn.h:60
AT_RANK rank
Definition ichicomn.h:59
AT_RANK from_at
Definition ichicomn.h:58
AT_RANK to_at[4]
Definition ichicomn.h:57
int num_to
Definition ichicomn.h:56
Definition ichitaut.h:222