/*
* International Union of Pure and Applied Chemistry (IUPAC)
* International Chemical Identifier (InChI)
* Version 1
* Software version 1.01
* July 21, 2006
* Developed at NIST
*/
#ifndef __UTIL_H__
#define __UTIL_H__
#include "inpdef.h"
/* BILLY 8/6/04 */
#ifndef INCHI_ALL_CPP
#ifdef __cplusplus
extern "C" {
#endif
#endif
int get_atw(const char *elname);
int get_atw_from_elnum( int nAtNum );
int get_num_H (const char* elname, int inp_num_H, S_CHAR num_iso_H[], int charge, int radical,
int chem_bonds_valence, int atom_input_valence, int bAliased, int bDoNotAddH, int bHasMetalNeighbor );
int extract_ChargeRadical( char *elname, int *pnRadical, int *pnCharge );
int extract_H_atoms( char *elname, S_CHAR num_iso_H[] );
int normalize_name( char* name );
int mystrncpy(char *target,const char *source,unsigned maxlen);
char* LtrimRtrim( char *p, int* nLen );
char* fgets_up_to_lf( char* line, int line_len, FILE* inp );
void remove_trailing_spaces( char* p );
void remove_one_lf( char* p);
void mystrrev( char *p );
#ifndef INCHI_LIBRARY
int my_fgets( char *szLine, int len, FILE *f, int *bTooLongLine );
int my_fgetsTab( char *szLine, int len, FILE *f, int *bTooLongLine );
int my_fgetsTab1( char *szLine, int len, FILE *f, int *bTooLongLine );
#endif
int my_fgetsUpToLfOrTab( char *szLine, int len, FILE *f );
#define ALPHA_BASE 27
long inchi_strtol( const char *str, const char **p, int base);
double inchi_strtod( const char *str, const char **p );
AT_NUMB *is_in_the_list( AT_NUMB *pathAtom, AT_NUMB nNextAtom, int nPathLen );
int get_periodic_table_number( const char* elname );
int is_el_a_metal( int nPeriodicNum );
int get_el_valence( int nPeriodicNum, int charge, int val_num );
int get_unusual_el_valence( int nPeriodicNum, int charge, int radical, int bonds_valence, int num_H, int num_bonds );
int detect_unusual_el_valence( int nPeriodicNum, int charge, int radical, int bonds_valence, int num_H, int num_bonds );
int needed_unusual_el_valence( int nPeriodicNum, int charge, int radical, int bonds_valence,
int actual_bonds_val, int num_H, int num_bonds );
int get_el_type( int nPeriodicNum );
int get_el_number( const char* elname );
int do_not_add_H( int nPeriodicNum );
int GetElementFormulaFromAtNum(int nAtNum, char *szElement );
int MakeRemovedProtonsString( int nNumRemovedProtons, NUM_H *nNumExchgIsotopicH, NUM_H *nNumRemovedProtonsIsotopic,
int bIsotopic, char *szRemovedProtons, int *num_removed_iso_H );
/* ion pairs and fixing bonds */
int num_of_H( inp_ATOM *at, int iat );
int has_other_ion_neigh( inp_ATOM *at, int iat, int iat_ion_neigh, const char *el, int el_len );
int has_other_ion_in_sphere_2(inp_ATOM *at, int iat, int iat_ion_neigh, const char *el, int el_len );
int nNoMetalNumBonds( inp_ATOM *at, int at_no );
int nNoMetalBondsValence( inp_ATOM *at, int at_no );
int nNoMetalNeighIndex( inp_ATOM *at, int at_no );
int nNoMetalOtherNeighIndex( inp_ATOM *at, int at_no, int cur_neigh );
int nNoMetalOtherNeighIndex2( inp_ATOM *at, int at_no, int cur_neigh, int cur_neigh2 );
/* mol2atom.c */
int nBondsValToMetal( inp_ATOM* at, int iat );
/* ichi_bns.c */
int nBondsValenceInpAt( const inp_ATOM *at, int *nNumAltBonds, int *nNumWrongBonds );
int bHeteroAtomMayHaveXchgIsoH( inp_ATOM *atom, int iat );
/* IChICan2.c */
int SetBitFree( void );
void WriteCoord( char *str, double x );
extern int ERR_ELEM;
extern int nElDataLen;
/* BILLY 8/6/04 */
#ifndef INCHI_ALL_CPP
#ifdef __cplusplus
}
#endif
#endif
#endif /* __UTIL_H__*/
syntax highlighted by Code2HTML, v. 0.9.1