InChI
 
Loading...
Searching...
No Matches
ichimain.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2024 IUPAC and InChI Trust
4 */
5
6
7#ifndef _ICHIMAIN_H_
8#define _ICHIMAIN_H_
9
10#include "strutil.h"
11#include "ichicomn.h"
12
13#define ESC_KEY 27
14
15#define INCHI_SEGM_BUFLEN 524288
16#define PRINT_INCHI_MAX_TAG_LEN 64
17typedef struct tagLine
18{
19 char *str;
20 int len;
22 int c;
24/* for DisplayTheWholeStructure() */
25#define COMP_ORIG_0_MAIN 0x0001
26#define COMP_ORIG_0_RECN 0x0002
27#define COMP_PREP_0_MAIN 0x0004
28#define COMP_PREP_0_RECN 0x0008
29#define COMP_ORIG_1_MAIN 0x0010
30#define COMP_ORIG_1_RECN 0x0020
31
32
33/* STRUCT_DATA */
34
35
36typedef struct tagStructData
37{
38 unsigned long ulStructTime;
43 long fPtrStart; /* or number of processed structures */
44 long fPtrEnd; /* or number of errors */
49
50 /* information related to normal or disconnected layers */
53 INCHI_MODE bTautFlags[INCHI_NUM]; /* reconnected does not have TG_FLAG_DISCONNECT_COORD_DONE flag */
54 INCHI_MODE bTautFlagsDone[INCHI_NUM]; /* reconnected does not have TG_FLAG_DISCONNECT_COORD_DONE flag */
55 int num_components[INCHI_NUM]; /* number of allocated INChI, INChI_Aux data structures */
56 /* debugging info */
57#if ( bRELEASE_VERSION == 0 )
58 int bExtract;
59#endif
61
62
63/* Convenience storage for InChI serialization control data */
64typedef struct tagINCHI_OUT_CTL
65{
68
70
85 int bFhTag;
90
92
95 int nTag;
96 int bTag1;
97 int bTag2;
98 int bTag3;
101
104
126
131
132 int n_pzz;
133 int n_zy;
134
138}
140
141
142/* Context of ProcessOneStructureEx used in calls to ProcessOneStructureExCore */
164int POSEContext_Init(POSEContext *context,
165 STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle,
166 PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
167 INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file,
168 INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file,
169 ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data,
170 long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits);
171void POSEContext_Free(POSEContext *context);
173
174#ifndef COMPILE_ALL_CPP
175#ifdef __cplusplus
176extern "C" {
177#endif
178#endif
179
180
181/* MAIN_LOOP_ACTION */
182
191
192
193/* GENERAL PROCESSING STEPS */
194
195
196int ProcessSingleInputFile( int argc, char *argv[] );
197int ProcessMultipleInputFiles( int argc, char *argv[] );
198int ReadCommandLineParms( int argc, const char *argv[], INPUT_PARMS *ip,
199 char *szSdfDataValue, unsigned long *ulDisplTime,
200 int bReleaseVersion, INCHI_IOSTREAM *log_file );
202int OpenFiles( FILE **inp_file, FILE **out_file, FILE **log_file, FILE **prb_file, INPUT_PARMS *ip );
203int PrintInputParms( INCHI_IOSTREAM *log_file, INPUT_PARMS *ip );
204int SortAndPrintINChI( struct tagCANON_GLOBALS *pCG,
205 INCHI_IOSTREAM *out_file,
206 INCHI_IOS_STRING *strbuf,
207 INCHI_IOSTREAM *log_file,
208 INPUT_PARMS *ip,
209 ORIG_ATOM_DATA *orig_inp_data,
210 ORIG_ATOM_DATA *prep_inp_data,
211 COMP_ATOM_DATA composite_norm_data[INCHI_NUM][TAUT_NUM + 1],
212 ORIG_STRUCT *pOrigStruct,
213 int num_components[INCHI_NUM],
214 int num_non_taut[INCHI_NUM],
215 int num_taut[INCHI_NUM],
216 INCHI_MODE bTautFlags[INCHI_NUM],
217 INCHI_MODE bTautFlagsDone[INCHI_NUM],
218 NORM_CANON_FLAGS *pncFlags,
219 long num_inp,
220 PINChI2 *pINChI[INCHI_NUM],
221 PINChI_Aux2 *pINChI_Aux[INCHI_NUM],
222 int *pSortPrintINChIFlags,
223 unsigned char save_opt_bits );
225 PINChI_Aux2 *pINChI_Aux[INCHI_NUM],
226 int num_components[2] );
227void FreeINChIArrays( PINChI2 *pINChI,
228 PINChI_Aux2 *pINChI_Aux,
229 int num_components );
230int ReadTheStructure( struct tagINCHI_CLOCK *ic,
231 STRUCT_DATA *sd,
232 INPUT_PARMS *ip,
233 INCHI_IOSTREAM *inp_file,
234 ORIG_ATOM_DATA *orig_inp_data,
235 int inp_index,
236 int *out_index );
238 INPUT_PARMS *ip,
239 int nLogMask,
240 INCHI_IOSTREAM *inp_file,
241 INCHI_IOSTREAM *log_file,
242 INCHI_IOSTREAM *out_file,
243 INCHI_IOSTREAM *prb_file,
244 ORIG_ATOM_DATA *orig_inp_data,
245 long *num_inp );
246int GetOneComponent( struct tagINCHI_CLOCK *ic,
247 STRUCT_DATA *sd,
248 INPUT_PARMS *ip,
249 INCHI_IOSTREAM *log_file,
250 INCHI_IOSTREAM *out_file,
251 INP_ATOM_DATA *inp_cur_data,
252 ORIG_ATOM_DATA *orig_inp_data,
253 int i, long num_inp );
255 struct tagINCHI_CLOCK *ic,
256 STRUCT_DATA *sd,
257 INPUT_PARMS *ip,
258 INP_ATOM_DATA *inp_cur_data,
259 ORIG_ATOM_DATA *orig_inp_data,
260 PINChI2 *pINChI,
261 PINChI_Aux2 *pINChI_Aux,
262 int iINChI,
263 int i, long num_inp,
264 INP_ATOM_DATA **inp_norm_data,
265 NORM_CANON_FLAGS *pncFlags,
266 INCHI_IOSTREAM *log_file );
268 INPUT_PARMS *ip,
269 ORIG_ATOM_DATA *orig_inp_data,
270 int i,
271 long num_inp,
272 INCHI_IOSTREAM *inp_file,
273 INCHI_IOSTREAM *log_file,
274 INCHI_IOSTREAM *out_file,
275 INCHI_IOSTREAM *prb_file );
277 INPUT_PARMS *ip,
278 ORIG_ATOM_DATA *orig_inp_data,
279 long num_inp,
280 INCHI_IOSTREAM *inp_file,
281 INCHI_IOSTREAM *log_file,
282 INCHI_IOSTREAM *out_file,
283 INCHI_IOSTREAM *prb_file );
285 INP_ATOM_DATA **inp_norm_data,
286 STRUCT_DATA *sd,
287 int bNoWarnings );
289 STRUCT_DATA *sd, INPUT_PARMS *ip,
290 char *szTitle,
291 INCHI_IOSTREAM *inp_file,
292 INCHI_IOSTREAM *plog,
293 INCHI_IOSTREAM *pout,
294 INCHI_IOSTREAM *pprb,
295 ORIG_ATOM_DATA *orig_inp_data,
296 long *num_inp,
297 STRUCT_FPTRS *pStructPtrs,
298 int *nRet,
299 int *have_err_in_GetOneStructure,
300 long *num_err,
301 int output_error_inchi );
303 CANON_GLOBALS *CG,
304 STRUCT_DATA *sd,
305 INPUT_PARMS *ip,
306 char *szTitle,
307 PINChI2 *pINChI[INCHI_NUM],
308 PINChI_Aux2 *pINChI_Aux[INCHI_NUM],
309 INCHI_IOSTREAM *inp_file,
310 INCHI_IOSTREAM *plog,
311 INCHI_IOSTREAM *pout,
312 INCHI_IOSTREAM *pprb,
313 ORIG_ATOM_DATA *orig_inp_data,
314 ORIG_ATOM_DATA *prep_inp_data,
315 long *num_inp,
316 STRUCT_FPTRS *pStructPtrs,
317 int *nRet,
318 int have_err_in_GetOneStructure,
319 long *num_err,
320 int output_error_inchi,
321 INCHI_IOS_STRING *strbuf,
322 unsigned long *pulTotalProcessingTime,
323 char *pLF, char *pTAB,
324 char *ikey, int silent );
325int GetOneStructure( struct tagINCHI_CLOCK *ic,
326 STRUCT_DATA *sd,
327 INPUT_PARMS *ip,
328 char *szTitle,
329 INCHI_IOSTREAM *inp_file,
330 INCHI_IOSTREAM *log_file,
331 INCHI_IOSTREAM *out_file,
332 INCHI_IOSTREAM *prb_file,
333 ORIG_ATOM_DATA *orig_inp_data,
334 long *num_inp,
335 STRUCT_FPTRS *struct_fptrs );
336int ProcessOneStructure( struct tagINCHI_CLOCK *ic,
337 struct tagCANON_GLOBALS *pCG,
338 STRUCT_DATA *sd,
339 INPUT_PARMS *ip,
340 char *szTitle,
341 PINChI2 *pINChI2[INCHI_NUM],
342 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
343 INCHI_IOSTREAM *inp_file,
344 INCHI_IOSTREAM *log_file,
345 INCHI_IOSTREAM *out_file,
346 INCHI_IOSTREAM *prb_file,
347 ORIG_ATOM_DATA *orig_inp_data,
348 ORIG_ATOM_DATA *prep_inp_data,
349 long num_inp,
350 INCHI_IOS_STRING *strbuf,
351 unsigned char save_opt_bits );
353 struct tagCANON_GLOBALS *pCG,
354 STRUCT_DATA *sd,
355 INPUT_PARMS *ip,
356 char *szTitle,
357 PINChI2 *pINChI2[INCHI_NUM],
358 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
359 INCHI_IOSTREAM *inp_file,
360 INCHI_IOSTREAM *log_file,
361 INCHI_IOSTREAM *out_file,
362 INCHI_IOSTREAM *prb_file,
363 ORIG_ATOM_DATA *orig_inp_data,
364 ORIG_ATOM_DATA *prep_inp_data,
365 long num_inp,
366 INCHI_IOS_STRING *strbuf,
367 unsigned char save_opt_bits );
369 struct tagCANON_GLOBALS *CG,
370 STRUCT_DATA *sd,
371 INPUT_PARMS *ip,
372 char *szTitle,
373 PINChI2 *pINChI2[INCHI_NUM],
374 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
375 INCHI_IOSTREAM *inp_file,
376 INCHI_IOSTREAM *log_file,
377 INCHI_IOSTREAM *out_file,
378 INCHI_IOSTREAM *prb_file,
379 ORIG_ATOM_DATA *orig_inp_data,
380 ORIG_ATOM_DATA *prep_inp_data,
381 long num_inp,
382 INCHI_IOS_STRING *strbuf,
383 unsigned char save_opt_bits,
384 char **sinchi,
385 char **saux);
387 struct tagCANON_GLOBALS *CG,
388 STRUCT_DATA *sd,
389 INPUT_PARMS *ip,
390 char *szTitle,
391 PINChI2 *pINChI2[INCHI_NUM],
392 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
393 INCHI_IOSTREAM *inp_file,
394 INCHI_IOSTREAM *log_file,
395 INCHI_IOSTREAM *out_file,
396 INCHI_IOSTREAM *prb_file,
397 ORIG_ATOM_DATA *orig_inp_data,
398 ORIG_ATOM_DATA *prep_inp_data,
399 long num_inp,
400 INCHI_IOS_STRING *strbuf,
401 unsigned char save_opt_bits,
402 int *n_pzz,
403 char **sinchi,
404 char **saux);
406 struct tagCANON_GLOBALS *CG,
407 STRUCT_DATA *sd,
408 INPUT_PARMS *ip,
409 char *szTitle,
410 PINChI2 *pINChI2[INCHI_NUM],
411 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
412 INCHI_IOSTREAM *inp_file,
413 INCHI_IOSTREAM *log_file,
414 INCHI_IOSTREAM *out_file,
415 INCHI_IOSTREAM *prb_file,
416 ORIG_ATOM_DATA *orig_inp_data,
417 ORIG_ATOM_DATA *prep_inp_data,
418 long num_inp,
419 INCHI_IOS_STRING *strbuf,
420 unsigned char save_opt_bits,
421 char **sinchi,
422 char **saux);
424 struct tagCANON_GLOBALS *CG,
425 STRUCT_DATA *sd,
426 INPUT_PARMS *ip,
427 char *szTitle,
428 PINChI2 *pINChI2[INCHI_NUM],
429 PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
430 INCHI_IOSTREAM *inp_file,
431 INCHI_IOSTREAM *log_file,
432 INCHI_IOSTREAM *out_file,
433 INCHI_IOSTREAM *prb_file,
434 ORIG_ATOM_DATA *orig_inp_data,
435 ORIG_ATOM_DATA *prep_inp_data,
436 long num_inp,
437 INCHI_IOS_STRING *strbuf,
438 unsigned char save_opt_bits,
439 int *mind_polymers);
440int CreateOneStructureINChI( struct tagCANON_GLOBALS *pCG, struct tagINCHI_CLOCK *ic,
441 STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle,
442 PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM],
443 int iINChI,
444 INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file,
445 INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file,
446 ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data,
447 COMP_ATOM_DATA composite_norm_data2[][TAUT_NUM + 1],
448 long num_inp, INCHI_IOS_STRING *strbuf, NORM_CANON_FLAGS *pncFlags );
450 ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data );
452 STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle,
453 PINChI2 *pINChI[INCHI_NUM], PINChI_Aux2 *pINChI_Aux[INCHI_NUM],
454 INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *plog,
455 INCHI_IOSTREAM *pout, INCHI_IOSTREAM *pprb,
456 ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data,
457 long *num_inp, STRUCT_FPTRS *pStructPtrs,
458 int *nRet, int have_err_in_GetOneStructure,
459 long *num_err, int output_error_inchi, INCHI_IOS_STRING *strbuf,
460 unsigned long *pulTotalProcessingTime, char *pLF, char *pTAB,
461 long int nrepeat);
462int bIsStructChiral( PINChI2 *pINChI2[INCHI_NUM], int num_components[] );
463
464
465/* ORIG_ATOM_DATA */
466
467int OrigAtData_Duplicate( ORIG_ATOM_DATA *new_orig_atom, ORIG_ATOM_DATA *orig_atom );
468
469int OrigAtData_RemoveAtom(ORIG_ATOM_DATA *orig_at_data, int iatom);
470int OrigAtData_AddSingleStereolessBond( int this_atom, int other_atom,
471 inp_ATOM *at, int *num_inp_bonds );
472int OrigAtData_AddBond( int this_atom, int other_atom, inp_ATOM *at,
473 int bond_type, int bond_stereo, int *num_bonds );
474int OrigAtData_RemoveBond( int this_atom, int other_atom, inp_ATOM *at,
475 int *bond_type, int *bond_stereo, int *num_inp_bonds );
476int OrigAtData_RemoveHalfBond( int this_atom, int other_atom, inp_ATOM *at,
477 int *bond_type, int *bond_stereo );
478int OrigAtData_IncreaseBondOrder( int this_atom, int other_atom, inp_ATOM *at );
479int OrigAtData_DecreaseBondOrder( int this_atom, int other_atom, inp_ATOM *at );
480int OrigAtData_SaveMolfile( ORIG_ATOM_DATA *orig_inp_data, STRUCT_DATA *sd,
481 INPUT_PARMS *ip, long num_inp, INCHI_IOSTREAM *out_file );
484 INPUT_PARMS *ip,
485 ORIG_ATOM_DATA *orig_at_data,
487 int *ret);
489 int nforbidden,
490 int *forbidden_orig,
491 int *n_fragbonds,
492 int **fragbonds,
493 int *n_fragatoms,
494 int *fragatoms,
495 int *err,
496 char *pStrErr);
497
498void winchi_calc_inchikey( int ret,
499 int *ikflag,
500 INPUT_PARMS *ip,
501 INCHI_IOSTREAM *out_file,
502 INCHI_IOSTREAM *log_file);
503
504/* inp_ATOM */
505int Inp_Atom_GetBondType(inp_ATOM *at, int iatom1, int iatom2);
506
507
508/* ORIG_STRUCT */
509
510int OrigStruct_FillOut( struct tagCANON_GLOBALS *pCG,
511 ORIG_ATOM_DATA *orig_inp_data,
512 ORIG_STRUCT *pOrigStruct,
513 STRUCT_DATA *sd );
514void OrigStruct_Free( ORIG_STRUCT *pOrigStruct );
515int ReadWriteInChI( struct tagINCHI_CLOCK *ic,
516 struct tagCANON_GLOBALS *pCG,
517 INCHI_IOSTREAM *pInp,
518 INCHI_IOSTREAM *pOut,
519 INCHI_IOSTREAM *pLog,
520 INPUT_PARMS *ip_inp,
521 STRUCT_DATA *sd_inp,
522 /* the following are InChI library-specific parameters */
523 inp_ATOM **at,
524 int *num_at,
525 int *num_bonds,
526 OAD_Polymer **polymer,
527 OAD_V3000 **v3000,
528 /* end of InChI library-specific parameters */
529 char *szMsg,
530 int nMsgLen,
531 unsigned long WarningFlags[2][2] );
532int CompareHillFormulasNoH( const char *f1, const char *f2,
533 int *num_H1, int *num_H2 );
534int CreateCompositeNormAtom( COMP_ATOM_DATA *composite_norm_data,
535 INP_ATOM_DATA2 *all_inp_norm_data,
536 int num_components );
537
538
539/* POLYMERS */
540
541void EditINCHI_HidePolymerZz( INCHI_IOSTREAM *out, int n_pzz, int n_zy );
542
543
544
545
546/* MISCELLANEOUS */
547
548
549void SplitTime( unsigned long ulTotalTime, int *hours, int *minutes, int *seconds, int *mseconds );
550void set_line_separators( int bINChIOutputOptions, char **pLF, char **pTAB );
551void save_command_line( int argc, char *argv[], INCHI_IOSTREAM *plog );
552void emit_empty_inchi( INPUT_PARMS *ip, long num_inp,
553 char *pLF, char *pTAB, INCHI_IOSTREAM *pout );
554
555#ifndef COMPILE_ANSI_ONLY
556void eat_keyboard_input( void );
557int user_quit( struct tagINCHI_CLOCK *ic, const char *msg, unsigned long ulMaxTime );
558#endif
559
560
561
562#ifndef COMPILE_ALL_CPP
563#ifdef __cplusplus
564}
565#endif
566#endif
567
568#endif /* _ICHIMAIN_H_ */
INChI * PINChI2[TAUT_NUM]
Definition ichi.h:224
INChI_Aux * PINChI_Aux2[TAUT_NUM]
Definition ichi.h:267
#define STR_ERR_LEN
Definition ichierr.h:126
int SortAndPrintINChI(struct tagCANON_GLOBALS *pCG, INCHI_IOSTREAM *out_file, INCHI_IOS_STRING *strbuf, INCHI_IOSTREAM *log_file, INPUT_PARMS *ip, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, COMP_ATOM_DATA composite_norm_data[INCHI_NUM][TAUT_NUM+1], ORIG_STRUCT *pOrigStruct, int num_components[INCHI_NUM], int num_non_taut[INCHI_NUM], int num_taut[INCHI_NUM], INCHI_MODE bTautFlags[INCHI_NUM], INCHI_MODE bTautFlagsDone[INCHI_NUM], NORM_CANON_FLAGS *pncFlags, long num_inp, PINChI2 *pINChI[INCHI_NUM], PINChI_Aux2 *pINChI_Aux[INCHI_NUM], int *pSortPrintINChIFlags, unsigned char save_opt_bits)
Definition runichi4.c:67
struct tagStructData STRUCT_DATA
int OrigAtData_RemoveAtom(ORIG_ATOM_DATA *orig_at_data, int iatom)
Definition runichi3.c:2534
int ProcessOneStructureEx(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits)
Definition runichi.c:2091
int CreateOneComponentINChI(struct tagCANON_GLOBALS *pCG, struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, INP_ATOM_DATA *inp_cur_data, ORIG_ATOM_DATA *orig_inp_data, PINChI2 *pINChI, PINChI_Aux2 *pINChI_Aux, int iINChI, int i, long num_inp, INP_ATOM_DATA **inp_norm_data, NORM_CANON_FLAGS *pncFlags, INCHI_IOSTREAM *log_file)
Definition runichi.c:1807
void EditINCHI_HidePolymerZz(INCHI_IOSTREAM *out, int n_pzz, int n_zy)
Definition ichiprt1.c:5152
int OrigAtData_SaveMolfile(ORIG_ATOM_DATA *orig_inp_data, STRUCT_DATA *sd, INPUT_PARMS *ip, long num_inp, INCHI_IOSTREAM *out_file)
Definition runichi.c:624
void POSEContext_DebugPrint(POSEContext *context)
Definition runichi2.c:1766
int RepeatedlyRenumberAtomsAndRecalcINCHI(struct tagINCHI_CLOCK *ic, CANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI[INCHI_NUM], PINChI_Aux2 *pINChI_Aux[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *plog, INCHI_IOSTREAM *pout, INCHI_IOSTREAM *pprb, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long *num_inp, STRUCT_FPTRS *pStructPtrs, int *nRet, int have_err_in_GetOneStructure, long *num_err, int output_error_inchi, INCHI_IOS_STRING *strbuf, unsigned long *pulTotalProcessingTime, char *pLF, char *pTAB, long int nrepeat)
int OrigAtData_IncreaseBondOrder(int this_atom, int other_atom, inp_ATOM *at)
Definition runichi3.c:2662
void OrigAtData_DebugTrace(ORIG_ATOM_DATA *at_data)
Definition runichi3.c:1083
int OAD_ProcessOneStructure105Plus(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits, char **sinchi, char **saux)
Definition runichi.c:3124
int ReadTheStructure(struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, INCHI_IOSTREAM *inp_file, ORIG_ATOM_DATA *orig_inp_data, int inp_index, int *out_index)
Definition runichi2.c:490
int TreatErrorsInCreateOneComponentINChI(STRUCT_DATA *sd, INPUT_PARMS *ip, ORIG_ATOM_DATA *orig_inp_data, int i, long num_inp, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file)
Definition runichi4.c:1352
int ReadCommandLineParms(int argc, const char *argv[], INPUT_PARMS *ip, char *szSdfDataValue, unsigned long *ulDisplTime, int bReleaseVersion, INCHI_IOSTREAM *log_file)
Definition ichiparm.c:587
struct tagLine SEGM_LINE
void SplitTime(unsigned long ulTotalTime, int *hours, int *minutes, int *seconds, int *mseconds)
Definition runichi4.c:1217
void emit_empty_inchi(INPUT_PARMS *ip, long num_inp, char *pLF, char *pTAB, INCHI_IOSTREAM *pout)
Definition ichimain.c:1033
int OpenFiles(FILE **inp_file, FILE **out_file, FILE **log_file, FILE **prb_file, INPUT_PARMS *ip)
Definition ichiparm.c:2874
void OAD_CollectFragmentBondsAndAtoms(ORIG_ATOM_DATA *at_data, int nforbidden, int *forbidden_orig, int *n_fragbonds, int **fragbonds, int *n_fragatoms, int *fragatoms, int *err, char *pStrErr)
Definition runichi3.c:2775
void save_command_line(int argc, char *argv[], INCHI_IOSTREAM *plog)
Definition ichimain.c:1012
int CompareHillFormulasNoH(const char *f1, const char *f2, int *num_H1, int *num_H2)
Definition ichimake.c:237
int ValidateAndPreparePolymerAndPseudoatoms(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits, int *mind_polymers)
Definition runichi.c:2941
int OrigAtData_RemoveHalfBond(int this_atom, int other_atom, inp_ATOM *at, int *bond_type, int *bond_stereo)
Definition runichi3.c:2487
int bIsStructChiral(PINChI2 *pINChI2[INCHI_NUM], int num_components[])
Definition runichi4.c:1236
int ReadWriteInChI(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, INCHI_IOSTREAM *pInp, INCHI_IOSTREAM *pOut, INCHI_IOSTREAM *pLog, INPUT_PARMS *ip_inp, STRUCT_DATA *sd_inp, inp_ATOM **at, int *num_at, int *num_bonds, OAD_Polymer **polymer, OAD_V3000 **v3000, char *szMsg, int nMsgLen, unsigned long WarningFlags[2][2])
Definition ichiread.c:580
void OrigStruct_Free(ORIG_STRUCT *pOrigStruct)
Definition ichiprt1.c:3001
int TreatCreateINChIWarning(STRUCT_DATA *sd, INPUT_PARMS *ip, ORIG_ATOM_DATA *orig_inp_data, long num_inp, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file)
Definition runichi4.c:1418
struct tagINCHI_OUT_CTL INCHI_OUT_CTL
void FreeAllINChIArrays(PINChI2 *pINChI[INCHI_NUM], PINChI_Aux2 *pINChI_Aux[INCHI_NUM], int num_components[2])
void set_line_separators(int bINChIOutputOptions, char **pLF, char **pTAB)
Definition ichiprt1.c:3060
int OrigAtData_AddBond(int this_atom, int other_atom, inp_ATOM *at, int bond_type, int bond_stereo, int *num_bonds)
Definition runichi3.c:2577
int OAD_ProcessOneStructureNoEdits(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits, int *n_pzz, char **sinchi, char **saux)
Definition runichi.c:3029
int TreatErrorsInReadTheStructure(STRUCT_DATA *sd, INPUT_PARMS *ip, int nLogMask, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, long *num_inp)
Definition runichi2.c:810
int CreateOneStructureINChI(struct tagCANON_GLOBALS *pCG, struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], int iINChI, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, COMP_ATOM_DATA composite_norm_data2[][TAUT_NUM+1], long num_inp, INCHI_IOS_STRING *strbuf, NORM_CANON_FLAGS *pncFlags)
Definition runichi.c:869
int PrintInputParms(INCHI_IOSTREAM *log_file, INPUT_PARMS *ip)
Definition ichiparm.c:2118
int OrigAtData_RemoveBond(int this_atom, int other_atom, inp_ATOM *at, int *bond_type, int *bond_stereo, int *num_inp_bonds)
Definition runichi3.c:2547
int CalcAndPrintINCHIAndINCHIKEY(struct tagINCHI_CLOCK *ic, CANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI[INCHI_NUM], PINChI_Aux2 *pINChI_Aux[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *plog, INCHI_IOSTREAM *pout, INCHI_IOSTREAM *pprb, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long *num_inp, STRUCT_FPTRS *pStructPtrs, int *nRet, int have_err_in_GetOneStructure, long *num_err, int output_error_inchi, INCHI_IOS_STRING *strbuf, unsigned long *pulTotalProcessingTime, char *pLF, char *pTAB, char *ikey, int silent)
Definition ichimain.c:1126
int OrigAtData_Duplicate(ORIG_ATOM_DATA *new_orig_atom, ORIG_ATOM_DATA *orig_atom)
Definition runichi3.c:113
struct tagPOSEContext POSEContext
int GetTheNextRecordOfInputFile(struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *plog, INCHI_IOSTREAM *pout, INCHI_IOSTREAM *pprb, ORIG_ATOM_DATA *orig_inp_data, long *num_inp, STRUCT_FPTRS *pStructPtrs, int *nRet, int *have_err_in_GetOneStructure, long *num_err, int output_error_inchi)
Definition ichimain.c:1053
void POSEContext_Free(POSEContext *context)
Definition runichi2.c:1730
int PreprocessPolymerCRUData(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *CG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits, char **sinchi, char **saux)
Definition runichi.c:2209
int OAD_StructureEdits_Apply(STRUCT_DATA *sd, INPUT_PARMS *ip, ORIG_ATOM_DATA *orig_at_data, OAD_StructureEdits *ed, int *ret)
Definition runichi.c:2489
int CreateCompositeNormAtom(COMP_ATOM_DATA *composite_norm_data, INP_ATOM_DATA2 *all_inp_norm_data, int num_components)
Definition inchi_dll_a2.c:1940
int GetProcessingWarningsOneComponentInChI(INChI *cur_INChI[], INP_ATOM_DATA **inp_norm_data, STRUCT_DATA *sd, int bNoWarnings)
Definition runichi4.c:1515
#define PRINT_INCHI_MAX_TAG_LEN
Definition ichimain.h:16
int OrigAtData_AddSingleStereolessBond(int this_atom, int other_atom, inp_ATOM *at, int *num_inp_bonds)
Definition runichi3.c:2652
void FreeINChIArrays(PINChI2 *pINChI, PINChI_Aux2 *pINChI_Aux, int num_components)
Definition runichi4.c:1322
int ProcessSingleInputFile(int argc, char *argv[])
Definition ichimain.c:472
MAIN_LOOP_ACTION
Definition ichimain.h:184
@ DO_NEXT_STEP
Definition ichimain.h:185
@ DO_EXIT_FUNCTION
Definition ichimain.h:187
@ DO_CONTINUE_MAIN_LOOP
Definition ichimain.h:188
@ DO_BREAK_MAIN_LOOP
Definition ichimain.h:186
int GetOneStructure(struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, long *num_inp, STRUCT_FPTRS *struct_fptrs)
Definition runichi2.c:99
int Inp_Atom_GetBondType(inp_ATOM *at, int iatom1, int iatom2)
Definition runichi3.c:4477
void winchi_calc_inchikey(int ret, int *ikflag, INPUT_PARMS *ip, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *log_file)
Definition runichi4.c:386
void HelpCommandLineParms(INCHI_IOSTREAM *f)
Definition ichiparm.c:2693
int ProcessOneStructure(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits)
Definition runichi.c:183
int OrigStruct_FillOut(struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data, ORIG_STRUCT *pOrigStruct, STRUCT_DATA *sd)
Definition ichiprt1.c:2886
int OrigAtData_DecreaseBondOrder(int this_atom, int other_atom, inp_ATOM *at)
Definition runichi3.c:2720
int ProcessMultipleInputFiles(int argc, char *argv[])
Definition ichimain.c:215
int GetOneComponent(struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INP_ATOM_DATA *inp_cur_data, ORIG_ATOM_DATA *orig_inp_data, int i, long num_inp)
Definition runichi2.c:427
int PreprocessOneStructure(struct tagINCHI_CLOCK *ic, STRUCT_DATA *sd, INPUT_PARMS *ip, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data)
Definition runichi3.c:453
int POSEContext_Init(POSEContext *context, STRUCT_DATA *sd, INPUT_PARMS *ip, char *szTitle, PINChI2 *pINChI2[INCHI_NUM], PINChI_Aux2 *pINChI_Aux2[INCHI_NUM], INCHI_IOSTREAM *inp_file, INCHI_IOSTREAM *log_file, INCHI_IOSTREAM *out_file, INCHI_IOSTREAM *prb_file, ORIG_ATOM_DATA *orig_inp_data, ORIG_ATOM_DATA *prep_inp_data, long num_inp, INCHI_IOS_STRING *strbuf, unsigned char save_opt_bits)
Definition runichi2.c:1597
unsigned long INCHI_MODE
Definition ichisize.h:25
#define NUM_H_ISOTOPES
Definition inchi_api.h:72
#define INCHI_NUM
Definition inchi_api.h:1144
#define MAX_SDF_VALUE
Definition incomdef.h:18
#define MAX_SDF_HEADER
Definition incomdef.h:17
INP_ATOM_DATA INP_ATOM_DATA2[TAUT_NUM]
Definition inpdef.h:577
#define TAUT_NUM
Definition mode.h:560
Structure describing a polymer.
Definition inpdef.h:274
Structure describing v. 1.05 extended input supporting V3000; polymers.
Definition inpdef.h:345
Definition ichicant.h:303
Structure describing composite atom data for InChI generation.
Definition inpdef.h:614
Definition ichitime.h:50
Definition ichimain.h:65
int bIgn_UU_Sp3_Iso[TAUT_NUM]
Definition ichimain.h:122
int bIgn_UU_Sp3[TAUT_NUM]
Definition ichimain.h:120
int bIsotopicAtomEqu[TAUT_NUM]
Definition ichimain.h:114
int bAtomEqu[TAUT_NUM]
Definition ichimain.h:107
int n_zy
Definition ichimain.h:133
int bNonTautomeric
Definition ichimain.h:83
int tot_len
Definition ichimain.h:99
int bIsotopicRacemicStereo[TAUT_NUM]
Definition ichimain.h:118
int bInvIsotopicStereo[TAUT_NUM]
Definition ichimain.h:116
int bTag3
Definition ichimain.h:98
int nNumRemovedProtons
Definition ichimain.h:94
char sDifSegs[DIFL_LENGTH][DIFS_LENGTH]
Definition ichimain.h:127
char szTag3[PRINT_INCHI_MAX_TAG_LEN]
Definition ichimain.h:130
int bIgn_UU_Sp2_Iso[TAUT_NUM]
Definition ichimain.h:123
int bRacemicStereo[TAUT_NUM]
Definition ichimain.h:111
int bInvIsotopicStereoOrigNumb[TAUT_NUM]
Definition ichimain.h:117
int bSecondNonTautPass
Definition ichimain.h:80
int bTautomericOutputAllowed
Definition ichimain.h:81
int n_pzz
Definition ichimain.h:132
int bTag1
Definition ichimain.h:96
char szTag1[PRINT_INCHI_MAX_TAG_LEN]
Definition ichimain.h:128
INCHI_SORT * pINChISort2
Definition ichimain.h:137
int bIgn_UU_Sp2[TAUT_NUM]
Definition ichimain.h:121
INCHI_SORT ** pINChISortTautAndNonTaut
Definition ichimain.h:135
int bChargesRadVal[TAUT_NUM]
Definition ichimain.h:124
int bIsotopicTautEqu[TAUT_NUM]
Definition ichimain.h:115
int bNonTautIsIdenticalToTaut
Definition ichimain.h:84
int bOrigCoord[TAUT_NUM]
Definition ichimain.h:125
int bInvStereoOrigNumb[TAUT_NUM]
Definition ichimain.h:110
int bRelativeStereo[TAUT_NUM]
Definition ichimain.h:112
int bNonTautIsoIdentifierNotEmpty
Definition ichimain.h:79
int bIsotopicRelativeStereo[TAUT_NUM]
Definition ichimain.h:119
int bOmitRepetitions
Definition ichimain.h:76
int tot_len2
Definition ichimain.h:100
int bOutputType
Definition ichimain.h:73
INCHI_SORT * pINChISort
Definition ichimain.h:136
int bTautomeric
Definition ichimain.h:82
int bNonTautNonIsoIdentifierNotEmpty
Definition ichimain.h:78
int bOverflow
Definition ichimain.h:71
int bPlainTextTags
Definition ichimain.h:75
int bOutType
Definition ichimain.h:74
char szTag2[PRINT_INCHI_MAX_TAG_LEN]
Definition ichimain.h:129
int bRelRac
Definition ichimain.h:86
int bIsotopic
Definition ichimain.h:88
int bFhTag
Definition ichimain.h:85
int * pSortPrintINChIFlags
Definition ichimain.h:69
int bInvStereo[TAUT_NUM]
Definition ichimain.h:109
int num_comp[TAUT_NUM]
Definition ichimain.h:105
int ATOM_MODE
Definition ichimain.h:66
int num_iso_H[NUM_H_ISOTOPES]
Definition ichimain.h:106
int bTautEqu[TAUT_NUM]
Definition ichimain.h:108
int TAUT_MODE
Definition ichimain.h:67
int nCurINChISegment
Definition ichimain.h:102
int bPolymers
Definition ichimain.h:89
int bUseMulipliers
Definition ichimain.h:77
int bTag2
Definition ichimain.h:97
int bIsotopicOrigNumb[TAUT_NUM]
Definition ichimain.h:113
int nTag
Definition ichimain.h:95
int nSegmAction
Definition ichimain.h:103
int bAbcNumbers
Definition ichimain.h:87
int bAlways
Definition ichimain.h:72
int iCurTautMode
Definition ichimain.h:91
int num_components
Definition ichimain.h:93
Definition ichi.h:174
Definition ichi.h:270
Structure describing input atom data for InChI generation.
Definition inpdef.h:554
Structure describing an input atom.
Definition inpdef.h:107
Definition ichidrp.h:85
Definition ichimain.h:18
int len_alloc
Definition ichimain.h:21
int c
Definition ichimain.h:22
char * str
Definition ichimain.h:19
int len
Definition ichimain.h:20
Structure describing normalization and canonicalization flags.
Definition inpdef.h:588
Structure describing structure edits.
Definition inpdef.h:912
Structure describing original atom data.
Definition inpdef.h:398
Structure describing the original structure.
Definition inpdef.h:443
Definition mode.h:999
Definition mode.h:985
Definition ichimain.h:144
ORIG_ATOM_DATA OrigAtData
Definition ichimain.h:155
INCHI_IOS_STRING temp_string_container
Definition ichimain.h:160
PINChI_Aux2 * pINChI_Aux2[INCHI_NUM]
Definition ichimain.h:149
INCHI_IOSTREAM * out_file
Definition ichimain.h:153
long num_inp
Definition ichimain.h:159
ORIG_ATOM_DATA PrepAtData[2]
Definition ichimain.h:157
INCHI_IOS_STRING * strbuf
Definition ichimain.h:161
ORIG_ATOM_DATA * orig_inp_data
Definition ichimain.h:156
PINChI2 * pINChI2[INCHI_NUM]
Definition ichimain.h:148
unsigned char save_opt_bits
Definition ichimain.h:162
INPUT_PARMS ip
Definition ichimain.h:146
ORIG_ATOM_DATA * prep_inp_data
Definition ichimain.h:158
char szTitle[MAX_SDF_HEADER+MAX_SDF_VALUE+256]
Definition ichimain.h:147
STRUCT_DATA sd
Definition ichimain.h:145
INCHI_IOSTREAM * prb_file
Definition ichimain.h:154
INCHI_IOSTREAM * inp_file
Definition ichimain.h:150
INCHI_IOSTREAM * log_file
Definition ichimain.h:152
INCHI_IOSTREAM inchi_file[3]
Definition ichimain.h:151
Definition ichimain.h:37
int nStructReadError
Definition ichimain.h:41
int nErrorType
Definition ichimain.h:40
long fPtrEnd
Definition ichimain.h:44
int bChiralFlag
Definition ichimain.h:48
long fPtrStart
Definition ichimain.h:43
int bUserQuitComponentDisplay
Definition ichimain.h:47
INCHI_MODE bTautFlags[INCHI_NUM]
Definition ichimain.h:53
INCHI_MODE bTautFlagsDone[INCHI_NUM]
Definition ichimain.h:54
int bUserQuit
Definition ichimain.h:45
int num_components[INCHI_NUM]
Definition ichimain.h:55
int nErrorCode
Definition ichimain.h:39
int bUserQuitComponent
Definition ichimain.h:46
char pStrErrStruct[STR_ERR_LEN]
Definition ichimain.h:42
unsigned long ulStructTime
Definition ichimain.h:38
int num_taut[INCHI_NUM]
Definition ichimain.h:51
int num_non_taut[INCHI_NUM]
Definition ichimain.h:52
Structure describing file pointers for structures.
Definition inpdef.h:651
@ DIFS_LENGTH
Definition strutil.h:593
@ DIFL_LENGTH
Definition strutil.h:602