InChI
 
Loading...
Searching...
No Matches
extr_ct.h File Reference
#include "mode.h"
#include "ichisize.h"
#include "util.h"
+ Include dependency graph for extr_ct.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  AtData
 
struct  tagStereoCarb
 
struct  tagStereoDble
 
struct  tagIsotopicAtom
 
struct  tagAtom
 

Macros

#define NUM_CHEM_ELEMENTS   127 /* well above number of known chem. elements */
 
#define AT_ISO_SORT_KEY_MULT   32 /* up to 32 identical hydrogen isotopes */
 
#define BYTE_BITS   8 /* number of bits in one byte */
 
#define BOND_MASK   0xf /* 4 bits */
 
#define BOND_BITS   4 /* 3 or 4 does not matter; 2 is too small for BOND_TAUTOM */
 
#define BOND_ADD   (BOND_BITS==2?-1:0) /* subtract 1 from bonds stored in CT */
 
#define BOND_SINGLE   BOND_TYPE_SINGLE /* 1 */
 
#define BOND_DOUBLE   BOND_TYPE_DOUBLE /* 2 */
 
#define BOND_TRIPLE   BOND_TYPE_TRIPLE /* 3 */
 
#define BOND_ALTERN   BOND_TYPE_ALTERN /* 4 single/double */
 
#define BOND_ALT_123   5 /* single/double/triple */
 
#define BOND_ALT_13   6 /* single/triple */
 
#define BOND_ALT_23   7 /* double/triple */
 
#define BOND_TAUTOM   8
 
#define BOND_ALT12NS   9
 
#define BOND_NUMDIF   9 /* number of different kinds of bonds */
 
#define BOND_TYPE_MASK   0x0f
 
#define BOND_MARK_ALL   0xf0 /* complement to BOND_TYPE_MASK */
 
#define BOND_MARK_ALT12   0x10
 
#define BOND_MARK_ALT123   0x20
 
#define BOND_MARK_ALT13   0x30
 
#define BOND_MARK_ALT23   0x40
 
#define BOND_MARK_ALT12NS   0x50 /* 1 or 2, non-stereo */
 
#define BOND_MARK_MASK   0x70
 
#define ACTUAL_ORDER(PBNS, IAT, IBOND, BTYPE)
 
#define BITS_PARITY   0x07 /* mask to retrieve half-bond parity */
 
#define MASK_CUMULENE_LEN   0x38 /* mask to retrieve (cumulene chain length - 1)*MULT_STEREOBOND */
 
#define KNOWN_PARITIES_EQL   0x40 /* parity is same for all pairs of constit. equivalent atoms */
 
#define MAX_CUMULENE_LEN   2 /* max number of bonds in a cumulene chain - 1 */
 
#define MULT_STEREOBOND
 
#define MAKE_BITS_CUMULENE_LEN(X)   ((X)*MULT_STEREOBOND)
 
#define GET_BITS_CUMULENE_LEN(X)   ((X)&MASK_CUMULENE_LEN)
 
#define BOND_CHAIN_LEN(X)   (GET_BITS_CUMULENE_LEN(X)/MULT_STEREOBOND) /* 0 => double bond, 1 => allene, 2 => cumulene,..*/
 
#define IS_ALLENE_CHAIN(X)   ((GET_BITS_CUMULENE_LEN(X)/MULT_STEREOBOND)%2)
 
#define AB_PARITY_NONE   0 /* 0 => no parity; also parity&0x38 = 0 */
 
#define AB_PARITY_ODD   1 /* 1 => odd parity */
 
#define AB_PARITY_EVEN   2 /* 2 => even parity */
 
#define AB_PARITY_UNKN   3 /* 3 => user marked as unknown parity */
 
#define AB_PARITY_UNDF   4 /* 4 => parity cannot be defined because of symmetry or not well defined geometry */
 
#define AB_PARITY_IISO   5 /* 5 => no parity because of identical atoms */
 
#define AB_PARITY_CALC   6 /* 6 => calculate parity later */
 
#define AB_PARITY_0D   8 /* 8 => bit signifies 0D case -- not used */
 
#define AB_INV_PARITY_BITS   (AB_PARITY_ODD ^ AB_PARITY_EVEN)
 
#define AB_MAX_KNOWN_PARITY   4 /* precalculated from const. equivalence parities */
 
#define AB_MIN_KNOWN_PARITY   1
 
#define AB_MAX_PART_DEFINED_PARITY   3 /* 1, 2, 3 => defined parities, uncluding 'unknown' */
 
#define AB_MIN_PART_DEFINED_PARITY   1 /* min(AB_PARITY_ODD, AB_PARITY_EVEN, AB_PARITY_UNKN) */
 
#define AB_MAX_WELL_DEFINED_PARITY   2 /* 1, 2 => well defined parities, uncluding 'unknown' */
 
#define AB_MIN_WELL_DEFINED_PARITY   1 /* min(AB_PARITY_ODD, AB_PARITY_EVEN) */
 
#define AB_MIN_ILL_DEFINED_PARITY   3
 
#define AB_MAX_ILL_DEFINED_PARITY   4
 
#define AB_MAX_ANY_PARITY   4
 
#define AB_MIN_ANY_PARITY   1
 
#define AMBIGUOUS_STEREO   1
 
#define AMBIGUOUS_STEREO_ATOM   2
 
#define AMBIGUOUS_STEREO_BOND   4
 
#define AMBIGUOUS_STEREO_ATOM_ISO   8
 
#define AMBIGUOUS_STEREO_BOND_ISO   16
 
#define AMBIGUOUS_STEREO_ERROR   32
 
#define MIN_DOT_PROD   50 /* min value of at->stereo_bond_z_prod[i] to define parity */
 
#define ATOM_PARITY_VAL(X)   (X)
 
#define ATOM_PARITY_PART_DEF(X)   (AB_MIN_PART_DEFINED_PARITY <= (X) && (X) <= AB_MAX_PART_DEFINED_PARITY)
 
#define ATOM_PARITY_ILL_DEF(X)   (AB_MIN_ILL_DEFINED_PARITY <= (X) && (X) <= AB_MAX_ILL_DEFINED_PARITY)
 
#define ATOM_PARITY_KNOWN(X)   (AB_MIN_KNOWN_PARITY <= (X) && (X) <= AB_MAX_KNOWN_PARITY)
 
#define ATOM_PARITY_WELL_DEF(X)   (AB_MIN_WELL_DEFINED_PARITY <= (X) && (X) <= AB_MAX_WELL_DEFINED_PARITY)
 
#define ATOM_PARITY_NOT_UNKN(X)   (ATOM_PARITY_KNOWN(X) && (X) != AB_PARITY_UNKN)
 
#define PARITY_VAL(X)   ((X) & BITS_PARITY)
 
#define PARITY_PART_DEF(X)   (AB_MIN_PART_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_PART_DEFINED_PARITY)
 
#define PARITY_ILL_DEF(X)   (AB_MIN_ILL_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_ILL_DEFINED_PARITY)
 
#define PARITY_KNOWN(X)   (AB_MIN_KNOWN_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_KNOWN_PARITY)
 
#define PARITY_WELL_DEF(X)   (AB_MIN_WELL_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_WELL_DEFINED_PARITY)
 
#define PARITY_CALCULATE(X)   (AB_PARITY_CALC == PARITY_VAL(X))
 
#define BOND_PARITY_PART_DEFINED(X)   (PARITY_PART_DEF(X) || PARITY_CALCULATE(X))
 
#define BOND_PARITY_PART_KNOWN(X)   (PARITY_KNOWN(X) || PARITY_CALCULATE(X))
 
#define ALL_BUT_PARITY(X)   ((X)&~BITS_PARITY)
 
#define ALWAYS_SET_STEREO_PARITY   0
 
#define NO_ISOLATED_NON_6RING_AROM_BOND   0 /* for Yuri */
 
#define SAVE_6_AROM_CENTERS   0 /* for Yuri */
 

Typedefs

typedef long AT_ISO_SORT_KEY
 
typedef struct tagStereoCarb AT_STEREO_CARB
 
typedef struct tagStereoDble AT_STEREO_DBLE
 
typedef struct tagIsotopicAtom AT_ISOTOPIC
 
typedef AT_NUMB AT_STEREO
 
typedef struct tagAtom sp_ATOM
 

Macro Definition Documentation

◆ AB_INV_PARITY_BITS

#define AB_INV_PARITY_BITS   (AB_PARITY_ODD ^ AB_PARITY_EVEN)

◆ AB_MAX_ANY_PARITY

#define AB_MAX_ANY_PARITY   4

◆ AB_MAX_ILL_DEFINED_PARITY

#define AB_MAX_ILL_DEFINED_PARITY   4

◆ AB_MAX_KNOWN_PARITY

#define AB_MAX_KNOWN_PARITY   4 /* precalculated from const. equivalence parities */

◆ AB_MAX_PART_DEFINED_PARITY

#define AB_MAX_PART_DEFINED_PARITY   3 /* 1, 2, 3 => defined parities, uncluding 'unknown' */

◆ AB_MAX_WELL_DEFINED_PARITY

#define AB_MAX_WELL_DEFINED_PARITY   2 /* 1, 2 => well defined parities, uncluding 'unknown' */

◆ AB_MIN_ANY_PARITY

#define AB_MIN_ANY_PARITY   1

◆ AB_MIN_ILL_DEFINED_PARITY

#define AB_MIN_ILL_DEFINED_PARITY   3

◆ AB_MIN_KNOWN_PARITY

#define AB_MIN_KNOWN_PARITY   1

◆ AB_MIN_PART_DEFINED_PARITY

#define AB_MIN_PART_DEFINED_PARITY   1 /* min(AB_PARITY_ODD, AB_PARITY_EVEN, AB_PARITY_UNKN) */

◆ AB_MIN_WELL_DEFINED_PARITY

#define AB_MIN_WELL_DEFINED_PARITY   1 /* min(AB_PARITY_ODD, AB_PARITY_EVEN) */

◆ AB_PARITY_0D

#define AB_PARITY_0D   8 /* 8 => bit signifies 0D case -- not used */

◆ AB_PARITY_CALC

#define AB_PARITY_CALC   6 /* 6 => calculate parity later */

◆ AB_PARITY_EVEN

#define AB_PARITY_EVEN   2 /* 2 => even parity */

◆ AB_PARITY_IISO

#define AB_PARITY_IISO   5 /* 5 => no parity because of identical atoms */

◆ AB_PARITY_NONE

#define AB_PARITY_NONE   0 /* 0 => no parity; also parity&0x38 = 0 */

◆ AB_PARITY_ODD

#define AB_PARITY_ODD   1 /* 1 => odd parity */

◆ AB_PARITY_UNDF

#define AB_PARITY_UNDF   4 /* 4 => parity cannot be defined because of symmetry or not well defined geometry */

◆ AB_PARITY_UNKN

#define AB_PARITY_UNKN   3 /* 3 => user marked as unknown parity */

◆ ACTUAL_ORDER

#define ACTUAL_ORDER (   PBNS,
  IAT,
  IBOND,
  BTYPE 
)
Value:
( ((PBNS) && (PBNS)->edge && (PBNS)->vert &&\
((BTYPE)==BOND_ALT_123 || (BTYPE)==BOND_ALT_13 || (BTYPE)==BOND_ALT_23))? (PBNS)->edge[(PBNS)->vert[IAT].iedge[IBOND]].flow+BOND_TYPE_SINGLE:(BTYPE))
#define BOND_ALT_23
Definition extr_ct.h:219
#define BOND_ALT_13
Definition extr_ct.h:218
#define BOND_ALT_123
Definition extr_ct.h:217
#define BOND_TYPE_SINGLE
Definition incomdef.h:67

◆ ALL_BUT_PARITY

#define ALL_BUT_PARITY (   X)    ((X)&~BITS_PARITY)

◆ ALWAYS_SET_STEREO_PARITY

#define ALWAYS_SET_STEREO_PARITY   0

◆ AMBIGUOUS_STEREO

#define AMBIGUOUS_STEREO   1

◆ AMBIGUOUS_STEREO_ATOM

#define AMBIGUOUS_STEREO_ATOM   2

◆ AMBIGUOUS_STEREO_ATOM_ISO

#define AMBIGUOUS_STEREO_ATOM_ISO   8

◆ AMBIGUOUS_STEREO_BOND

#define AMBIGUOUS_STEREO_BOND   4

◆ AMBIGUOUS_STEREO_BOND_ISO

#define AMBIGUOUS_STEREO_BOND_ISO   16

◆ AMBIGUOUS_STEREO_ERROR

#define AMBIGUOUS_STEREO_ERROR   32

◆ AT_ISO_SORT_KEY_MULT

#define AT_ISO_SORT_KEY_MULT   32 /* up to 32 identical hydrogen isotopes */

◆ ATOM_PARITY_ILL_DEF

#define ATOM_PARITY_ILL_DEF (   X)    (AB_MIN_ILL_DEFINED_PARITY <= (X) && (X) <= AB_MAX_ILL_DEFINED_PARITY)

◆ ATOM_PARITY_KNOWN

#define ATOM_PARITY_KNOWN (   X)    (AB_MIN_KNOWN_PARITY <= (X) && (X) <= AB_MAX_KNOWN_PARITY)

◆ ATOM_PARITY_NOT_UNKN

#define ATOM_PARITY_NOT_UNKN (   X)    (ATOM_PARITY_KNOWN(X) && (X) != AB_PARITY_UNKN)

◆ ATOM_PARITY_PART_DEF

#define ATOM_PARITY_PART_DEF (   X)    (AB_MIN_PART_DEFINED_PARITY <= (X) && (X) <= AB_MAX_PART_DEFINED_PARITY)

◆ ATOM_PARITY_VAL

#define ATOM_PARITY_VAL (   X)    (X)

◆ ATOM_PARITY_WELL_DEF

#define ATOM_PARITY_WELL_DEF (   X)    (AB_MIN_WELL_DEFINED_PARITY <= (X) && (X) <= AB_MAX_WELL_DEFINED_PARITY)

◆ BITS_PARITY

#define BITS_PARITY   0x07 /* mask to retrieve half-bond parity */

◆ BOND_ADD

#define BOND_ADD   (BOND_BITS==2?-1:0) /* subtract 1 from bonds stored in CT */

◆ BOND_ALT12NS

#define BOND_ALT12NS   9

◆ BOND_ALT_123

#define BOND_ALT_123   5 /* single/double/triple */

◆ BOND_ALT_13

#define BOND_ALT_13   6 /* single/triple */

◆ BOND_ALT_23

#define BOND_ALT_23   7 /* double/triple */

◆ BOND_ALTERN

#define BOND_ALTERN   BOND_TYPE_ALTERN /* 4 single/double */

◆ BOND_BITS

#define BOND_BITS   4 /* 3 or 4 does not matter; 2 is too small for BOND_TAUTOM */

◆ BOND_CHAIN_LEN

#define BOND_CHAIN_LEN (   X)    (GET_BITS_CUMULENE_LEN(X)/MULT_STEREOBOND) /* 0 => double bond, 1 => allene, 2 => cumulene,..*/

◆ BOND_DOUBLE

#define BOND_DOUBLE   BOND_TYPE_DOUBLE /* 2 */

◆ BOND_MARK_ALL

#define BOND_MARK_ALL   0xf0 /* complement to BOND_TYPE_MASK */

◆ BOND_MARK_ALT12

#define BOND_MARK_ALT12   0x10

◆ BOND_MARK_ALT123

#define BOND_MARK_ALT123   0x20

◆ BOND_MARK_ALT12NS

#define BOND_MARK_ALT12NS   0x50 /* 1 or 2, non-stereo */

◆ BOND_MARK_ALT13

#define BOND_MARK_ALT13   0x30

◆ BOND_MARK_ALT23

#define BOND_MARK_ALT23   0x40

◆ BOND_MARK_MASK

#define BOND_MARK_MASK   0x70

◆ BOND_MASK

#define BOND_MASK   0xf /* 4 bits */

◆ BOND_NUMDIF

#define BOND_NUMDIF   9 /* number of different kinds of bonds */

◆ BOND_PARITY_PART_DEFINED

#define BOND_PARITY_PART_DEFINED (   X)    (PARITY_PART_DEF(X) || PARITY_CALCULATE(X))

◆ BOND_PARITY_PART_KNOWN

#define BOND_PARITY_PART_KNOWN (   X)    (PARITY_KNOWN(X) || PARITY_CALCULATE(X))

◆ BOND_SINGLE

#define BOND_SINGLE   BOND_TYPE_SINGLE /* 1 */

◆ BOND_TAUTOM

#define BOND_TAUTOM   8

◆ BOND_TRIPLE

#define BOND_TRIPLE   BOND_TYPE_TRIPLE /* 3 */

◆ BOND_TYPE_MASK

#define BOND_TYPE_MASK   0x0f

◆ BYTE_BITS

#define BYTE_BITS   8 /* number of bits in one byte */

◆ GET_BITS_CUMULENE_LEN

#define GET_BITS_CUMULENE_LEN (   X)    ((X)&MASK_CUMULENE_LEN)

◆ IS_ALLENE_CHAIN

#define IS_ALLENE_CHAIN (   X)    ((GET_BITS_CUMULENE_LEN(X)/MULT_STEREOBOND)%2)

◆ KNOWN_PARITIES_EQL

#define KNOWN_PARITIES_EQL   0x40 /* parity is same for all pairs of constit. equivalent atoms */

◆ MAKE_BITS_CUMULENE_LEN

#define MAKE_BITS_CUMULENE_LEN (   X)    ((X)*MULT_STEREOBOND)

◆ MASK_CUMULENE_LEN

#define MASK_CUMULENE_LEN   0x38 /* mask to retrieve (cumulene chain length - 1)*MULT_STEREOBOND */

◆ MAX_CUMULENE_LEN

#define MAX_CUMULENE_LEN   2 /* max number of bonds in a cumulene chain - 1 */

◆ MIN_DOT_PROD

#define MIN_DOT_PROD   50 /* min value of at->stereo_bond_z_prod[i] to define parity */

◆ MULT_STEREOBOND

#define MULT_STEREOBOND
Value:
0x08 /* multiplier for cumulene chain length
odd length => chiral, even length => stereogenic bond */

◆ NO_ISOLATED_NON_6RING_AROM_BOND

#define NO_ISOLATED_NON_6RING_AROM_BOND   0 /* for Yuri */

◆ NUM_CHEM_ELEMENTS

#define NUM_CHEM_ELEMENTS   127 /* well above number of known chem. elements */

◆ PARITY_CALCULATE

#define PARITY_CALCULATE (   X)    (AB_PARITY_CALC == PARITY_VAL(X))

◆ PARITY_ILL_DEF

#define PARITY_ILL_DEF (   X)    (AB_MIN_ILL_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_ILL_DEFINED_PARITY)

◆ PARITY_KNOWN

#define PARITY_KNOWN (   X)    (AB_MIN_KNOWN_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_KNOWN_PARITY)

◆ PARITY_PART_DEF

#define PARITY_PART_DEF (   X)    (AB_MIN_PART_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_PART_DEFINED_PARITY)

◆ PARITY_VAL

#define PARITY_VAL (   X)    ((X) & BITS_PARITY)

◆ PARITY_WELL_DEF

#define PARITY_WELL_DEF (   X)    (AB_MIN_WELL_DEFINED_PARITY <= PARITY_VAL(X) && PARITY_VAL(X) <= AB_MAX_WELL_DEFINED_PARITY)

◆ SAVE_6_AROM_CENTERS

#define SAVE_6_AROM_CENTERS   0 /* for Yuri */

Typedef Documentation

◆ AT_ISO_SORT_KEY

typedef long AT_ISO_SORT_KEY

◆ AT_ISOTOPIC

typedef struct tagIsotopicAtom AT_ISOTOPIC

◆ AT_STEREO

typedef AT_NUMB AT_STEREO

◆ AT_STEREO_CARB

typedef struct tagStereoCarb AT_STEREO_CARB

◆ AT_STEREO_DBLE

typedef struct tagStereoDble AT_STEREO_DBLE

◆ sp_ATOM

typedef struct tagAtom sp_ATOM