root/include/linux/btree-type.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. BTREE_FN
  2. BTREE_FN

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #define __BTREE_TP(pfx, type, sfx)      pfx ## type ## sfx
   3 #define _BTREE_TP(pfx, type, sfx)       __BTREE_TP(pfx, type, sfx)
   4 #define BTREE_TP(pfx)                   _BTREE_TP(pfx, BTREE_TYPE_SUFFIX,)
   5 #define BTREE_FN(name)                  BTREE_TP(btree_ ## name)
   6 #define BTREE_TYPE_HEAD                 BTREE_TP(struct btree_head)
   7 #define VISITOR_FN                      BTREE_TP(visitor)
   8 #define VISITOR_FN_T                    _BTREE_TP(visitor, BTREE_TYPE_SUFFIX, _t)
   9 
  10 BTREE_TYPE_HEAD {
  11         struct btree_head h;
  12 };
  13 
  14 static inline void BTREE_FN(init_mempool)(BTREE_TYPE_HEAD *head,
  15                                           mempool_t *mempool)
  16 {
  17         btree_init_mempool(&head->h, mempool);
  18 }
  19 
  20 static inline int BTREE_FN(init)(BTREE_TYPE_HEAD *head)
  21 {
  22         return btree_init(&head->h);
  23 }
  24 
  25 static inline void BTREE_FN(destroy)(BTREE_TYPE_HEAD *head)
  26 {
  27         btree_destroy(&head->h);
  28 }
  29 
  30 static inline int BTREE_FN(merge)(BTREE_TYPE_HEAD *target,
  31                                   BTREE_TYPE_HEAD *victim,
  32                                   gfp_t gfp)
  33 {
  34         return btree_merge(&target->h, &victim->h, BTREE_TYPE_GEO, gfp);
  35 }
  36 
  37 #if (BITS_PER_LONG > BTREE_TYPE_BITS)
  38 static inline void *BTREE_FN(lookup)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
  39 {
  40         unsigned long _key = key;
  41         return btree_lookup(&head->h, BTREE_TYPE_GEO, &_key);
  42 }
  43 
  44 static inline int BTREE_FN(insert)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
  45                                    void *val, gfp_t gfp)
  46 {
  47         unsigned long _key = key;
  48         return btree_insert(&head->h, BTREE_TYPE_GEO, &_key, val, gfp);
  49 }
  50 
  51 static inline int BTREE_FN(update)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
  52                 void *val)
  53 {
  54         unsigned long _key = key;
  55         return btree_update(&head->h, BTREE_TYPE_GEO, &_key, val);
  56 }
  57 
  58 static inline void *BTREE_FN(remove)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
  59 {
  60         unsigned long _key = key;
  61         return btree_remove(&head->h, BTREE_TYPE_GEO, &_key);
  62 }
  63 
  64 static inline void *BTREE_FN(last)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
  65 {
  66         unsigned long _key;
  67         void *val = btree_last(&head->h, BTREE_TYPE_GEO, &_key);
  68         if (val)
  69                 *key = _key;
  70         return val;
  71 }
  72 
  73 static inline void *BTREE_FN(get_prev)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
  74 {
  75         unsigned long _key = *key;
  76         void *val = btree_get_prev(&head->h, BTREE_TYPE_GEO, &_key);
  77         if (val)
  78                 *key = _key;
  79         return val;
  80 }
  81 #else
  82 static inline void *BTREE_FN(lookup)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
  83 {
  84         return btree_lookup(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key);
  85 }
  86 
  87 static inline int BTREE_FN(insert)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
  88                            void *val, gfp_t gfp)
  89 {
  90         return btree_insert(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key,
  91                             val, gfp);
  92 }
  93 
  94 static inline int BTREE_FN(update)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
  95                 void *val)
  96 {
  97         return btree_update(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key, val);
  98 }
  99 
 100 static inline void *BTREE_FN(remove)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
 101 {
 102         return btree_remove(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key);
 103 }
 104 
 105 static inline void *BTREE_FN(last)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 106 {
 107         return btree_last(&head->h, BTREE_TYPE_GEO, (unsigned long *)key);
 108 }
 109 
 110 static inline void *BTREE_FN(get_prev)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 111 {
 112         return btree_get_prev(&head->h, BTREE_TYPE_GEO, (unsigned long *)key);
 113 }
 114 #endif
 115 
 116 void VISITOR_FN(void *elem, unsigned long opaque, unsigned long *key,
 117                 size_t index, void *__func);
 118 
 119 typedef void (*VISITOR_FN_T)(void *elem, unsigned long opaque,
 120                              BTREE_KEYTYPE key, size_t index);
 121 
 122 static inline size_t BTREE_FN(visitor)(BTREE_TYPE_HEAD *head,
 123                                        unsigned long opaque,
 124                                        VISITOR_FN_T func2)
 125 {
 126         return btree_visitor(&head->h, BTREE_TYPE_GEO, opaque,
 127                              visitorl, func2);
 128 }
 129 
 130 static inline size_t BTREE_FN(grim_visitor)(BTREE_TYPE_HEAD *head,
 131                                             unsigned long opaque,
 132                                             VISITOR_FN_T func2)
 133 {
 134         return btree_grim_visitor(&head->h, BTREE_TYPE_GEO, opaque,
 135                                   visitorl, func2);
 136 }
 137 
 138 #undef VISITOR_FN
 139 #undef VISITOR_FN_T
 140 #undef __BTREE_TP
 141 #undef _BTREE_TP
 142 #undef BTREE_TP
 143 #undef BTREE_FN
 144 #undef BTREE_TYPE_HEAD
 145 #undef BTREE_TYPE_SUFFIX
 146 #undef BTREE_TYPE_GEO
 147 #undef BTREE_KEYTYPE
 148 #undef BTREE_TYPE_BITS

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