InChI
 
Loading...
Searching...
No Matches
ichimake.h
Go to the documentation of this file.
1/*
2 * International Chemical Identifier (InChI)
3 * Version 1
4 * Software version 1.07
5 * April 30, 2024
6 *
7 * MIT License
8 *
9 * Copyright (c) 2024 IUPAC and InChI Trust
10 *
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included in all
19 * copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * SOFTWARE.
28*
29* The InChI library and programs are free software developed under the
30 * auspices of the International Union of Pure and Applied Chemistry (IUPAC).
31 * Originally developed at NIST.
32 * Modifications and additions by IUPAC and the InChI Trust.
33 * Some portions of code were developed/changed by external contributors
34 * (either contractor or volunteer) which are listed in the file
35 * 'External-contributors' included in this distribution.
36 *
37 * info@inchi-trust.org
38 *
39*/
40
41
42#ifndef _ICHIMAKE_H_
43#define _ICHIMAKE_H_
44
45#include "ichisize.h"
46#include "ichi.h"
47#include "extr_ct.h"
48#include "ichicant.h"
49
50/***********************************************************************/
51/* replace all ' ' delimiters with ',' */
52#define ITEM_DELIMETER ","
53#define EXTRA_SPACE ""
54#define COMMA_EXTRA_SPACE ","
55#define LEN_EXTRA_SPACE 0
56
57/**********************************************************************************************/
58/* nCtMode for output INChI */
59
60#define CT_MODE_NO_ORPHANS 1 /* no orphans, that CT should have only atoms with neighbors */
61#define CT_MODE_ABC_NUMBERS 2
62#define CT_MODE_ATOM_COUNTS 4
63#define CT_MODE_PREDECESSORS 8
64#define CT_MODE_EQL_H_TOGETHER 16
65#define CT_MODE_ABC_NUM_CLOSURES 32 /* in CT_MODE_ABC_NUMBERS output AB1AC2AB instead of AB-AC-A-B */
66
67
68/*************** Macros for retrieving requested INChI and INChI_Aux *****************************/
69/* S->pINChI[TAUT_YES] has info: */
70#define HAS_T(S) (S->pINChI[TAUT_YES] && S->pINChI[TAUT_YES]->nNumberOfAtoms)
71/* S->pINChI[TAUT_NON] has info: */
72#define HAS_N(S) (S->pINChI[TAUT_NON] && S->pINChI[TAUT_NON]->nNumberOfAtoms)
73
74/* S->pINChI[TAUT_YES] has tautomeric info: */
75#define HAS_TT(S) (S->pINChI[TAUT_YES] && S->pINChI[TAUT_YES]->nNumberOfAtoms && S->pINChI[TAUT_YES]->lenTautomer>0)
76/* S->pINChI[TAUT_YES] has non-taitomeric info: */
77#define HAS_TN(S) (S->pINChI[TAUT_YES] && S->pINChI[TAUT_YES]->nNumberOfAtoms && !S->pINChI[TAUT_YES]->lenTautomer)
78/* S->pINChI[TAUT_NON] has non-tautomeric info: */
79#define HAS_NN(S) (S->pINChI[TAUT_NON] && S->pINChI[TAUT_NON]->nNumberOfAtoms && !S->pINChI[TAUT_NON]->lenTautomer)
80#define GET_II(M,S) ((M==OUT_N1)? (HAS_TN(S)? TAUT_YES : HAS_NN(S)? TAUT_NON : -1): \
81 (M==OUT_T1 || M==OUT_TN)? (HAS_T(S) ? TAUT_YES : HAS_N(S) ? TAUT_NON : -1): \
82 (M==OUT_NN)? (HAS_NN(S)? TAUT_NON : HAS_TN(S)? TAUT_YES : -1): \
83 (M==OUT_NT)? ((HAS_TT(S) && HAS_NN(S)) ? TAUT_NON : -1) : -1)
84
85/*********************************/
86/* Equivalence flags definitions */
87/*********************************/
88
89/* What is equal (ii = INChI_ITEM) */
90#define iiSTEREO 0x0001 /* stereo (sp2 or sp3) */
91#define iiSTEREO_INV 0x0002 /* inverted stereo (sp3) */
92#define iiNUMB 0x0004 /* numbering or inverted stereo numbering */
93#define iiEQU 0x0008 /* equivalence info */
94/* derived:
95 (iiSTEREO_INV | iiNUMB) = numbering of inverted stereo
96*/
97
98/* Additional info to what is equal (INCHI_ITEM_TYPE = iit) */
99#define iitISO 0x0010 /* Isotopic */
100#define iitNONTAUT 0x0020 /* Non-tautomeric */
101/* derived:
102 (iitISO | iitNONTAUT) = isotopic non-tautomeric
103*/
104
105/* Where is the equivalent item located (INChI_ITEM_EQUAL_TO = iiEq2) */
106#define iiEq2NONTAUT 0x0040 /* non-tautomeric */
107#define iiEq2ISO 0x0080 /* isotopic */
108#define iiEq2INV 0x0100 /* equal to inverted (stereo sp3) or to numbering of inverted stereo */
109
110#define iiEmpty 0x0200 /* item is empty while in the preceding layer the item is not empty */
111
112/*********************** Printing strings external declarations *******************************/
113
114extern const char sCompDelim[];
115
116#ifndef COMPILE_ALL_CPP
117#ifdef __cplusplus
118extern "C" {
119#endif
120#endif
121
122/**********************************************************************************************/
124 const INChI *i2 );
125const char *EquString( int EquVal );
126 int FillOutINChI( INChI *pINChI,
127 INChI_Aux *pINChI_Aux,
128 int num_atoms,
129 int num_at_tg,
130 int num_removed_H,
131 sp_ATOM *at,
132 inp_ATOM *norm_at,
133 CANON_STAT *pCS,
134 CANON_GLOBALS *pCG,
135 int bTautomeric,
136 INCHI_MODE nUserMode,
137 char *pStrErrStruct,
138 int bNoWarnings );
139 int MakeHillFormulaString( char *szHillFormula,
140 INCHI_IOS_STRING *strbuf,
141 int *bOverflow );
142 int bHasOrigInfo( ORIG_INFO *OrigInfo,
143 int num_atoms );
144 int EqlOrigInfo( INChI_Aux *a1,
145 INChI_Aux *a2 );
146 int MakeAbcNumber( char *szString,
147 int nStringLen,
148 const char *szLeadingDelim,
149 int nValue );
150 int MakeDecNumber( char *szString,
151 int nStringLen,
152 const char *szLeadingDelim,
153 int nValue );
155 AT_NUMB *LinearCT,
156 int nLenCT,
157 int bAddDelim,
158 S_CHAR *nNum_H,
159 int num_atoms,
160 INCHI_IOS_STRING *strbuf,
161 int nCtMode,
162 int *bOverflow );
163 int MakeCtStringOld( AT_NUMB *LinearCT,
164 int nLenCT,
165 int bAddDelim,
166 INCHI_IOS_STRING *strbuf,
167 int nCtMode,
168 int *bOverflow );
169 int MakeCtString( CANON_GLOBALS *pCG,
170 AT_NUMB *LinearCT,
171 int nLenCT,
172 int bAddDelim,
173 S_CHAR *nNum_H, /* not used here */
174 int num_atoms, /* not used here */
175 INCHI_IOS_STRING *strbuf,
176 int nCtMode,
177 int *bOverflow );
178 int MakeTautString( AT_NUMB *LinearCT,
179 int nLenCT,
180 int bAddDelim,
181 INCHI_IOS_STRING *strbuf,
182 int nCtMode,
183 int *bOverflow );
184 int MakeEquString( AT_NUMB *LinearCT,
185 int nLenCT,
186 int bAddDelim,
187 INCHI_IOS_STRING *strbuf,
188 int nCtMode,
189 int *bOverflow );
190 int MakeIsoAtomString( INChI_IsotopicAtom *IsotopicAtom,
191 int nNumberOfIsotopicAtoms,
192 INCHI_IOS_STRING *strbuf,
193 int nCtMode,
194 int *bOverflow );
195 int MakeIsoTautString( INChI_IsotopicTGroup *IsotopicTGroup,
196 int nNumberOfIsotopicTGroups,
197 INCHI_IOS_STRING *strbuf,
198 int nCtMode,
199 int *bOverflow );
200 int MakeIsoHString( int num_iso_H[],
201 INCHI_IOS_STRING *strbuf,
202 int nCtMode, int *bOverflow );
203 int MakeStereoString( AT_NUMB *at1,
204 AT_NUMB *at2,
205 S_CHAR *parity,
206 int bAddDelim,
207 int nLenCT,
208 INCHI_IOS_STRING *buf,
209 int nCtMode,
210 int *bOverflow );
212 INCHI_IOS_STRING *strbuf,
213 const char* conf_stereo_string,
214 int **enh_stereo,
215 int nof_stereo_groups,
216 int nCtMode,
217 int *bOverflow );
218 int MakeSlayerString( ORIG_ATOM_DATA *orig_inp_data,
219 INCHI_SORT *pINChISort,
220 INCHI_IOS_STRING *strbuf,
221 int bOutType,
222 int num_components,
223 int nCtMode,
224 int *bOverflow );
225 int MakeCRVString( ORIG_INFO *OrigInfo,
226 int nLenCT,
227 int bAddDelim,
228 INCHI_IOS_STRING *strbuf,
229 int nCtMode,
230 int *bOverflow );
231 int MakeMult( int mult,
232 const char *szTailingDelim,
233 INCHI_IOS_STRING *buf,
234 int nCtMode,
235 int *bOverflow );
236 int MakeDelim( const char *szTailingDelim,
237 INCHI_IOS_STRING *buf,
238 int *bOverflow );
239 int MakeEqStr( const char *szTailingDelim,
240 int mult,
241 INCHI_IOS_STRING *buf,
242 int *bOverflow );
243 int MakeHString( int bAddDelim,
244 S_CHAR *LinearCT,
245 int nLenCT,
246 INCHI_IOS_STRING *buf,
247 int nCtMode,
248 int *bOverflow );
250 AT_NUMB *LinearCT,
251 int nLenCT,
252 S_CHAR *nNum_H,
253 int num_atoms,
254 int nCtMode );
255 int str_HillFormula( INCHI_SORT *pINChISort,
256 INCHI_IOS_STRING *strbuf,
257 int *bOverflow,
258 int bOutType,
259 int num_components,
260 int bUseMulipliers );
261 int str_HillFormula2( INCHI_SORT *pINChISort /* non-taut */,
262 INCHI_SORT *pINChISort2 /* taut */,
263 INCHI_IOS_STRING *strbuf,
264 int *bOverflow,
265 int bOutType,
266 int num_components,
267 int bUseMulipliers );
269 INCHI_SORT *pINChISort,
270 INCHI_IOS_STRING *strbuf,
271 int *bOverflow,
272 int bOutType,
273 int ATOM_MODE,
274 int num_components,
275 int bUseMulipliers );
276 int str_H_atoms( INCHI_SORT *pINChISort,
277 INCHI_IOS_STRING *strbuf,
278 int *bOverflow,
279 int bOutType,
280 int ATOM_MODE,
281 int TAUT_MODE,
282 int num_components,
283 int bUseMulipliers );
284 int str_Charge2( INCHI_SORT *pINChISort,
285 INCHI_SORT *pINChISort2,
286 INCHI_IOS_STRING *strbuf,
287 int *bOverflow,
288 int bOutType,
289 int num_components,
290 int bSecondNonTautPass,
291 int bOmitRepetitions,
292 int bUseMulipliers );
293 int str_Sp2( INCHI_SORT *pINChISort,
294 INCHI_SORT *pINChISort2,
295 INCHI_IOS_STRING *strbuf,
296 int *bOverflow,
297 int bOutType,
298 int TAUT_MODE,
299 int num_components,
300 int bSecondNonTautPass,
301 int bOmitRepetitions,
302 int bUseMulipliers );
303 int str_IsoSp2( INCHI_SORT *pINChISort,
304 INCHI_SORT *pINChISort2,
305 INCHI_IOS_STRING *strbuf,
306 int *bOverflow,
307 int bOutType, int TAUT_MODE,
308 int num_components,
309 int bSecondNonTautPass,
310 int bOmitRepetitions,
311 int bUseMulipliers );
312 int str_Sp3( INCHI_SORT *pINChISort,
313 INCHI_SORT *pINChISort2,
314 INCHI_IOS_STRING *strbuf,
315 int *bOverflow,
316 int bOutType,
317 int TAUT_MODE,
318 int num_components,
319 int bRelRac,
320 int bSecondNonTautPass,
321 int bOmitRepetitions,
322 int bUseMulipliers );
323 int str_IsoSp3( INCHI_SORT *pINChISort,
324 INCHI_SORT *pINChISort2,
325 INCHI_IOS_STRING *strbuf,
326 int *bOverflow,
327 int bOutType,
328 int TAUT_MODE,
329 int num_components,
330 int bRelRac,
331 int bSecondNonTautPass,
332 int bOmitRepetitions,
333 int bUseMulipliers );
334 int str_StereoAbsInv( INCHI_SORT *pINChISort,
335 INCHI_IOS_STRING *strbuf,
336 int *bOverflow,
337 int bOutType,
338 int num_components );
339 int str_IsoStereoAbsInv( INCHI_SORT *pINChISort,
340 INCHI_IOS_STRING *strbuf,
341 int *bOverflow,
342 int bOutType,
343 int num_components );
344 int str_IsoAtoms( INCHI_SORT *pINChISort,
345 INCHI_SORT *pINChISort2,
346 INCHI_IOS_STRING *strbuf,
347 int *bOverflow,
348 int bOutType,
349 int TAUT_MODE,
350 int num_components,
351 int bAbcNumbers,
352 int bSecondNonTautPass,
353 int bOmitRepetitions,
354 int bUseMulipliers );
355 int str_FixedH_atoms( INCHI_SORT *pINChISort,
356 INCHI_IOS_STRING *strbuf,
357 int *bOverflow,
358 int bOutType,
359 int ATOM_MODE,
360 int num_components,
361 int bUseMulipliers );
362 int str_AuxNumb( CANON_GLOBALS *pCG,
363 INCHI_SORT *pINChISort,
364 INCHI_SORT *pINChISort2,
365 INCHI_IOS_STRING *strbuf,
366 int *bOverflow,
367 int bOutType,
368 int TAUT_MODE,
369 int num_components,
370 int bSecondNonTautPass,
371 int bOmitRepetitions );
372 int str_AuxEqu( INCHI_SORT *pINChISort,
373 INCHI_SORT *pINChISort2,
374 INCHI_IOS_STRING *strbuf,
375 int *bOverflow,
376 int bOutType,
377 int TAUT_MODE,
378 int num_components,
379 int bSecondNonTautPass,
380 int bOmitRepetitions,
381 int bUseMulipliers );
382 int str_AuxTgroupEqu( INCHI_SORT *pINChISort,
383 INCHI_IOS_STRING *strbuf,
384 int *bOverflow,
385 int bOutType,
386 int TAUT_MODE,
387 int num_components,
388 int bUseMulipliers );
389 int str_AuxIsoTgroupEqu( INCHI_SORT *pINChISort,
390 INCHI_IOS_STRING *strbuf,
391 int *bOverflow,
392 int bOutType,
393 int TAUT_MODE,
394 int num_components,
395 int bOmitRepetitions,
396 int bUseMulipliers );
397 int str_AuxInvSp3( INCHI_SORT *pINChISort,
398 INCHI_SORT *pINChISort2,
399 INCHI_IOS_STRING *strbuf,
400 int *bOverflow,
401 int bOutType,
402 int TAUT_MODE,
403 int num_components,
404 int bSecondNonTautPass,
405 int bOmitRepetitions,
406 int bUseMulipliers );
408 INCHI_SORT *pINChISort,
409 INCHI_SORT *pINChISort2,
410 INCHI_IOS_STRING *strbuf,
411 int *bOverflow,
412 int bOutType,
413 int TAUT_MODE,
414 int num_components,
415 int bSecondNonTautPass,
416 int bOmitRepetitions );
418 INCHI_SORT *pINChISort,
419 INCHI_SORT *pINChISort2,
420 INCHI_IOS_STRING *strbuf,
421 int *bOverflow,
422 int bOutType,
423 int TAUT_MODE,
424 int num_components,
425 int bSecondNonTautPass,
426 int bOmitRepetitions );
427 int str_AuxIsoEqu( INCHI_SORT *pINChISort,
428 INCHI_SORT *pINChISort2,
429 INCHI_IOS_STRING *strbuf,
430 int *bOverflow,
431 int bOutType,
432 int TAUT_MODE,
433 int num_components,
434 int bSecondNonTautPass,
435 int bOmitRepetitions,
436 int bUseMulipliers );
437 int str_AuxInvIsoSp3( INCHI_SORT *pINChISort,
438 INCHI_SORT *pINChISort2,
439 INCHI_IOS_STRING *strbuf,
440 int *bOverflow, int bOutType,
441 int TAUT_MODE,
442 int num_components,
443 int bSecondNonTautPass,
444 int bOmitRepetitions,
445 int bUseMulipliers );
447 INCHI_SORT *pINChISort,
448 INCHI_SORT *pINChISort2,
449 INCHI_IOS_STRING *strbuf,
450 int *bOverflow,
451 int bOutType,
452 int TAUT_MODE,
453 int num_components,
454 int bSecondNonTautPass,
455 int bOmitRepetitions );
456 int str_AuxChargeRadVal( INCHI_SORT *pINChISort,
457 INCHI_IOS_STRING *strbuf,
458 int *bOverflow,
459 int bOutType,
460 int TAUT_MODE,
461 int num_components,
462 int bUseMulipliers );
463 int bin_AuxTautTrans( INCHI_SORT *pINChISort,
464 INCHI_SORT *pINChISort2,
465 AT_NUMB **pTrans_n,
466 AT_NUMB **pTrans_s,
467 int bOutType,
468 int num_components );
470 AT_NUMB *nTrans_n,
471 AT_NUMB *nTrans_s,
472 INCHI_IOS_STRING *strbuf,
473 int *bOverflow,
474 int TAUT_MODE,
475 int num_components );
476
478
479#ifndef COMPILE_ALL_CPP
480#ifdef __cplusplus
481}
482#endif
483#endif
484
485
486
487#endif /* _ICHIMAKE_H_ */
int MakeIsoHString(int num_iso_H[], INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1980
int MakeDecNumber(char *szString, int nStringLen, const char *szLeadingDelim, int nValue)
Definition ichiprt2.c:2620
int str_AuxTautTrans(CANON_GLOBALS *pCG, AT_NUMB *nTrans_n, AT_NUMB *nTrans_s, INCHI_IOS_STRING *strbuf, int *bOverflow, int TAUT_MODE, int num_components)
Definition ichiprt3.c:4215
int EqlOrigInfo(INChI_Aux *a1, INChI_Aux *a2)
Definition ichiprt2.c:387
int MakeCtStringNew(CANON_GLOBALS *pCG, AT_NUMB *LinearCT, int nLenCT, int bAddDelim, S_CHAR *nNum_H, int num_atoms, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:607
int MakeEnhStereoString(INChI_Aux *pAux, INCHI_IOS_STRING *strbuf, const char *conf_stereo_string, int **enh_stereo, int nof_stereo_groups, int nCtMode, int *bOverflow)
Creates the enhanced stereochemistry string for the s - layer.
Definition ichiprt2.c:2213
int str_IsoSp2(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:1507
const char * EquString(int EquVal)
Definition ichiprt1.c:557
int str_AuxNumb(CANON_GLOBALS *pCG, INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions)
Definition ichiprt3.c:3846
int MakeCRVString(ORIG_INFO *OrigInfo, int nLenCT, int bAddDelim, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1364
int str_AuxChargeRadVal(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bUseMulipliers)
Definition ichiprt3.c:4041
int MakeCtString(CANON_GLOBALS *pCG, AT_NUMB *LinearCT, int nLenCT, int bAddDelim, S_CHAR *nNum_H, int num_atoms, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1125
int MakeStereoString(AT_NUMB *at1, AT_NUMB *at2, S_CHAR *parity, int bAddDelim, int nLenCT, INCHI_IOS_STRING *buf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:2075
int bHasOrigInfo(ORIG_INFO *OrigInfo, int num_atoms)
Definition ichiprt2.c:369
int str_AuxInvSp3Numb(CANON_GLOBALS *pCG, INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions)
Definition ichiprt3.c:2612
int CompareTautNonIsoPartOfINChI(const INChI *i1, const INChI *i2)
Definition ichimake.c:316
int str_IsoSp3(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bRelRac, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:1796
int str_AuxIsoNumb(CANON_GLOBALS *pCG, INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions)
Definition ichiprt3.c:2797
int MakeCtStringOld(AT_NUMB *LinearCT, int nLenCT, int bAddDelim, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:759
int str_IsoStereoAbsInv(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int num_components)
Definition ichiprt3.c:2086
AT_NUMB * GetDfsOrder4CT(CANON_GLOBALS *pCG, AT_NUMB *LinearCT, int nLenCT, S_CHAR *nNum_H, int num_atoms, int nCtMode)
Definition ichimake.c:2153
int MergeZzInHillFormula(INCHI_IOS_STRING *strbuf)
Definition ichiprt1.c:5578
int bin_AuxTautTrans(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, AT_NUMB **pTrans_n, AT_NUMB **pTrans_s, int bOutType, int num_components)
Definition ichiprt3.c:4119
int MakeHString(int bAddDelim, S_CHAR *LinearCT, int nLenCT, INCHI_IOS_STRING *buf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:845
const char sCompDelim[]
Definition ichiprt1.c:241
int str_Sp3(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bRelRac, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Produce tetrahedral stereo substring of the whole structure InChI string.
Definition ichiprt3.c:980
int str_Sp2(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Produce double bond stereo substring of the whole structure InChI string.
Definition ichiprt3.c:736
int str_AuxInvSp3(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:2343
int str_IsoAtoms(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bAbcNumbers, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:1257
int MakeEquString(AT_NUMB *LinearCT, int nLenCT, int bAddDelim, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1615
int MakeMult(int mult, const char *szTailingDelim, INCHI_IOS_STRING *buf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:431
int str_H_atoms(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int ATOM_MODE, int TAUT_MODE, int num_components, int bUseMulipliers)
Definition ichiprt3.c:309
int str_HillFormula2(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int num_components, int bUseMulipliers)
Definition ichiprt3.c:137
int str_AuxInvIsoSp3Numb(CANON_GLOBALS *pCG, INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions)
Definition ichiprt3.c:3603
int str_Connections(CANON_GLOBALS *pCG, INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int ATOM_MODE, int num_components, int bUseMulipliers)
Definition ichiprt3.c:224
int MakeSlayerString(ORIG_ATOM_DATA *orig_inp_data, INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int bOutType, int num_components, int nCtMode, int *bOverflow)
Creates the string for the s - layer based on the enhanced stereochemistry information.
Definition ichiprt2.c:2327
int FillOutINChI(INChI *pINChI, INChI_Aux *pINChI_Aux, int num_atoms, int num_at_tg, int num_removed_H, sp_ATOM *at, inp_ATOM *norm_at, CANON_STAT *pCS, CANON_GLOBALS *pCG, int bTautomeric, INCHI_MODE nUserMode, char *pStrErrStruct, int bNoWarnings)
Definition ichimak2.c:1072
int MakeIsoTautString(INChI_IsotopicTGroup *IsotopicTGroup, int nNumberOfIsotopicTGroups, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1859
int str_AuxEqu(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:2134
int str_AuxInvIsoSp3(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:3241
int str_StereoAbsInv(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int num_components)
Output absolute stereo inversion substring of the whole structure InChI string.
Definition ichiprt3.c:1219
int str_HillFormula(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int num_components, int bUseMulipliers)
Definition ichiprt3.c:60
int str_AuxTgroupEqu(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bUseMulipliers)
Definition ichiprt3.c:3981
int MakeHillFormulaString(char *szHillFormula, INCHI_IOS_STRING *strbuf, int *bOverflow)
Definition ichimak2.c:121
int MakeIsoAtomString(INChI_IsotopicAtom *IsotopicAtom, int nNumberOfIsotopicAtoms, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1701
int str_FixedH_atoms(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int ATOM_MODE, int num_components, int bUseMulipliers)
Definition ichiprt3.c:618
int MakeTautString(AT_NUMB *LinearCT, int nLenCT, int bAddDelim, INCHI_IOS_STRING *strbuf, int nCtMode, int *bOverflow)
Definition ichiprt2.c:1167
int str_AuxIsoTgroupEqu(INCHI_SORT *pINChISort, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:4264
int MakeDelim(const char *szTailingDelim, INCHI_IOS_STRING *buf, int *bOverflow)
Adds the delimiter to the string buffer if it is not empty and there is no overflow.
Definition ichiprt2.c:532
int str_Charge2(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:427
int MakeAbcNumber(char *szString, int nStringLen, const char *szLeadingDelim, int nValue)
Definition ichiprt2.c:2461
int str_AuxIsoEqu(INCHI_SORT *pINChISort, INCHI_SORT *pINChISort2, INCHI_IOS_STRING *strbuf, int *bOverflow, int bOutType, int TAUT_MODE, int num_components, int bSecondNonTautPass, int bOmitRepetitions, int bUseMulipliers)
Definition ichiprt3.c:2990
int MakeEqStr(const char *szTailingDelim, int mult, INCHI_IOS_STRING *buf, int *bOverflow)
Definition ichiprt2.c:562
#define nNum_H(ICOMPONENT)
unsigned short AT_NUMB
Definition ichisize.h:45
unsigned long INCHI_MODE
Definition ichisize.h:60
signed char S_CHAR
Definition inchi_api.h:113
Definition extr_ct.h:110
Definition ichicant.h:338
Definition ichicant.h:204
Definition ichi.h:267
Definition ichi.h:95
Definition ichi.h:111
Definition ichi.h:209
Definition ichi.h:305
Structure describing an input atom.
Definition inpdef.h:142
Structure describing original atom data.
Definition inpdef.h:433
Definition ichi.h:261
Definition mode.h:1020