packages icon
                            BaBiT - Documentation



Very simple implementation of balanced binary tree. 

Features: 

      Pure C language - platform independent 
      No pointers (but offsets) 
      No recursion (except the consistency check function) 
      No hidden data-structures - join-record is nested into the user-record 
 
      All memory allocation/deallocation must be done by the user 
      Record-Record and Key-Record comparison functions must be written
      by the user 



User should:

   * Read the header file (babit.h) and the attached example program
     (babtest.c)
   * Insert connector-record (BabitConnector) into her own record
   * Write compare-functions: one for record-record comparison (BabitCmpFun)
     and one for key-record comparison (BabitFndFun)
   * Create struct BabitControlBlock which is required by all Babit function
     calls
   * Allocate and deallacte records - there are no "hidden" or "shadow"
     structures
   * Have a root for the tree (type BABIT_ROOT)

User can:

   * Predefine offset type (BABIT_OFFSET) to long (default is int).
     Recompile babit.c too!
   * Predefine object type (BABITED_OBJECT) to her own record (default is
     void). See the example in babit.h
   * Predefine object key type (BABIT_KEY) to her own key type (default is
     void).

BaBiT's functions:

   * Initialize the root of the tree (BabitInit)
   * Insert a new record to the tree (BabitInsert)
   * Delete a record from the tree (BabitDelete)
   * Replace a record with an other (with the same key!) (BabitReplace)
   * Find a record by key (BabitFind)
   * Find a record around the specified key (BabitFindEx). See babit.h and
     babtest.c for details!
   * Get the minimum/maximum/middle element of the tree (BabitGetMin)
   * Get the previous/next element of tree (BabitGetNext)
   * Walk the tree pre/in/postorder (BabitWalk)
   * Check the consistency of the tree (BabitCheck)

Changes

   * Version 1.6: BabitFindEx now works correctly, test routine added to
     babtest.c (BabitFindExTest).