home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
CBASE09.ZIP
/
BTREE.ZIP
/
BTREE_.H
< prev
next >
Wrap
Text File
|
1989-08-31
|
3KB
|
75 lines
/* Copyright (c) 1989 Citadel */
/* All Rights Reserved */
/* #ident "btree_.h 1.1 - 89/07/03" */
#ifndef BTREE_H_ /* prevent multiple includes */
#define BTREE_H_
#define DEBUG
#include <bool.h>
#include "btree.h"
int bt_alloc(/* btree_t *btp */);
#define bt_blksize(BTP) ((offsetof(btnode_t, key_p) + \
((BTP)->bthdr.m - 1) * (BTP)->bthdr.keysize) + \
((BTP)->bthdr.m * sizeof(bpos_t)))
void bt_free(/* btree_t *btp */);
int bt_grow(/* btree_t *btp, bttuple_t *bttuple_p */);
int bt_search(/* btree_t *btp, void *buf */);
int bt_shrink(/* btree_t *btp, bpos_t newroot */);
bool bt_valid(/* btree_t *btp */);
btnode_t * bt_ndalloc(/* btree_t *btp */);
int bt_ndcopy(/* btree_t *btp, btnode_t *tbtnp, btnode_t *sbtnp */);
int bt_nddelkey(/* btree_t *btp, btnode_t *btnp, size_t kn */);
void bt_ndfree(/* btnode_t *btnp */);
int bt_ndfuse(/* btree_t *btp, btnode_t *lbtnp, btnode_t *rbtnp,
btnode_t *pbtnp, size_t pkn */);
int bt_ndget(/* btree_t *btp, bpos_t node, btnode_t *btnp */);
void bt_ndinit(/* btree_t *btp, btnode_t *btnp */);
int bt_ndinskey(/* btree_t *btp, btnode_t *btnp, size_t kn,
bttuple_t *bttuple_p */);
#define bt_ndmax(BTP) ((size_t)((BTP)->bthdr.m - 1))
#define bt_ndmin(BTP) ((size_t)((((BTP)->bthdr.m + 1) / 2) - 1))
int bt_ndput(/* btree_t *btp, bpos_t node, btnode_t *btnp */);
int bt_ndsearch(/* btree_t *btp, btnode_t *btnp, void *buf,
size_t *kn_p */);
int bt_ndshift(/* btree_t *btp, btnode_t *lbtnp,
btnode_t *rbtnp, btnode_t *pbtnp, size_t pkn */);
int bt_ndsplit(/* btree_t *btp, bpos_t node, btnode_t *btnp,
btnode_t *rbtnp, bttuple_t *bttuple_p */);
#define bt_kychild_p(BTNP,N) ((bpos_t *)((char *)(BTNP)->child_p\
+ (((size_t)(N)) * sizeof(size_t))))
#define bt_kykey_p(BTP,BTNP,N) ((void *)((char *)(BTNP)->key_p\
+ ((((size_t)(N)) - 1)\
* (BTP)->bthdr.keysize)))
int bt_kymvleft(/* btree_t *btp, btnode_t *lbtnp,
btnode_t *rbtnp, size_t nm */);
int bt_kymvright(/* btree_t *btp, btnode_t *lbtnp,
btnode_t *rbtnp, size_t nm */);
int bt_kyread(/* btree_t *btp, btnode_t *btnp,
size_t kn, bttuple_t *bttuple_p */);
int bt_kyshift(/* btree_t *btp, btnode_t *btnp,
size_t kn, int ns */);
int bt_kywrite(/* btree_t *btp, btnode_t *btnp,
size_t kn, bttuple_t *bttuple_p */);
void bt_dgbtree(/* btree_t *btp */);
void bt_dgnode(/* btree_t *btp, btnode_t *btnp */);
void bt_dgtuple(/* btree_t *btp, bttuple_t *bttuple_p */);
/* btree open types */
#define BT_READ ("r")
#define BT_RDWR ("r+")
#ifdef DEBUG
#define BTEPRINT {fprintf(stderr, "btree error line %d of %s. errno = %d.\n", __LINE__, __FILE__, errno);}
#else
#define BTEPRINT
#endif
#endif /* #ifndef BTREE_H_ */