rino 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +44 -0
- data/Rakefile +123 -0
- data/ext/extconf.rb +26 -0
- data/ext/ruby_inchi_main.so +0 -0
- data/ext/src/aux2atom.h +2786 -0
- data/ext/src/comdef.h +148 -0
- data/ext/src/e_0dstereo.c +3014 -0
- data/ext/src/e_0dstereo.h +31 -0
- data/ext/src/e_comdef.h +57 -0
- data/ext/src/e_ctl_data.h +147 -0
- data/ext/src/e_ichi_io.c +498 -0
- data/ext/src/e_ichi_io.h +40 -0
- data/ext/src/e_ichi_parms.c +37 -0
- data/ext/src/e_ichi_parms.h +41 -0
- data/ext/src/e_ichicomp.h +50 -0
- data/ext/src/e_ichierr.h +40 -0
- data/ext/src/e_ichimain.c +593 -0
- data/ext/src/e_ichisize.h +43 -0
- data/ext/src/e_inchi_atom.c +75 -0
- data/ext/src/e_inchi_atom.h +33 -0
- data/ext/src/e_inpdef.h +41 -0
- data/ext/src/e_mode.h +706 -0
- data/ext/src/e_mol2atom.c +649 -0
- data/ext/src/e_readinch.c +58 -0
- data/ext/src/e_readmol.c +54 -0
- data/ext/src/e_readmol.h +180 -0
- data/ext/src/e_readstru.c +251 -0
- data/ext/src/e_readstru.h +33 -0
- data/ext/src/e_util.c +284 -0
- data/ext/src/e_util.h +61 -0
- data/ext/src/extr_ct.h +251 -0
- data/ext/src/ichi.h +206 -0
- data/ext/src/ichi_bns.c +7999 -0
- data/ext/src/ichi_bns.h +231 -0
- data/ext/src/ichican2.c +5000 -0
- data/ext/src/ichicano.c +2195 -0
- data/ext/src/ichicano.h +49 -0
- data/ext/src/ichicans.c +1625 -0
- data/ext/src/ichicant.h +379 -0
- data/ext/src/ichicomn.h +260 -0
- data/ext/src/ichicomp.h +50 -0
- data/ext/src/ichidrp.h +119 -0
- data/ext/src/ichierr.h +124 -0
- data/ext/src/ichiisot.c +101 -0
- data/ext/src/ichilnct.c +286 -0
- data/ext/src/ichimain.h +132 -0
- data/ext/src/ichimak2.c +1189 -0
- data/ext/src/ichimake.c +3812 -0
- data/ext/src/ichimake.h +205 -0
- data/ext/src/ichimap1.c +851 -0
- data/ext/src/ichimap2.c +2856 -0
- data/ext/src/ichimap4.c +1609 -0
- data/ext/src/ichinorm.c +741 -0
- data/ext/src/ichinorm.h +67 -0
- data/ext/src/ichiparm.c +45 -0
- data/ext/src/ichiparm.h +1441 -0
- data/ext/src/ichiprt1.c +3612 -0
- data/ext/src/ichiprt2.c +1511 -0
- data/ext/src/ichiprt3.c +3011 -0
- data/ext/src/ichiqueu.c +1003 -0
- data/ext/src/ichiring.c +326 -0
- data/ext/src/ichiring.h +49 -0
- data/ext/src/ichisize.h +35 -0
- data/ext/src/ichisort.c +539 -0
- data/ext/src/ichister.c +3538 -0
- data/ext/src/ichister.h +35 -0
- data/ext/src/ichitaut.c +3843 -0
- data/ext/src/ichitaut.h +387 -0
- data/ext/src/ichitime.h +74 -0
- data/ext/src/inchi_api.h +670 -0
- data/ext/src/inchi_dll.c +1480 -0
- data/ext/src/inchi_dll.h +34 -0
- data/ext/src/inchi_dll_main.c +23 -0
- data/ext/src/inchi_dll_main.h +31 -0
- data/ext/src/inpdef.h +328 -0
- data/ext/src/lreadmol.h +1246 -0
- data/ext/src/mode.h +706 -0
- data/ext/src/ruby_inchi_main.c +558 -0
- data/ext/src/runichi.c +4179 -0
- data/ext/src/strutil.c +3861 -0
- data/ext/src/strutil.h +182 -0
- data/ext/src/util.c +1130 -0
- data/ext/src/util.h +85 -0
- data/lib/clean_tempfile.rb +220 -0
- data/lib/rino.rb +111 -0
- data/test/test.rb +386 -0
- metadata +130 -0
data/ext/src/inchi_dll.h
ADDED
@@ -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__ */
|