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 >
Text File  |  1989-08-31  |  3KB  |  75 lines

  1. /*    Copyright (c) 1989 Citadel    */
  2. /*       All Rights Reserved        */
  3.  
  4. /* #ident    "btree_.h    1.1 - 89/07/03" */
  5.  
  6. #ifndef BTREE_H_        /* prevent multiple includes */
  7. #define BTREE_H_
  8.  
  9. #define DEBUG
  10.  
  11. #include <bool.h>
  12. #include "btree.h"
  13.  
  14. int        bt_alloc(/* btree_t *btp */);
  15. #define        bt_blksize(BTP)    ((offsetof(btnode_t, key_p) +        \
  16.                 ((BTP)->bthdr.m - 1) * (BTP)->bthdr.keysize) + \
  17.                 ((BTP)->bthdr.m * sizeof(bpos_t)))
  18. void        bt_free(/* btree_t *btp */);
  19. int        bt_grow(/* btree_t *btp, bttuple_t *bttuple_p */);
  20. int        bt_search(/* btree_t *btp, void *buf */);
  21. int        bt_shrink(/* btree_t *btp, bpos_t newroot */);
  22. bool        bt_valid(/* btree_t *btp */);
  23.  
  24. btnode_t *    bt_ndalloc(/* btree_t *btp */);
  25. int        bt_ndcopy(/* btree_t *btp, btnode_t *tbtnp, btnode_t *sbtnp */);
  26. int        bt_nddelkey(/* btree_t *btp, btnode_t *btnp, size_t kn */);
  27. void        bt_ndfree(/* btnode_t *btnp */);
  28. int        bt_ndfuse(/* btree_t *btp, btnode_t *lbtnp, btnode_t *rbtnp,
  29.                         btnode_t *pbtnp, size_t pkn */);
  30. int        bt_ndget(/* btree_t *btp, bpos_t node, btnode_t *btnp */);
  31. void        bt_ndinit(/* btree_t *btp, btnode_t *btnp */);
  32. int        bt_ndinskey(/* btree_t *btp, btnode_t *btnp, size_t kn,
  33.                         bttuple_t *bttuple_p */);
  34. #define        bt_ndmax(BTP)    ((size_t)((BTP)->bthdr.m - 1))
  35. #define        bt_ndmin(BTP)    ((size_t)((((BTP)->bthdr.m + 1) / 2) - 1))
  36. int        bt_ndput(/* btree_t *btp, bpos_t node, btnode_t *btnp */);
  37. int        bt_ndsearch(/* btree_t *btp, btnode_t *btnp, void *buf,
  38.                             size_t *kn_p */);
  39. int        bt_ndshift(/* btree_t *btp, btnode_t *lbtnp,
  40.             btnode_t *rbtnp, btnode_t *pbtnp, size_t pkn */);
  41. int        bt_ndsplit(/* btree_t *btp, bpos_t node, btnode_t *btnp,
  42.                 btnode_t *rbtnp, bttuple_t *bttuple_p */);
  43.  
  44. #define        bt_kychild_p(BTNP,N)    ((bpos_t *)((char *)(BTNP)->child_p\
  45.                     + (((size_t)(N)) * sizeof(size_t))))
  46. #define        bt_kykey_p(BTP,BTNP,N)    ((void *)((char *)(BTNP)->key_p\
  47.                     + ((((size_t)(N)) - 1)\
  48.                     * (BTP)->bthdr.keysize)))
  49. int        bt_kymvleft(/* btree_t *btp, btnode_t *lbtnp,
  50.                         btnode_t *rbtnp, size_t nm */);
  51. int        bt_kymvright(/* btree_t *btp, btnode_t *lbtnp,
  52.                         btnode_t *rbtnp, size_t nm */);
  53. int        bt_kyread(/* btree_t *btp, btnode_t *btnp,
  54.                     size_t kn, bttuple_t *bttuple_p */);
  55. int        bt_kyshift(/* btree_t *btp, btnode_t *btnp,
  56.                             size_t kn, int ns */);
  57. int        bt_kywrite(/* btree_t *btp, btnode_t *btnp,
  58.                     size_t kn, bttuple_t *bttuple_p */);
  59.  
  60. void        bt_dgbtree(/* btree_t *btp */);
  61. void        bt_dgnode(/* btree_t *btp, btnode_t *btnp */);
  62. void        bt_dgtuple(/* btree_t *btp, bttuple_t *bttuple_p */);
  63.  
  64. /* btree open types */
  65. #define BT_READ        ("r")
  66. #define BT_RDWR        ("r+")
  67.  
  68. #ifdef DEBUG
  69. #define    BTEPRINT    {fprintf(stderr, "btree error line %d of %s.  errno = %d.\n", __LINE__, __FILE__, errno);}
  70. #else
  71. #define BTEPRINT
  72. #endif
  73.  
  74. #endif        /* #ifndef BTREE_H_ */
  75.