    /* $Id: select.hpp 1.1 1995/02/27 09:33:28 leon Exp leon $
    */

    #ifndef afc_Selection_hpp

    #define afc_Selection_hpp

    #include "entity.h"

    #include <ads/avltree.h>

    #include <ads/adslib.h>

    /**
     ** Izbor gradnikov in hitro iskanje po drevesu AVL
     ** Osnova je funkcija /Select/, ki iz baze Acad in filtra "X" naredi
     ** AVL drevo z imeni gradinikov /name/ in kljuci /key/.
     **/
    class Selection
    {
      AVLtree *root;
      struct ELEMENT
        {
          int number;
          ads_name name;
        };

      typedef void (*InOrder)(ads_name name);

    public:

      Selection();
      virtual ~Selection();
      Select(struct resbuf *xFilter,
             int (*getKey)(struct resbuf *rb, int *key),
             struct resbuf *rb);
      int Insert(int key, ads_name name);
      int Delete(int key);
      int Find(int key, ads_name name);
      void Print();
      void ForAll(void (*func) (ads_name name));

    private:
      static void del(struct ELEMENT *element);
      static int compare(struct ELEMENT *el1, struct ELEMENT *el2);
      static void print(struct ELEMENT *element);
      static void inOrder(struct ELEMENT *element);
    };

    #endif

syntax highlighted by Code2HTML, v. 0.9.1