root/ompi/mca/coll/libnbc/libdict/dict.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * dict.h
   3  *
   4  * Interface for generic access to dictionary library.
   5  * Copyright (C) 2001-2004 Farooq Mela.
   6  *
   7  * $Id: dict.h,v 1.6 2001/11/14 05:21:10 farooq Exp farooq $
   8  */
   9 
  10 #ifndef _DICT_H_
  11 #define _DICT_H_
  12 
  13 #include <stddef.h>
  14 
  15 #define DICT_VERSION_MAJOR              0
  16 #define DICT_VERSION_MINOR              2
  17 #define DICT_VERSION_PATCH              1
  18 
  19 #ifndef __P
  20 # if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) || \
  21         defined(_MSC_VER)
  22 #  define __P(x)        x
  23 # else /* !__STDC__ && !__cplusplus  && !c_plusplus && !_MSC_VER */
  24 #  define __P(x)
  25 # endif
  26 #endif /* !__P */
  27 
  28 #ifndef FALSE
  29 #define FALSE   0
  30 #endif
  31 
  32 #ifndef TRUE
  33 #define TRUE    (!FALSE)
  34 #endif
  35 
  36 #if defined(__cplusplus) || defined(c_plusplus)
  37 # define BEGIN_DECL     extern "C" {
  38 # define END_DECL       }
  39 #else
  40 # define BEGIN_DECL
  41 # define END_DECL
  42 #endif
  43 
  44 BEGIN_DECL
  45 
  46 typedef void *(*dict_malloc_func)(size_t);
  47 typedef void  (*dict_free_func)(void *);
  48 
  49 dict_malloc_func        dict_set_malloc         __P((dict_malloc_func func));
  50 dict_free_func          dict_set_free           __P((dict_free_func func));
  51 
  52 typedef int                     (*dict_cmp_func)        __P((const void *, const void *));
  53 typedef void            (*dict_del_func)        __P((void *));
  54 typedef int                     (*dict_vis_func)        __P((const void *, void *));
  55 typedef unsigned        (*dict_hsh_func)        __P((const void *));
  56 
  57 typedef struct dict                     dict;
  58 typedef struct dict_itor        dict_itor;
  59 
  60 struct dict {
  61         void              *_object;
  62         int                      (*_insert)             __P((void *obj, void *k, void *d, int ow));
  63         int                      (*_probe)              __P((void *obj, void *key, void **dat));
  64         void            *(*_search)             __P((void *obj, const void *k));
  65         int                      (*_remove)             __P((void *obj, const void *key, int del));
  66         void             (*_walk)               __P((void *obj, dict_vis_func func));
  67         unsigned         (*_count)              __P((const void *obj));
  68         void             (*_empty)              __P((void *obj, int del));
  69         void             (*_destroy)    __P((void *obj, int del));
  70         dict_itor       *(*_inew)               __P((void *obj));
  71 };
  72 
  73 #define dict_private(dct)               (dct)->_object
  74 #define dict_insert(dct,k,d,o)  (dct)->_insert((dct)->_object, (k), (d), (o))
  75 #define dict_probe(dct,k,d)             (dct)->_probe((dct)->_object, (k), (d))
  76 #define dict_search(dct,k)              (dct)->_search((dct)->_object, (k))
  77 #define dict_remove(dct,k,del)  (dct)->_remove((dct)->_object, (k), (del))
  78 #define dict_walk(dct,f)                (dct)->_walk((dct)->_object, (f))
  79 #define dict_count(dct)                 (dct)->_count((dct)->_object)
  80 #define dict_empty(dct,d)               (dct)->_empty((dct)->_object, (d))
  81 void dict_destroy __P((dict *dct, int del));
  82 #define dict_itor_new(dct)              (dct)->_inew((dct)->_object)
  83 
  84 struct dict_itor {
  85         void              *_itor;
  86         int                      (*_valid)              __P((const void *itor));
  87         void             (*_invalid)    __P((void *itor));
  88         int                      (*_next)               __P((void *itor));
  89         int                      (*_prev)               __P((void *itor));
  90         int                      (*_nextn)              __P((void *itor, unsigned count));
  91         int                      (*_prevn)              __P((void *itor, unsigned count));
  92         int                      (*_first)              __P((void *itor));
  93         int                      (*_last)               __P((void *itor));
  94         int                      (*_search)             __P((void *itor, const void *key));
  95         const void      *(*_key)                __P((void *itor));
  96         void            *(*_data)               __P((void *itor));
  97         const void      *(*_cdata)              __P((const void *itor));
  98         int                      (*_setdata)    __P((void *itor, void *dat, int del));
  99         int                      (*_remove)             __P((void *itor, int del));
 100         int                      (*_compare)    __P((void *itor1, void *itor2));
 101         void             (*_destroy)    __P((void *itor));
 102 };
 103 
 104 #define dict_itor_private(i)            (i)->_itor
 105 #define dict_itor_valid(i)                      (i)->_valid((i)->_itor)
 106 #define dict_itor_invalidate(i)         (i)->_invalid((i)->_itor)
 107 #define dict_itor_next(i)                       (i)->_next((i)->_itor)
 108 #define dict_itor_prev(i)                       (i)->_prev((i)->_itor)
 109 #define dict_itor_nextn(i,n)            (i)->_nextn((i)->_itor, (n))
 110 #define dict_itor_prevn(i,n)            (i)->_prevn((i)->_itor, (n))
 111 #define dict_itor_first(i)                      (i)->_first((i)->_itor)
 112 #define dict_itor_last(i)                       (i)->_last((i)->_itor)
 113 #define dict_itor_search(i,k)           (i)->_search((i)->_itor, (k))
 114 #define dict_itor_key(i)                        (i)->_key((i)->_itor)
 115 #define dict_itor_data(i)                       (i)->_data((i)->_itor)
 116 #define dict_itor_cdata(i)                      (i)->_cdata((i)->_itor)
 117 #define dict_itor_set_data(i,dat,d)     (i)->_setdata((i)->_itor, (dat), (d))
 118 #define dict_itor_remove(i)                     (i)->_remove((i)->_itor)
 119 void dict_itor_destroy __P((dict_itor *itor));
 120 
 121 int             dict_int_cmp __P((const void *k1, const void *k2));
 122 int             dict_uint_cmp __P((const void *k1, const void *k2));
 123 int             dict_long_cmp __P((const void *k1, const void *k2));
 124 int             dict_ulong_cmp __P((const void *k1, const void *k2));
 125 int             dict_ptr_cmp __P((const void *k1, const void *k2));
 126 int             dict_str_cmp __P((const void *k1, const void *k2));
 127 
 128 END_DECL
 129 
 130 /*#include "hashtable.h"*/
 131 #include "hb_tree.h"
 132 /*#include "pr_tree.h"
 133 #include "rb_tree.h"
 134 #include "sp_tree.h"
 135 #include "tr_tree.h"
 136 #include "wb_tree.h"*/
 137 
 138 #endif /* !_DICT_H_ */

/* [<][>][^][v][top][bottom][index][help] */