Newer
Older
ubixfs-2 / btree.h
#ifndef BTREE_H
#define BTREE_H

#include "btree_types.h" // integer definitions
#include "btree_vfs.h"   // bTreeVFS class
#include "btree_key.h"   // bTree key functions

class bTree {
 protected:
  compareKeyFunc compareKeys;
  copyKeyProc    copyKey;
  keySizeFunc    keySize;
  bTreeInfo    * info;
  bTreeVFS     * vfs;
  bool           memoryTree;
  bool           treeChanged; 

  int      align(int);
  uPtr     allocEmptyNode(void);
  int      calcSize(TbNode *);
  void     deAllocNode(TbNode *);
  uPtr     deleteEntry(uPtr, void *, uPtr);
  void     discardPage(TbNode *);
  bool     fetchFirstKey(uPtr, bTreeSearch &);
  bool     fetchLastKey(uPtr, bTreeSearch &);
  uPtr     findLeafNode(uPtr, void *);
  void     freeAll(void);
  void     freePage(uPtr);
  uPtr     getAddress(TbNode *);
  uPtr     getFirstDeleted(void);
  uInt32   getNodes(void);
  uInt32   getHeight(void);
  uInt32   getKeys(void);
  void     getNeighbor(TbNode *, TbNode **, int &);
  uPtr     getRoot(void);

  bool     isNull(uPtr);

  TbNode * loadPage(uPtr);
  void     loadSuperBlock(void);
  void     savePage(TbNode *);
  void     saveSuperBlock(void);

  void     setFirstDeleted(uPtr);
  void     setNodes(uInt32);
  void     setHeight(uInt32);
  void     setKeys(uInt32);
  void     setLeft(uPtr, uPtr);
  void     setParent(uPtr, uPtr);
  void     setRight(uPtr, uPtr);
  void     setNull(uPtr &);
  void     setRoot(uPtr);

  
 public:
           bTree(const char *, uInt32, treeTypes, bTreeVFS *);
           bTree(const char *, bTreeVFS *);
  uInt32   GetKeyCount(void);
  uInt32   GetTreeHeight(void);
  void     InstallUserFunctions(compareKeyFunc, copyKeyProc, keySizeFunc);  
  virtual ~bTree(void);
};// bTree

#endif