rino 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. data/README +44 -0
  2. data/Rakefile +123 -0
  3. data/ext/extconf.rb +26 -0
  4. data/ext/ruby_inchi_main.so +0 -0
  5. data/ext/src/aux2atom.h +2786 -0
  6. data/ext/src/comdef.h +148 -0
  7. data/ext/src/e_0dstereo.c +3014 -0
  8. data/ext/src/e_0dstereo.h +31 -0
  9. data/ext/src/e_comdef.h +57 -0
  10. data/ext/src/e_ctl_data.h +147 -0
  11. data/ext/src/e_ichi_io.c +498 -0
  12. data/ext/src/e_ichi_io.h +40 -0
  13. data/ext/src/e_ichi_parms.c +37 -0
  14. data/ext/src/e_ichi_parms.h +41 -0
  15. data/ext/src/e_ichicomp.h +50 -0
  16. data/ext/src/e_ichierr.h +40 -0
  17. data/ext/src/e_ichimain.c +593 -0
  18. data/ext/src/e_ichisize.h +43 -0
  19. data/ext/src/e_inchi_atom.c +75 -0
  20. data/ext/src/e_inchi_atom.h +33 -0
  21. data/ext/src/e_inpdef.h +41 -0
  22. data/ext/src/e_mode.h +706 -0
  23. data/ext/src/e_mol2atom.c +649 -0
  24. data/ext/src/e_readinch.c +58 -0
  25. data/ext/src/e_readmol.c +54 -0
  26. data/ext/src/e_readmol.h +180 -0
  27. data/ext/src/e_readstru.c +251 -0
  28. data/ext/src/e_readstru.h +33 -0
  29. data/ext/src/e_util.c +284 -0
  30. data/ext/src/e_util.h +61 -0
  31. data/ext/src/extr_ct.h +251 -0
  32. data/ext/src/ichi.h +206 -0
  33. data/ext/src/ichi_bns.c +7999 -0
  34. data/ext/src/ichi_bns.h +231 -0
  35. data/ext/src/ichican2.c +5000 -0
  36. data/ext/src/ichicano.c +2195 -0
  37. data/ext/src/ichicano.h +49 -0
  38. data/ext/src/ichicans.c +1625 -0
  39. data/ext/src/ichicant.h +379 -0
  40. data/ext/src/ichicomn.h +260 -0
  41. data/ext/src/ichicomp.h +50 -0
  42. data/ext/src/ichidrp.h +119 -0
  43. data/ext/src/ichierr.h +124 -0
  44. data/ext/src/ichiisot.c +101 -0
  45. data/ext/src/ichilnct.c +286 -0
  46. data/ext/src/ichimain.h +132 -0
  47. data/ext/src/ichimak2.c +1189 -0
  48. data/ext/src/ichimake.c +3812 -0
  49. data/ext/src/ichimake.h +205 -0
  50. data/ext/src/ichimap1.c +851 -0
  51. data/ext/src/ichimap2.c +2856 -0
  52. data/ext/src/ichimap4.c +1609 -0
  53. data/ext/src/ichinorm.c +741 -0
  54. data/ext/src/ichinorm.h +67 -0
  55. data/ext/src/ichiparm.c +45 -0
  56. data/ext/src/ichiparm.h +1441 -0
  57. data/ext/src/ichiprt1.c +3612 -0
  58. data/ext/src/ichiprt2.c +1511 -0
  59. data/ext/src/ichiprt3.c +3011 -0
  60. data/ext/src/ichiqueu.c +1003 -0
  61. data/ext/src/ichiring.c +326 -0
  62. data/ext/src/ichiring.h +49 -0
  63. data/ext/src/ichisize.h +35 -0
  64. data/ext/src/ichisort.c +539 -0
  65. data/ext/src/ichister.c +3538 -0
  66. data/ext/src/ichister.h +35 -0
  67. data/ext/src/ichitaut.c +3843 -0
  68. data/ext/src/ichitaut.h +387 -0
  69. data/ext/src/ichitime.h +74 -0
  70. data/ext/src/inchi_api.h +670 -0
  71. data/ext/src/inchi_dll.c +1480 -0
  72. data/ext/src/inchi_dll.h +34 -0
  73. data/ext/src/inchi_dll_main.c +23 -0
  74. data/ext/src/inchi_dll_main.h +31 -0
  75. data/ext/src/inpdef.h +328 -0
  76. data/ext/src/lreadmol.h +1246 -0
  77. data/ext/src/mode.h +706 -0
  78. data/ext/src/ruby_inchi_main.c +558 -0
  79. data/ext/src/runichi.c +4179 -0
  80. data/ext/src/strutil.c +3861 -0
  81. data/ext/src/strutil.h +182 -0
  82. data/ext/src/util.c +1130 -0
  83. data/ext/src/util.h +85 -0
  84. data/lib/clean_tempfile.rb +220 -0
  85. data/lib/rino.rb +111 -0
  86. data/test/test.rb +386 -0
  87. metadata +130 -0
@@ -0,0 +1,34 @@
1
+ /*
2
+ * International Union of Pure and Applied Chemistry (IUPAC)
3
+ * International Chemical Identifier (InChI)
4
+ * Version 1
5
+ * Software version 1.00
6
+ * April 13, 2005
7
+ * Developed at NIST
8
+ */
9
+
10
+ #ifndef __INCHI_DLL_H__
11
+ #define __INCHI_DLL_H__
12
+
13
+
14
+ #ifndef INCHI_ALL_CPP
15
+ #ifdef __cplusplus
16
+ extern "C" {
17
+ #endif
18
+ #endif
19
+
20
+
21
+ int ExtractOneStructure( STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle,
22
+ inchi_Input *inp, INCHI_FILE *log_file, INCHI_FILE *output_file, INCHI_FILE *prb_file,
23
+ ORIG_ATOM_DATA *orig_inp_data, int *num_inp, char *pStr, int nStrLen );
24
+
25
+
26
+
27
+ #ifndef INCHI_ALL_CPP
28
+ #ifdef __cplusplus
29
+ }
30
+ #endif
31
+ #endif
32
+
33
+
34
+ #endif /* __INCHI_DLL_H__ */
@@ -0,0 +1,23 @@
1
+ /*
2
+ * International Union of Pure and Applied Chemistry (IUPAC)
3
+ * International Chemical Identifier (InChI)
4
+ * Version 1
5
+ * Software version 1.00
6
+ * April 13, 2005
7
+ * Developed at NIST
8
+ */
9
+
10
+ /* inchi_dll_main.c : Defines the entry point for the DLL application. */
11
+ #if defined(_WIN32) && defined(_USRDLL) && defined(_DEBUG)
12
+ #include "inchi_dll_main.h"
13
+ int INCHI_DLLMAIN_TYPE DllMain( HANDLE hModule,
14
+ DWORD ul_reason_for_call,
15
+ LPVOID lpReserved
16
+ )
17
+ {
18
+ return TRUE;
19
+ }
20
+ #else
21
+ int dummy_inchi_dll_main=0; /* avoid empty module to keep C compiler happy */
22
+ #endif
23
+
@@ -0,0 +1,31 @@
1
+ /*
2
+ * International Union of Pure and Applied Chemistry (IUPAC)
3
+ * International Chemical Identifier (InChI)
4
+ * Version 1
5
+ * Software version 1.00
6
+ * April 13, 2005
7
+ * Developed at NIST
8
+ */
9
+
10
+ #ifndef __INCHI_DLL_MAIN_H__
11
+ #define __INCHI_DLL_MAIN_H__
12
+
13
+ #if _MSC_VER > 1000
14
+ #pragma once
15
+ #endif /* _MSC_VER > 1000 */
16
+
17
+ #if defined(_WIN32) && defined(_MSC_VER) && defined(_USRDLL)
18
+
19
+ /*#define WIN32_LEAN_AND_MEAN */ /* Exclude rarely-used stuff from Windows headers */
20
+ #include <windows.h>
21
+
22
+ #define INCHI_DLLMAIN_TYPE APIENTRY
23
+
24
+ #else /* not a Win32 DLL under MS VC++ */
25
+
26
+ #define INCHI_DLLMAIN_TYPE
27
+
28
+ #endif
29
+
30
+
31
+ #endif /* __INCHI_DLL_MAIN_H__ */
data/ext/src/inpdef.h ADDED
@@ -0,0 +1,328 @@
1
+ /*
2
+ * International Union of Pure and Applied Chemistry (IUPAC)
3
+ * International Chemical Identifier (InChI)
4
+ * Version 1
5
+ * Software version 1.00
6
+ * April 13, 2005
7
+ * Developed at NIST
8
+ */
9
+
10
+ /* input/output format */
11
+ #ifndef __INPDEF_H__
12
+ #define __INPDEF_H__
13
+
14
+ #include "mode.h"
15
+ #include "comdef.h"
16
+ #include "ichidrp.h"
17
+
18
+
19
+ #define bDrawingLabelLeftShift endpoint /* for drawing only */
20
+ typedef S_SHORT ST_CAP_FLOW;
21
+
22
+ /* inp_ATOM::at_type */
23
+ #define ATT_NONE 0x0000
24
+ #define ATT_ACIDIC_CO 0x0001
25
+ #define ATT_ACIDIC_S 0x0002
26
+ #define ATT_OO 0x0004
27
+ #define ATT_ZOO 0x0008
28
+ #define ATT_NO 0x0010
29
+ #define ATT_N_O 0x0020
30
+ #define ATT_ATOM_N 0x0040
31
+ #define ATT_ATOM_P 0x0080
32
+ #define ATT_OTHER_NEG_O 0x0100
33
+ #define ATT_OTHER_ZO 0x0200 /* -Z=O or =Z=O */
34
+ #define ATT_OH_MINUS 0x0400 /* OH(-), O=O,S,Se,Te */
35
+ #define ATT_O_PLUS 0x0800 /* -OH2(+), =OH(+), -OH(+)-, OH3(+), =O(+)-, etc; O=O,S,Se,Te */
36
+ #define ATT_PROTON 0x1000
37
+ #define ATT_HalAnion 0x2000
38
+ #define ATT_HalAcid 0x4000
39
+
40
+ #define AT_FLAG_ISO_H_POINT 0x01 /* may have isotopic H */
41
+
42
+ #define PERIODIC_NUMBER_H 1
43
+
44
+ #ifndef NUMH
45
+ #define NUM_ISO_H(AT,N) (AT[N].num_iso_H[0]+AT[N].num_iso_H[1]+AT[N].num_iso_H[2])
46
+ #define NUMH(AT,N) (AT[N].num_H+NUM_ISO_H(AT,N))
47
+ #endif
48
+
49
+ #define FlagSC_0D 1 /* bUsed0DParity */
50
+ #define FlagSB_0D 2 /* bUsed0DParity */
51
+
52
+ #define SB_PARITY_FLAG 0x38 /* mask for disconnected metal parity if it is different */
53
+ #define SB_PARITY_SHFT 3 /* number of right shift bits to get disconnected metal parity */
54
+ #define SB_PARITY_MASK 0x07
55
+ #define SB_PARITY_1(X) (X & SB_PARITY_MASK) /* refers to connected structure */
56
+ #define SB_PARITY_2(X) (((X) >> SB_PARITY_SHFT) & SB_PARITY_MASK) /* refers to connected structure */
57
+
58
+
59
+
60
+ typedef struct tagInputAtom {
61
+ char elname[ATOM_EL_LEN]; /* chem. element name */
62
+ U_CHAR el_number; /* number of the element in the Periodic Table */
63
+ AT_NUMB neighbor[MAXVAL]; /* positions (from 0) of the neighbors in the inp_ATOM array */
64
+ AT_NUMB orig_at_number; /* original atom number */
65
+ AT_NUMB orig_compt_at_numb; /* atom number within the component before terminal H removal */
66
+ S_CHAR bond_stereo[MAXVAL]; /* 1=Up,4=Either,6=Down; this atom is at the pointing wedge,
67
+ negative => on the opposite side; 3=Either double bond */
68
+ U_CHAR bond_type[MAXVAL]; /* 1..4; 4="aromatic", should be discouraged on input */
69
+
70
+ S_CHAR valence; /* number of bonds = number of neighbors */
71
+ S_CHAR chem_bonds_valence; /* sum of bond types (type 4 needs special treatment) */
72
+ S_CHAR num_H; /* number of implicit hydrogens including D and T */
73
+ S_CHAR num_iso_H[NUM_H_ISOTOPES]; /* number of implicit 1H, 2H(D), 3H(T) < 16 */
74
+ S_CHAR iso_atw_diff; /* =0 => natural isotopic abundances */
75
+ /* >0 => (mass) - (mass of the most abundant isotope) + 1 */
76
+ /* <0 => (mass) - (mass of the most abundant isotope) */
77
+ S_CHAR charge; /* charge */
78
+ S_CHAR radical; /* RADICAL_SINGLET, RADICAL_DOUBLET, or RADICAL_TRIPLET */
79
+ S_CHAR bAmbiguousStereo;
80
+ S_CHAR cFlags; /* AT_FLAG_ISO_H_POINT */
81
+ AT_NUMB at_type; /* ATT_NONE, ATT_ACIDIC */
82
+ AT_NUMB component; /* number of the structure component > 0 */
83
+ AT_NUMB endpoint; /* id of a tautomeric group */
84
+ AT_NUMB c_point; /* id of a positive charge group */
85
+ double x;
86
+ double y;
87
+ double z;
88
+ /* cml 0D parities */
89
+ S_CHAR bUsed0DParity; /* bit=1 => stereobond; bit=2 => stereocenter */
90
+ /* cml tetrahedral parity */
91
+ S_CHAR p_parity;
92
+ AT_NUMB p_orig_at_num[MAX_NUM_STEREO_ATOM_NEIGH];
93
+ /* cml bond parities */
94
+ S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]; /* stereo bond/neighbor ordering number, starts from 0 */
95
+ /* neighbors on both sides of stereobond have same sign=> trans/T/E, diff. signs => cis/C/Z */
96
+ S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]; /* ord. num. of the neighbor adjacent to the SB; starts from 0;
97
+ -1 means removed explicit H */
98
+ /* neighbors on both sides of stereobond have same parity => trans/T/E/2, diff. parities => cis/C/Z/1 */
99
+ S_CHAR sb_parity[MAX_NUM_STEREO_BONDS];
100
+ AT_NUMB sn_orig_at_num[MAX_NUM_STEREO_BONDS]; /* orig. at number of sn_ord[] neighbors */
101
+
102
+ #if( FIND_RING_SYSTEMS == 1 )
103
+ S_CHAR bCutVertex;
104
+ AT_NUMB nRingSystem;
105
+ AT_NUMB nNumAtInRingSystem;
106
+ AT_NUMB nBlockSystem;
107
+
108
+ #if( FIND_RINS_SYSTEMS_DISTANCES == 1 )
109
+ AT_NUMB nDistanceFromTerminal; /* terminal atom or ring system has 1, next has 2, etc. */
110
+ #endif
111
+
112
+ #endif
113
+ } inp_ATOM;
114
+
115
+ typedef struct tagOrigAtom {
116
+ /* initially filled out by MolfileToOrigAtom */
117
+ /* may be changed by disconnecting salts and disconnecting metals */
118
+ inp_ATOM *at;
119
+ int num_dimensions;
120
+ int num_inp_bonds;
121
+ int num_inp_atoms;
122
+ /* may be changed by disconnecting salts and disconnecting metals */
123
+ int num_components; /* set by MarkDisconnectedComponents() and disconnecting metals */
124
+ int bDisconnectSalts; /* whether salt disconnection is possible */
125
+ int bDisconnectCoord; /* 0 if no disconnection needed else (Num Implicit H to disconnect)+1 */
126
+ #if( bRELEASE_VERSION == 0 )
127
+ int bExtract;
128
+ #endif
129
+ AT_NUMB *nCurAtLen; /* has max_num_components elements */
130
+ AT_NUMB *nOldCompNumber; /* 0 or component number in previous numbering */
131
+ int nNumEquSets; /* number of found component equivalence sets */
132
+ AT_NUMB *nEquLabels; /* num_inp_atoms elements, value>0 marks atoms in the set #value */
133
+ AT_NUMB *nSortedOrder; /* num_components elements, values = 1..num_components; only if num_components > 1 */
134
+ int bSavedInINCHI_LIB[INCHI_NUM];
135
+ int bPreprocessed[INCHI_NUM];
136
+ MOL_COORD *szCoord;
137
+ } ORIG_ATOM_DATA;
138
+
139
+ typedef struct tagOriginalStruct {
140
+ int num_atoms;
141
+ char *szAtoms;
142
+ char *szBonds;
143
+ char *szCoord;
144
+ } ORIG_STRUCT;
145
+
146
+ typedef struct tagAtomParmsForDrawing {
147
+ char at_string[ATOM_INFO_LEN];
148
+ int DrawingLabelLeftShift;
149
+ int DrawingLabelLength;
150
+ AT_NUMB nCanonNbr; /* if zero then do not use all data for the atom */
151
+ AT_NUMB nCanonEquNbr;
152
+ AT_NUMB nTautGroupCanonNbr;
153
+ AT_NUMB nTautGroupEquNbr;
154
+ S_CHAR cFlags; /* AT_FLAG_ISO_H_POINT */
155
+ #ifdef DISPLAY_DEBUG_DATA
156
+ int nDebugData;
157
+ #endif
158
+ S_CHAR cHighlightTheAtom;
159
+ S_CHAR cStereoCenterParity;
160
+ S_CHAR cStereoBondParity[MAX_STEREO_BONDS];
161
+ S_CHAR cStereoBondWarning[MAX_STEREO_BONDS];
162
+ S_CHAR cStereoBondNumber[MAX_STEREO_BONDS];
163
+ } inf_ATOM;
164
+
165
+
166
+ #define INF_STEREO_ABS 0x0001
167
+ #define INF_STEREO_REL 0x0002
168
+ #define INF_STEREO_RAC 0x0004
169
+ #define INF_STEREO_NORM 0x0008
170
+ #define INF_STEREO_INV 0x0010
171
+ #define INF_STEREO 0x0020
172
+ #define INF_STEREO_ABS_REL_RAC (INF_STEREO_ABS | INF_STEREO_REL | INF_STEREO_RAC)
173
+ #define INF_STEREO_NORM_INV (INF_STEREO_NORM | INF_STEREO_INV)
174
+
175
+ #define MAX_LEN_REMOVED_PROTONS 128
176
+
177
+ typedef struct tagInfoAtomData {
178
+ inf_ATOM *at;
179
+ int num_at;
180
+ AT_NUMB StereoFlags;
181
+ AT_NUMB num_components;
182
+ AT_NUMB *pStereoFlags;
183
+
184
+ int nNumRemovedProtons;
185
+ int num_removed_iso_H; /* number of exchangable isotopic H */
186
+ NUM_H num_iso_H[NUM_H_ISOTOPES]; /* number of exchangable isotopic H */
187
+ char szRemovedProtons[MAX_LEN_REMOVED_PROTONS];
188
+ } INF_ATOM_DATA;
189
+
190
+ typedef struct tagInputAtomData {
191
+ inp_ATOM *at;
192
+ inp_ATOM *at_fixed_bonds; /* tautomeric case, added or removed H */
193
+ int num_at;
194
+ int num_removed_H;
195
+ int num_bonds;
196
+ int num_isotopic;
197
+ int bExists;
198
+ int bDeleted;
199
+ int bHasIsotopicLayer;
200
+ int bTautomeric;
201
+ int bTautPreprocessed;
202
+ int nNumRemovedProtons;
203
+ NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]; /* isotopic composition of removed protons, not included in num_iso_H[] */
204
+ NUM_H num_iso_H[NUM_H_ISOTOPES]; /* isotopic H on tautomeric atoms and those in nIsotopicEndpointAtomNumber */
205
+ INCHI_MODE bTautFlags;
206
+ INCHI_MODE bTautFlagsDone;
207
+ INCHI_MODE bNormalizationFlags;
208
+ } INP_ATOM_DATA;
209
+ typedef INP_ATOM_DATA INP_ATOM_DATA2[TAUT_NUM];
210
+
211
+ typedef struct tagNormCanonFlags {
212
+ INCHI_MODE bTautFlags[INCHI_NUM][TAUT_NUM];
213
+ INCHI_MODE bTautFlagsDone[INCHI_NUM][TAUT_NUM];
214
+ INCHI_MODE bNormalizationFlags[INCHI_NUM][TAUT_NUM];
215
+ int nCanonFlags[INCHI_NUM][TAUT_NUM];
216
+ } NORM_CANON_FLAGS;
217
+
218
+ typedef struct tagCompositeAtomData {
219
+ inp_ATOM *at;
220
+ int num_at;
221
+ int num_removed_H;
222
+ int num_bonds;
223
+ int num_isotopic;
224
+ int bExists;
225
+ int bDeleted; /* unused */
226
+ int bHasIsotopicLayer;
227
+ int bTautomeric;
228
+ int nNumRemovedProtons;
229
+ NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]; /* isotopic composition of removed protons, not included in num_iso_H[] */
230
+ NUM_H num_iso_H[NUM_H_ISOTOPES]; /* isotopic H on tautomeric atoms and those in nIsotopicEndpointAtomNumber */
231
+
232
+ AT_NUMB *nOffsetAtAndH;
233
+ int num_components;
234
+ } COMP_ATOM_DATA;
235
+ /*
236
+ typedef COMP_ATOM_DATA COMP_ATOM_DATA3[TAUT_NUM+1];
237
+ */
238
+ #define ADD_LEN_STRUCT_FPTRS 100 /* allocation increments */
239
+ typedef long INCHI_FPTR;
240
+ typedef struct tagStructFptrs {
241
+ INCHI_FPTR *fptr; /* input: fptr[cur_fptr] = file pointer to the structure to read */
242
+ /* output: fptr[cur_fptr+1] = file pointer to the next structure or EOF */
243
+ int len_fptr; /* allocated length of fptr */
244
+ int cur_fptr; /* input: k-1 to read the kth struct, k = 1, 2, 3,...; left unchanged; struct number := cur_fptr+1 */
245
+ int max_fptr; /* length of the filled out portion of fptr */
246
+ } STRUCT_FPTRS;
247
+
248
+ #define FLAG_INP_AT_CHIRAL 1
249
+ #define FLAG_INP_AT_NONCHIRAL 2
250
+ #define FLAG_SET_INP_AT_CHIRAL 4
251
+ #define FLAG_SET_INP_AT_NONCHIRAL 8
252
+
253
+ /* BILLY 8/6/04 */
254
+ #ifndef INCHI_ALL_CPP
255
+ #ifdef __cplusplus
256
+ extern "C" {
257
+ #endif
258
+ #endif
259
+
260
+ int MolfileToInpAtom( FILE *inp_molfile, int bDoNotAddH, inp_ATOM **at, MOL_COORD **szCoord, int max_num_at,
261
+ int *num_dimensions, int *num_bonds, const char *pSdfLabel, char *pSdfValue,
262
+ long *Id, long *lMolfileNumber, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr );
263
+ int MolfileToOrigAtom( FILE *inp_molfile, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures,
264
+ int bGetOrigCoord, int bDoNotAddH,
265
+ const char *pSdfLabel, char *pSdfValue, long *lSdfId, long *lMolfileNumber,
266
+ INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr );
267
+ int INChIToOrigAtom( FILE *inp_molfile, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures,
268
+ int bGetOrigCoord, int bDoNotAddH, INPUT_TYPE nInputType,
269
+ char *pSdfLabel, char *pSdfValue, long *lSdfId,
270
+ INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr );
271
+
272
+ int MarkDisconnectedComponents( ORIG_ATOM_DATA *orig_at_data, int bProcessOldCompNumbers );
273
+ int DisconnectSalts( ORIG_ATOM_DATA *orig_inp_data, int bDisconnect );
274
+ int DisconnectMetals( ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone );
275
+ int bMayDisconnectMetals( ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone );
276
+ int bHasMetalAtom( ORIG_ATOM_DATA *orig_inp_data );
277
+ int fix_odd_things( int num_atoms, inp_ATOM *at );
278
+ int post_fix_odd_things( int num_atoms, inp_ATOM *at );
279
+ int remove_ion_pairs( int num_atoms, inp_ATOM *at );
280
+
281
+ int bFoundFeature( inp_ATOM *at, int num_atoms );
282
+ int CopyMOLfile(FILE *inp_file, long fPtrStart, long fPtrEnd, INCHI_FILE *prb_file, long nNumb);
283
+
284
+ void FreeInpAtom( inp_ATOM **at );
285
+ void FreeInfAtom( inf_ATOM **at );
286
+ void FreeOrigAtData( ORIG_ATOM_DATA *orig_at_data );
287
+ void FreeInpAtomData( INP_ATOM_DATA *inp_at_data );
288
+ void FreeCompAtomData( COMP_ATOM_DATA *inp_at_data );
289
+ void FreeInfoAtomData( INF_ATOM_DATA *inf_at_data );
290
+
291
+ inf_ATOM *CreateInfAtom( int num_atoms );
292
+ inp_ATOM *CreateInpAtom( int num_atoms );
293
+
294
+ int CreateInfoAtomData( INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components );
295
+ int AllocateInfoAtomData( INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components );
296
+ int DuplicateInfoAtomData( INF_ATOM_DATA *inf_at_data_to, const INF_ATOM_DATA *inf_at_data_from);
297
+ int CreateInpAtomData( INP_ATOM_DATA *inp_at_data, int num_atoms, int create_at_fixed_bonds );
298
+ int CreateCompAtomData( COMP_ATOM_DATA *inp_at_data, int num_atoms, int num_components, int bIntermediateTaut );
299
+ #ifndef INCHI_ANSI_ONLY
300
+ int DisplayInputStructure( char *szOutputString, inp_ATOM *at, INF_ATOM_DATA *inf_at_data, int num_at, DRAW_PARMS *dp );
301
+ #endif
302
+ void PrintFileName( const char *fmt, INCHI_FILE *output_file, const char *szFname );
303
+ void MySleep( unsigned long ms );
304
+
305
+ #ifndef __ICHITIME_H__
306
+ struct tagInchiTime;
307
+ int bInchiTimeIsOver( struct tagInchiTime *TickEnd );
308
+ #endif
309
+
310
+ int get_endpoint_valence( U_CHAR el_number );
311
+
312
+ #if( TEST_RENUMB_ATOMS == 1 ) /* { */
313
+ int CopyInpAtomData( INP_ATOM_DATA *dest_inp_at_data, INP_ATOM_DATA *src_inp_at_data );
314
+ void RenumbInpAtomData( INP_ATOM_DATA *dest_inp_at_data, INP_ATOM_DATA *src_inp_at_data, AT_RANK *new_ord );
315
+ void MakeNewOrd( int num_atoms, AT_RANK *new_ord );
316
+ #endif
317
+
318
+ int ReconcileAllCmlBondParities( inp_ATOM *at, int num_atoms, int bDisconnected );
319
+
320
+
321
+ /* BILLY 8/6/04 */
322
+ #ifndef INCHI_ALL_CPP
323
+ #ifdef __cplusplus
324
+ }
325
+ #endif
326
+ #endif
327
+
328
+ #endif /* __INPDEF_H__ */