home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cslio205.zip
/
INCLUDE
/
CSTBASE.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-01-21
|
5KB
|
151 lines
/***********************************************************************
CSDB Library, Free Evaluation Version 2.0.5
Release: January 22th 1997
Header file of the TBASE class.
Database class for records with a fixed length.
Copyright(c) 1994-1997
ComBits
The Netherlands
***********************************************************************/
#ifndef __CSTBASE_H
#define __CSTBASE_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cspage.h"
class TBASE: public PAGE
{
protected:
U16 lenrec;
U16 recpage;
U16 rec_foot;
U16 len_rec_plus_foot;
S32 NUMREC;
S32 lrco;
S32 wrco;
S32 rrco;
S32 cur_rec;
protected:
void check_rec(S32 l);
S32 r2p(S32 rec) { return (1+(rec-1)/recpage); }
U16 oinp(S32 rec) { return (((U16 )((rec-1)%recpage))*len_rec_plus_foot); }
virtual int check_id(U32 id);
virtual void set_id(void);
void init_defaults(void);
void init_vars(void);
void vars2head(void);
void head2vars(void);
public:
//////////////////////// Compatibility function ////////////////////////
void speed_option_121(void) { smallest_page(); }
////////////////////////////////////////////////////////////////////////////////
//////////////////////// ////////////////////////////
//////////////////////// P U B L I C ////////////////////////////
//////////////////////// ////////////////////////////
////////////////////////////////////////////////////////////////////////////////
public:
TBASE(void);
virtual
~TBASE(void);
//////////////////////// Definition //////////////////////////////////////////
/* Inherited
void page_size(U16 length);
U16 page_size(void) ;
*/
void smallest_page(void) { recpage=1; }
int define(csCHAR *name,U16 reclen);
//////////////////////// Open & Close ////////////////////////////////////////
int open(csCHAR *name,S16 kb=32);
int open(void) { return already_open(); }
int close(void);
int save(void);
//////////////////////// Locate, Read & Writes records ///////////////////////
csCHAR *locate_rec(S32 rec) { lrco++; return load_page(r2p(rec))+oinp(rec); }
csCHAR *locate_rec_d(S32 rec) { lrco++; return load_page_d(r2p(rec))+oinp(rec); }
csCHAR *locate_rec_l(S32 rec) { lrco++; return load_page_l(r2p(rec))+oinp(rec); }
csCHAR *locate_rec_ld(S32 rec) { lrco++; return load_page_ld(r2p(rec))+oinp(rec); }
void locate_double(S32 rec1,void *&d1,S32 rec2,void *&d2);
void locate_double_d(S32 rec1,void *&d1,S32 rec2,void *&d2);
void read_rec( S32 rec, void *d);
void write_rec( S32 rec, void *d);
//////////////////////// Add Records /////////////////////////////////////////
S32 append_rec(void *data);
S32 append_rec(void);
////////////////////////// Deleting ////////////////////////////////////////////
void set_delet(S32 r,int tf);
void undelet(void *d) { *((csCHAR *)d+lengthrec())=0; }
void delet(void *d) { *((csCHAR *)d+lengthrec())=1; }
int is_delet(void *d) { return *((csCHAR *)d+lengthrec()); }
int is_delet(S32 l) { return is_delet(locate_rec(l)); }
void delet(S32 r) { set_delet(r,TRUE); }
void undelet(S32 r ) { set_delet(r,FALSE); }
//////////////////////// Number of Records ///////////////////////////////////
S32 numrec(void) { return NUMREC; }
void set_numrec(S32 n){ NUMREC=n; set_num_page(r2p(n)); }
void dec_numrec(void ) { NUMREC--; }
////////////////////////// Record Length ///////////////////////////////////////
U16 lengthrec(void) { return lenrec; }
//////////////////////// Report Writing //////////////////////////////////////
int report(csCHAR *name,int sub=1);
void report(FILE *fipo,int sub);
////////////////////////// Current /////////////////////////////////////////////
S32 set_current(S32 rec);
S32 current(void) { return cur_rec; }
S32 skip(S32 delta) { S32 l=current(); return (set_current(l+delta)-l); }
S32 next(S32 delta) { return skip(delta); }
S32 prev(S32 delta) { return -skip(-delta); }
////////////////////////// Miscellaneous ///////////////////////////////////////
/* Inherited
int background(void)
*/
int pack(void);
// int zap(void);
void info(void);
int empty(void);
virtual int class_ID(void) { return CS_CLID_TBASE; }
};
#endif