root/tags/5.4.pre05/cisisx.hpp @ 1

Revision 1, 15.0 kB (checked in by heitor.barbieri, 2 years ago)

Criação do svn para Cisis.

Line 
1#ifndef CISISX_HPP
2#define CISISX_HPP
3
4#include <cisis.h>
5#if IFUPDATE
6#include <ciupi.h> // uses BOOLEAN + LKXONLY
7#endif
8
9#if CICPP
10
11class ISO_2709;
12
13class _YOURCLASS CISISX
14{
15 private:
16
17  void cidbx_init(void);
18  void cirec_init(void);
19  void citrm_init(void);
20  void ciifl_init(void);
21  void ciutl_init(void);
22
23 public:
24
25//------------------------- CISIS.HPP ----------------------------------
26
27  DBXSTRU      *vdbxp[MAXNDBX];          /* pointers to the entries   */
28  LONGX          ndbxs;                   /* actual #entries           */
29  LONGX          maxndbx;                 /* runtime value             */
30#if FATRAP
31  int           fatal_errcod;            /* cisis fatal() error code  */
32  char          fatal_iomsg[MAXFATML+1]; /* cisis fatal() flag/msg    */
33  jmp_buf       fatal_jumper;            /* cisis fatal() longjmp()   */
34#endif
35  static unsigned char init_isisuctab[256];
36  static unsigned char init_isisactab[256];
37  unsigned char isisuctab[256];
38  int           isiswctot;
39  unsigned char isiswctab[256];
40
41//#ifdef CI_WINISIS
42  unsigned char isisactab[256];
43//#else
44//  unsigned char isisactab[];
45//#endif
46  int           NXPAGES[MAXLIV];               /* [MAXLIV] */
47
48#ifndef CISISX_SOURCE
49
50#define vdbxp          cisisxp->vdbxp
51#define ndbxs          cisisxp->ndbxs
52#define maxndbx        cisisxp->maxndbx
53#define fatal_errcod   cisisxp->fatal_errcod
54#define fatal_iomsg    cisisxp->fatal_iomsg
55#define fatal_jumper   cisisxp->fatal_jumper
56#define isisuctab      cisisxp->isisuctab
57#define isiswctot      cisisxp->isiswctot
58#define isiswctab      cisisxp->isiswctab
59#define isisactab      cisisxp->isisactab
60#define NXPAGES        cisisxp->NXPAGES
61
62#endif // CISISX_SOURCE
63
64//------------------------- CIDBX.C ------------------------------------
65
66#if SHTEST
67  char shtest[CIMPL+1];
68#endif /* SHTEST */
69
70#if CNV_PCBINUM
71  char cnv_pcbuff[MAXMFRL];        /* PC data representation (swapped) */
72#endif
73
74#if CNV_PCFILES
75  UCHR nodeunibuff[N2BSIZ];      /* area para ler pagina de .n01/.n02 */
76#if ISISUNISYS
77#define LEAFCNV_PCFILES 0
78#else
79#define LEAFCNV_PCFILES 1
80#endif
81#if LEAFCNV_PCFILES
82  UCHR leafunibuff[L2BSIZ];       /* area para ler pagina de .l01/.l02 */
83#endif
84#endif
85
86  int partrace;            /* dbxopen/dbxcipar trace */
87  int dbxtrace;            /* dbxopen/dbxcipar trace */
88  int rectrace;            /* rec RESTRACE runtime switch */
89  int dectrace;            /* decoread()/recdeco() runtime switch  */
90  int trmtrace;            /* trm TRSTRACE runtime switch */
91  int b40trace;            /* b40 RUXTRACE runtime switch */
92  int b50trace;            /* b50 RUXTRACE runtime switch */
93  int b70trace;            /* b70 RUXTRACE runtime switch */
94  int fmttrace;            /* fmt runtime switch */
95  int fsttrace;            /* fst FSSTRACE runtime switch */
96  int multrace;            /* upd MULTRACE runtime switch */
97  int cgitrace;            /* cicgi trace */
98  int bugadddel;           /* 13/03/94 */
99
100  int dbxopt_fatal;        /* dbxopen() - fatal when file doesn't exist */
101  int dbxopt_errno;        /* dbxopen() - dbname/errno msg before fatal */
102
103  int dbxopt_mflush;       /* record() - flush lastrecread if != dbname */
104  int dbxopt_mclose;       /* record() - close lastrecread if != dbname */
105  int dbxopt_iflush;       /* term() - flush lasttrmread if != dbname */
106
107  LONGX rec_maxmfrl;       /* MAXMFRL/cipar maxmfrl entry */
108  LONGX rec_mstload;       /* 28/03/97 */
109  LONGX trm_invload;       /* 28/03/97 */
110
111  off_t dbxfloff;           /* dbxflock()/dbxulock() - offset */
112  LONGX dbxflsiz;           /* dbxflock()/dbxulock() - length */
113  int dbxfloop;            /* dbxflock() - #retries */
114  int dbxwloop;            /* dbxwlock() - #retries */
115  int dbxiloop;            /* dbxilock() - #retries */
116  int dbxuclos;            /* dbxulock() - close/reopen */
117  int dbxewlrc;            /* dbxflock()/dbxwlock() error action */
118  int dbxsleep;            /* dbxilock() seconds to sleep */
119
120  int dbxopt_ordwr;        /* dbxopen() - O_RDWR / O_RDONLY (LM/CD-ROM) */
121  int dbxordwr;            /* dbxopen() - dbxopt_ordwr & O_RDWR */
122
123  unsigned char bitmask[8]; /* 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 */
124
125  int fpc_fd;              /* fpccreat()/fpcwrite()/fpcclose() */
126  FFI fpc_left;            /* fpccreat()/fpcwrite()/fpcclose() */
127  char *fpc_buffer;        /* fpccreat()/fpcwrite()/fpcclose() */
128
129  int vlex[NTREE];              /* use it */
130  int nxbsiz[NTREE];            /* use it */
131  int lxbsiz[NTREE];            /* use it */
132
133  char *mx1extp;           /* mstsetup/recisis0 */
134  char *xx1extp;           /* mstsetup/recisis0 */
135
136  char *cx1extp;           /* invsetup/trmisis0 */
137  char *nx12extp[NTREE];        /* invsetup/trmisis0 */
138  char *lx12extp[NTREE];        /* invsetup/trmisis0 */
139  char *ix1extp;           /* invsetup/trmisis0 */
140#if CNLI
141  char *iy0extp;           /* All IF into one. To ALP, WL */
142#endif
143
144#if MULTI
145  int cipnetws;            /* MULTI default operation */
146#endif
147
148#if DBXMSTXL
149  int cipmstxl;            /* extended .mst capacity */
150#endif
151
152#if BEFORE20000323           /* because some BRM's GCC - ask rpiva */
153  FILE *cistderr;          /* 20/05/98 (Asael!) */
154#endif
155
156  FILE *dbxcipfp;          /* dbxcipar() input parameter file pointer */
157  char *dbxcdcip;          /* dbxcipar() input data */
158  char dbxcikey[BUFSIZ];   /* dbxcipar() actual file name */
159  int dbxcipok;            /* dbxcipar() found */
160
161#if GIPAR
162  char dbxgikey[BUFSIZ];   /* dbxgipar() actual file name */
163  char *dbxgiext[32];      /* dbxgipar() dbn.par .extensions */
164  int dbxgiexn[32];        /* dbxgipar() dbn.par numbers */
165#endif
166
167#ifndef CISISX_SOURCE
168
169#define shtest         cisisxp->shtest
170#define cnv_pcbuff     cisisxp->cnv_pcbuff
171#define nodeunibuff    cisisxp->nodeunibuff
172#define leafunibuff    cisisxp->leafunibuff
173#define partrace       cisisxp->partrace
174#define dbxtrace       cisisxp->dbxtrace
175#define rectrace       cisisxp->rectrace
176#define dectrace       cisisxp->dectrace
177#define trmtrace       cisisxp->trmtrace
178#define b40trace       cisisxp->b40trace
179#define b50trace       cisisxp->b50trace
180#define b70trace       cisisxp->b70trace
181#define fmttrace       cisisxp->fmttrace
182#define fsttrace       cisisxp->fsttrace
183#define multrace       cisisxp->multrace
184#define cgitrace       cisisxp->cgitrace
185#define bugadddel      cisisxp->bugadddel
186#define dbxopt_fatal   cisisxp->dbxopt_fatal
187#define dbxopt_errno   cisisxp->dbxopt_errno
188#define dbxopt_mflush  cisisxp->dbxopt_mflush
189#define dbxopt_mclose  cisisxp->dbxopt_mclose
190#define dbxopt_iflush  cisisxp->dbxopt_iflush
191#define rec_maxmfrl    cisisxp->rec_maxmfrl
192#define rec_mstload    cisisxp->rec_mstload
193#define trm_invload    cisisxp->trm_invload
194#define dbxfloff       cisisxp->dbxfloff
195#define dbxflsiz       cisisxp->dbxflsiz
196#define dbxfloop       cisisxp->dbxfloop
197#define dbxwloop       cisisxp->dbxwloop
198#define dbxiloop       cisisxp->dbxiloop
199#define dbxuclos       cisisxp->dbxuclos
200#define dbxewlrc       cisisxp->dbxewlrc
201#define dbxsleep       cisisxp->dbxsleep
202#define dbxopt_ordwr   cisisxp->dbxopt_ordwr
203#define dbxordwr       cisisxp->dbxordwr
204#define bitmask        cisisxp->bitmask
205#define fpc_fd         cisisxp->fpc_fd
206#define fpc_left       cisisxp->fpc_left
207#define fpc_buffer     cisisxp->fpc_buffer
208#define vlex           cisisxp->vlex
209#define nxbsiz         cisisxp->nxbsiz
210#define lxbsiz         cisisxp->lxbsiz
211#define mx1extp        cisisxp->mx1extp
212#define xx1extp        cisisxp->xx1extp
213#define cx1extp        cisisxp->cx1extp
214#define nx12extp       cisisxp->nx12extp
215#define lx12extp       cisisxp->lx12extp
216#define ix1extp        cisisxp->ix1extp
217#define iy0extp        cisisxp->iy0extp
218#define cipnetws       cisisxp->cipnetws
219#define cipmstxl       cisisxp->cipmstxl
220#if BEFORE20000323           /* because some BRM's GCC - ask rpiva */
221#define cistderr       cisisxp->cistderr
222#endif
223#define dbxcipfp       cisisxp->dbxcipfp
224#define dbxcdcip       cisisxp->dbxcdcip
225#define dbxcikey       cisisxp->dbxcikey
226#define dbxcipok       cisisxp->dbxcipok
227#define dbxgikey       cisisxp->dbxgikey
228#define dbxgiext       cisisxp->dbxgiext
229#define dbxgiexn       cisisxp->dbxgiexn
230
231#endif // CISISX_SOURCE
232
233//------------------------- CIREC.C ------------------------------------
234
235  char lastrecread[CIMPL+1];   /* 950724 */
236
237  LONGX recxrefb;           /* recxref() comb */
238  int  recxrefp;           /* recxref() comp */
239  int  recxrefn;           /* recxref() flagnew */
240  int  recxrefm;           /* recxref() flagmod */
241  FFI  recreadl;           /* force recread() mfrl */
242
243#if IFUPDATE
244  LONGX recreadb;           /* force recread() comb = mfbwb */
245  int  recreadp;           /* force recread() comp = mfbwp */
246#endif
247
248  int  recisis0_m;         /* recisis0() init .mst */
249  int  recisis0_s;         /* recisis0() system file type */
250
251#ifndef CISISX_SOURCE
252
253#define lastrecread cisisxp->lastrecread
254#define recxrefb    cisisxp->recxrefb
255#define recxrefp    cisisxp->recxrefp
256#define recxrefn    cisisxp->recxrefn
257#define recxrefm    cisisxp->recxrefm
258#define recreadl    cisisxp->recreadl
259#define recreadb    cisisxp->recreadb
260#define recreadp    cisisxp->recreadp
261#define recisis0_m  cisisxp->recisis0_m
262#define recisis0_s  cisisxp->recisis0_s
263
264#endif // CISISX_SOURCE
265
266//------------------------- CITRM.C ------------------------------------
267
268  int trmifupd;            /* trm IFUPDATE operation */
269
270  off_t lrlrseek;
271  int lrlrsize;
272
273  char lasttrmread[CIMPL+1];   /* 950724 */
274
275#if PC
276  UCHR highv[LE2+1];       /* manca controllo.. if signed */
277#else
278  UCHR highv[LE2+1];       /* manca controllo.. if signed */
279#endif
280
281#ifndef CISISX_SOURCE
282
283#define trmifupd    cisisxp->trmifupd
284#define lrlrseek    cisisxp->lrlrseek
285#define lrlrsize    cisisxp->lrlrsize
286#define lasttrmread cisisxp->lasttrmread
287#define highv       cisisxp->highv
288
289#define cntread     cisisxp->xcntread
290#define invsetup    cisisxp->xinvsetup
291#define noderead    cisisxp->xnoderead
292#define leafread    cisisxp->xleafread
293
294#endif // CISISX_SOURCE
295
296//------------------------- CIIFL.C ------------------------------------
297
298  int ciiflfix;
299  int ciiflfim;                 /* key %8ld w/ ciiflfix */
300  int ifl_balan;   /* Faz balanceamento da arvore */
301
302#ifndef CISISX_SOURCE
303
304#define ciiflfix cisisxp->ciiflfix
305#define ciiflfim cisisxp->ciiflfim
306#define ifl_balan cisisxp->ifl_balan
307
308#endif // CISISX_SOURCE
309
310//------------------------- CIUTL.C ------------------------------------
311
312  UBYTE sfldchr;
313  int loaduct0;            /* last char (zero) is not loaded */
314
315#ifndef CISISX_SOURCE
316
317#define sfldchr  cisisxp->sfldchr
318#define loaduct0 cisisxp->loaduct0
319
320#endif // CISISX_SOURCE
321
322/* --------------------------------------------------------------------- */
323
324  CISISX (unsigned char *parm_isisactab=(unsigned char *)NULL,
325          unsigned char *parm_isisuctab=(unsigned char *)NULL,
326          int *parm_NXPAGESp=(int *)NULL);
327
328  ~CISISX (void);
329
330
331  void xfatal(char *msg);
332
333#if MULTI
334  int xdbxcinet(char *dbnamp);
335#endif
336
337  int xdbxilock(DBXSTRU *dbxp,
338                char *mdbnp,
339                char *typ);
340
341  void xdbxinit(void);
342
343  DBXSTRU *xdbxstorp(char *dbnamp);
344
345  DBXSTRU *xdbxsrchp(char *dbnamp);
346
347  int xdbxopen(char *gidbnp,
348               char *dbname,
349               char *extp);
350
351  int xdbxopenw(char *gidbnp,
352                char *dbname,
353                char *extp,
354                int  *opnp,
355                int  *opwp,
356                char *errmsgp);
357
358  char *xdbxopenc(char *gidbnp,
359                  char *filnamp,
360                  int *opnp,
361                  int *opwp,
362                  char *errmsgp,
363                  int xcreate = 0,
364                  int xappend = 0);
365
366  void xdbxciset(void);
367
368  char *xdbxcipar(char *gidbnp,
369                  char *argkey,
370                  char argchar);
371
372#if GIPAR
373  char *xdbxgipar(char *gidbnp,
374                  char *gikeyp,
375                  int *namlenp,
376                  int *extlenp);
377#endif
378
379#if RECGIZM
380  void xgizflush(VGIZPSTRU *vgizmap);
381#endif
382
383#if RECDECO
384  void xdecflush(VDECPSTRU *vdecmap);
385#endif
386
387  char *xloadfile(char *gidbnp,
388                  char  at,
389                  char *atp,
390                  char *areap,
391                  LONGX asize,
392                  char lf2x);
393
394  char *xloadstw(char *gidbnp,
395                 char *atp,
396                 char *areap,
397                 LONGX  asize,
398                 int  *nstws);
399
400  char *xdbxtmpnm(char *dirtmp,
401                  int strip,
402                  char *filnamp);
403
404  int xrecisis0(char *dbnamp);
405
406#if IFUPDATE
407 void xrecreset(char *dbnp,
408                LONGX  mfn1,
409                LONGX  mfn2,
410                RECSTRU *xrecp,
411                LONGX  parmtell);
412#endif
413
414
415  int     xcntread(DBXSTRU *dbxp,
416                   int *ifpopen,
417                   char *ifpname,
418                   int *firstcnli);
419
420  void    xinvsetup(UCHR *dbnamp,
421                    LONGX  loadn0x,
422                    LONGX  loadl0x,
423                    LONGX  loadpst);
424
425  N0STRU *xnoderead(INVMAP *invp,
426                    int     treecase,
427                    int     level,
428                    PUNT    punt);
429
430  L0STRU *xleafread(UCHR   *lbufp,
431                    INVMAP *invp,
432                    int     treecase,
433                    PUNT    punt,
434                    int     lxx);
435
436#if !LIND
437  IFPSTRU *xpostread(UCHR   *xbufp,
438                     INVMAP *invp,
439                     PUNT    xblk,
440                     int     lxx);
441#else
442  IFPSTRU *xpostread(UCHR   *xbufp,
443                     INVMAP *invp,
444                     off_t   addr,
445                     unsigned int toread,
446                     int     lxx);
447#endif
448
449
450  ISO_2709 * getISO_2709(void);
451  DBXSTRU  * getDBXSTRU(char *dbnamep);
452
453#ifndef CISISX_SOURCE
454#define dbxcinet                cisisxp->xdbxcinet        // external use
455#define dbxilock                cisisxp->xdbxilock        // external use
456#define dbxinit                 cisisxp->xdbxinit         // external use
457#define dbxstorp                cisisxp->xdbxstorp        // external use
458#define dbxsrchp                cisisxp->xdbxsrchp        // external use
459#define dbxopen                 cisisxp->xdbxopen         // external use
460#define dbxopenw                cisisxp->xdbxopenw        // external use
461#define dbxopenc                cisisxp->xdbxopenc        // external use
462
463#define fatal                   cisisxp->xfatal           // external use
464
465#define dbxciset                cisisxp->xdbxciset        // external use
466#define dbxcipar                cisisxp->xdbxcipar        // external use
467#define dbxgipar                cisisxp->xdbxgipar        // external use
468#define gizflush                cisisxp->xgizflush        // external use
469#define decflush                cisisxp->xdecflush        // external use
470#define loadfile                cisisxp->xloadfile        // external use
471#define loadstw                 cisisxp->xloadstw         // external use
472#define dbxtmpnm                cisisxp->xdbxtmpnm        // external use
473#define recisis0                cisisxp->xrecisis0        // external use
474#define recreset                cisisxp->xrecreset        // external use
475#define postread                cisisxp->xpostread        // external use
476
477#endif // CISISX_SOURCE
478};
479
480
481#endif // CICPP
482
483#endif  // CISISX_HPP
Note: See TracBrowser for help on using the browser.