diff options
Diffstat (limited to 'Ganlib/src/cle2000.h')
| -rw-r--r-- | Ganlib/src/cle2000.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Ganlib/src/cle2000.h b/Ganlib/src/cle2000.h new file mode 100644 index 0000000..6dc2948 --- /dev/null +++ b/Ganlib/src/cle2000.h @@ -0,0 +1,98 @@ + +/*****************************************/ +/* CLE-2000 API */ +/* AUTHOR OF FORTRAN VERSION: R. Roy */ +/* AUTHOR: A. HEBERT ; 31/07/10 */ +/*****************************************/ + +/* +Copyright (C) 2010 Ecole Polytechnique de Montreal + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +*/ + +#include "lcm.h" +#if defined(HDF5_LIB) +#include "hdf5.h" +#endif +#define nmaskc 5 /* size of maskck and ipacki */ +#define kdisize(object) (sizeof(object)+sizeof(int_32)-1)/sizeof(int_32) +#if !defined(max) +#define max(A,B) ((A) > (B) ? (A) : (B)) +#define min(A,B) ((A) < (B) ? (A) : (B)) +#endif +#define lrclen max(kdisize(record1),kdisize(record2)) /* max kdisize of record1 and record2 */ + +typedef struct LIFO { /* last-in-first-out (lifo) stack */ + int_32 nup; /* number of nodes in stack */ + struct LIFO_NODE *root; /* address of the first node in stack */ + struct LIFO_NODE *node; /* address of the last node in stack */ +} lifo ; + +typedef struct LIFO_NODE { /* node in last-in-first-out (lifo) stack */ + int_32 type; /* type of node: 3= lcm object; 4= xsm file; 5= seq binary; + 6= seq ascii; 7= da binary; 8= hdf5 file; 11= integer value; + 12= real value; 13= character string; 14= double precision value; + 15= logical value */ + int_32 access; /* 0=creation mode/1=modification mode/2=read-only mode */ + int_32 lparam; /* record length for DA file objects */ + union { + int_32 ival; /* integer or logical value */ + float_32 fval; /* real value */ + double dval; /* double precision value */ + lcm *mylcm; /* handle towards a LCM object */ + char hval[73]; /* character value */ +#if defined(HDF5_LIB) + hid_t myhdf5; /* handle towards a HDF5 file */ +#endif + } value; + struct LIFO_NODE *daughter; /* address of the daughter node in stack */ + char name[13]; /* name of node in the calling script */ + char name_daughter[13]; /* name of node in the daughter script */ + char OSname[73]; /* physical filename */ +} lifo_node ; + +void cletim_c(double *); +void cleopn(lifo **); +lifo_node * clepop(lifo **); +void clepush(lifo **, lifo_node *); +int_32 clecls(lifo **); +lifo_node * clenode(lifo **, const char *); +lifo_node * clepos(lifo **, int_32); +void clelib(lifo **); + +void redopn_c(kdi_file *, FILE *, char *, int_32); +void redcls_c(kdi_file **, FILE **, char [73], int_32 *); +void redget_c(int_32 *, int_32 *, float_32 *, char [73], double *); +void redput_c(int_32 *, int_32 *, float_32 *, char *, double *); + +int_32 cle2000_c(int_32, + int_32 (*)(char *, int_32, char (*)[13], int_32 *, int_32 *, lcm **, char (*)[73]), + char *, int_32, lifo *); +int_32 clemod_c(char *, FILE *, int_32, char (*)[13], int_32 *, int_32 *, lcm **, char (*)[73], + int_32 (*)(char *, int_32, char (*)[13], int_32 *, int_32 *, lcm **, char (*)[73])); +int_32 kdrcln(lifo *, int_32); + +void drviox(lifo *, int_32, int_32 *); +int_32 objpil(kdi_file *, FILE *, int_32); +int_32 objstk(kdi_file *, FILE *, int_32); +int_32 objxrf(kdi_file *, FILE *); +int_32 clepil(FILE *, FILE *, kdi_file *, int_32 (*clecst)(char *, int_32 *, int_32 *, float_32 *, char *, double *)); +int_32 clecst(char *, int_32 *, int_32 *, float_32 *, char *, double *); +int_32 clecop(kdi_file *, kdi_file *); +int_32 clexrf(kdi_file *, FILE *); +int_32 clestk(kdi_file *, FILE *,int_32 (*)(char *, int_32 *, int_32 *, float_32 *, char *, double *)); +int_32 clelog(FILE *, FILE *, kdi_file *); + +int_32 kdrdpr(lifo **, int_32, char (*)[13]); +int_32 kdrprm(lifo **, lifo **, int_32 minput, int_32, int_32 *, char (*)[13]); +int_32 kdrdmd(lifo **, int_32, char (*)[13]); +int_32 kdrdll(lifo **, int_32, char (*)[13]); +int_32 kdrdxf(lifo **, int_32, char (*)[13]); +int_32 kdrdsb(lifo **, int_32, char (*)[13]); +int_32 kdrdsa(lifo **, int_32, char (*)[13]); +int_32 kdrdda(lifo **, int_32, char (*)[13]); +int_32 kdrdh5(lifo **, int_32, char (*)[13]); |
