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 compareKey;
  copyKeyProc    copyKey;
  keySizeFunc    keySize;
  bTreeInfo    * info;
  bTreeVFS     * vfs;
  bool           memoryTree;
  bool           treeChanged; 

  int      align(int);
  uPtr     allocEmptyNode(void);
  int      calcSize(TbNode *);
  void     discardPage(TbNode *);
  bool     isNull(uPtr);
  uPtr     getAddress(TbNode *);
  uPtr     getFirstDeleted(void);
  uInt32   getNodes(void);
  uInt32   getHeight(void);
  uInt32   getKeys(void);
  uPtr     getRoot(void);

  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     setRoot(uPtr);
  void     setNull(uPtr &);

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

#endif