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.
- 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__ */
|