home *** CD-ROM | disk | FTP | other *** search
- /*
- bbcdecl.h
-
- % byte block chain header
-
- OWL 1.1
- Copyright (c) 1988, by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 8/21/88 jmd preened and poked
- 10/17/88 jmd added _arg
- */
-
- typedef struct bblock_struct {
-
- struct bblock_struct *prev;
- struct bblock_struct *next;
-
- char *start; /* pointer to the memory chunk */
-
- unsigned int len; /* used length */
- unsigned int size; /* allocated size */
-
- long row; /* hint */
- unsigned int off; /* offset from "start" (in bytes) to start of current row */
-
- byte attr; /* for text blocks */
-
- } *bblock_type;
-
- typedef struct {
-
- unsigned int esize; /* element size */
- unsigned int bsize; /* block size */
- unsigned int asize; /* minimum alloc size */
-
- bblock_type b;
-
- } bbc_struct, *bbc_type;
-
- typedef struct {
-
- bblock_type b;
- int off;
- char *p;
- long len;
-
- } bbpeek_struct, *bbpeek_type;
-
- extern bbc_type bbc_Open(_arg3(unsigned int, unsigned int, unsigned int));
- extern void bbc_Close(_arg1(bbc_type));
- extern long bbc_work(_arg6(bbc_type, long, char*, char, long, int));
- extern long bbc_Del(_arg3(bbc_type, long, long));
- extern boolean bbc_Attr(_arg4(bbc_type, long, byte, long));
-
- extern bblock_type bblock_open(_arg4(bbc_type, long, bblock_type, byte));
- extern bblock_type bblock_grow(_arg3(bbc_type, bblock_type, long));
- extern bblock_type bblock_split(_arg3(bbc_type, bblock_type, long));
-
- extern bblock_type bblock_rewind(_arg1(bblock_type));
- extern void bblock_close(_arg2(bblock_type, int));
- extern int bbpeek(_arg1(bbpeek_type));
-
- #define BBC_SET FALSE
- #define BBC_INSERT TRUE
- #define BBC_GET 2
-
- #define BBC_SINGLE 0
- #define BBC_BELOW 1
-
- #define bblen(b) ((b)->len)
- #define bboff(b) ((b)->off)
-
- #define bbc_Copy(b, offset, line, len, ins) \
- bbc_work(b, offset, line, 0, len, ins)
-
- #define bbc_Set(b, offset, chr, len, ins) \
- bbc_work(b, offset, NULL, chr, len, ins)
-
- #define bbc_Get(b, offset, buf, len) \
- bbc_work(b, offset, buf, 0, len, BBC_GET)
-
- /* for use when "offset" += n 'ing */
- #define bbadv(b, o, chk) while ((o) >= (b)->len){if((b)==NULL){(chk)=TRUE;break;} else{(o) -= (b)->len; \
- (b)=(b)->next;}}
-
- /* for use only when "offset"++ 'ing */
- #define bbinc(b, o, t) if ((o) >= (b)->len){(b)=(b)->next;(o)=0;(t)=(b)->start;}
-
- #define bblockchk(b, t, e, chk) while ((t) >= (e)){if((b)->next==NULL){ \
- (chk)=TRUE;break;} else{(b)=(b)->next;(t)=(b)->start;(e)=(b)->end;}}
-
-
-