Groonga 3.0.9 Source Code Document
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Macros | Typedefs
khash.h File Reference
#include "mruby.h"
#include <string.h>
Include dependency graph for khash.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define KHASH_DEFAULT_SIZE   32
#define KHASH_MIN_SIZE   8
#define UPPER_BOUND(x)   ((x)>>2|(x)>>1)
#define __ac_isempty(ed_flag, i)   (ed_flag[(i)/4]&__m_empty[(i)%4])
#define __ac_isdel(ed_flag, i)   (ed_flag[(i)/4]&__m_del[(i)%4])
#define __ac_iseither(ed_flag, i)   (ed_flag[(i)/4]&__m_either[(i)%4])
#define khash_power2(v)
#define KHASH_DECLARE(name, khkey_t, khval_t, kh_is_map)
#define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
#define khash_t(name)   kh_##name##_t
#define kh_init_size(name, mrb, size)   kh_init_##name##_size(mrb,size)
#define kh_init(name, mrb)   kh_init_##name(mrb)
#define kh_destroy(name, h)   kh_destroy_##name(h)
#define kh_clear(name, h)   kh_clear_##name(h)
#define kh_resize(name, h, s)   kh_resize_##name(h, s)
#define kh_put(name, h, k)   kh_put_##name(h, k)
#define kh_get(name, h, k)   kh_get_##name(h, k)
#define kh_del(name, h, k)   kh_del_##name(h, k)
#define kh_copy(name, mrb, h)   kh_copy_##name(mrb, h)
#define kh_exist(h, x)   (!__ac_iseither((h)->ed_flags, (x)))
#define kh_key(h, x)   ((h)->keys[x])
#define kh_val(h, x)   ((h)->vals[x])
#define kh_value(h, x)   ((h)->vals[x])
#define kh_begin(h)   (khint_t)(0)
#define kh_end(h)   ((h)->n_buckets)
#define kh_size(h)   ((h)->size)
#define kh_n_buckets(h)   ((h)->n_buckets)
#define kh_int_hash_func(mrb, key)   (khint_t)((key)^((key)<<2)^((key)>>2))
#define kh_int_hash_equal(mrb, a, b)   (a == b)
#define kh_int64_hash_func(mrb, key)   (khint_t)((key)>>33^(key)^(key)<<11)
#define kh_int64_hash_equal(mrb, a, b)   (a == b)
#define kh_str_hash_func(mrb, key)   __ac_X31_hash_string(key)
#define kh_str_hash_equal(mrb, a, b)   (strcmp(a, b) == 0)

Typedefs

typedef uint32_t khint_t
typedef khint_t khiter_t
typedef const char * kh_cstr_t

Macro Definition Documentation

#define __ac_isdel (   ed_flag,
 
)    (ed_flag[(i)/4]&__m_del[(i)%4])

Definition at line 36 of file khash.h.

#define __ac_iseither (   ed_flag,
 
)    (ed_flag[(i)/4]&__m_either[(i)%4])

Definition at line 37 of file khash.h.

#define __ac_isempty (   ed_flag,
 
)    (ed_flag[(i)/4]&__m_empty[(i)%4])

Definition at line 35 of file khash.h.

#define kh_begin (   h)    (khint_t)(0)

Definition at line 233 of file khash.h.

#define kh_clear (   name,
 
)    kh_clear_##name(h)

Definition at line 222 of file khash.h.

#define kh_copy (   name,
  mrb,
 
)    kh_copy_##name(mrb, h)

Definition at line 227 of file khash.h.

#define kh_del (   name,
  h,
 
)    kh_del_##name(h, k)

Definition at line 226 of file khash.h.

#define kh_destroy (   name,
 
)    kh_destroy_##name(h)

Definition at line 221 of file khash.h.

#define kh_end (   h)    ((h)->n_buckets)

Definition at line 234 of file khash.h.

#define kh_exist (   h,
 
)    (!__ac_iseither((h)->ed_flags, (x)))

Definition at line 229 of file khash.h.

#define kh_get (   name,
  h,
 
)    kh_get_##name(h, k)

Definition at line 225 of file khash.h.

#define kh_init (   name,
  mrb 
)    kh_init_##name(mrb)

Definition at line 220 of file khash.h.

#define kh_init_size (   name,
  mrb,
  size 
)    kh_init_##name##_size(mrb,size)

Definition at line 219 of file khash.h.

#define kh_int64_hash_equal (   mrb,
  a,
 
)    (a == b)

Definition at line 241 of file khash.h.

#define kh_int64_hash_func (   mrb,
  key 
)    (khint_t)((key)>>33^(key)^(key)<<11)

Definition at line 240 of file khash.h.

#define kh_int_hash_equal (   mrb,
  a,
 
)    (a == b)

Definition at line 239 of file khash.h.

#define kh_int_hash_func (   mrb,
  key 
)    (khint_t)((key)^((key)<<2)^((key)>>2))

Definition at line 238 of file khash.h.

#define kh_key (   h,
 
)    ((h)->keys[x])

Definition at line 230 of file khash.h.

#define kh_n_buckets (   h)    ((h)->n_buckets)

Definition at line 236 of file khash.h.

#define kh_put (   name,
  h,
 
)    kh_put_##name(h, k)

Definition at line 224 of file khash.h.

#define kh_resize (   name,
  h,
 
)    kh_resize_##name(h, s)

Definition at line 223 of file khash.h.

#define kh_size (   h)    ((h)->size)

Definition at line 235 of file khash.h.

#define kh_str_hash_equal (   mrb,
  a,
 
)    (strcmp(a, b) == 0)

Definition at line 249 of file khash.h.

#define kh_str_hash_func (   mrb,
  key 
)    __ac_X31_hash_string(key)

Definition at line 248 of file khash.h.

#define kh_val (   h,
 
)    ((h)->vals[x])

Definition at line 231 of file khash.h.

#define kh_value (   h,
 
)    ((h)->vals[x])

Definition at line 232 of file khash.h.

#define KHASH_DECLARE (   name,
  khkey_t,
  khval_t,
  kh_is_map 
)
Value:
typedef struct kh_##name { \
khint_t n_buckets; \
khint_t size; \
khint_t n_occupied; \
khint_t upper_bound; \
uint8_t *ed_flags; \
khkey_t *keys; \
khval_t *vals; \
khint_t mask; \
khint_t inc; \
mrb_state *mrb; \
} kh_##name##_t; \
void kh_alloc_##name(kh_##name##_t *h); \
kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size); \
kh_##name##_t *kh_init_##name(mrb_state *mrb); \
void kh_destroy_##name(kh_##name##_t *h); \
void kh_clear_##name(kh_##name##_t *h); \
khint_t kh_get_##name(kh_##name##_t *h, khkey_t key); \
khint_t kh_put_##name(kh_##name##_t *h, khkey_t key); \
void kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets); \
void kh_del_##name(kh_##name##_t *h, khint_t x); \
kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h);

Definition at line 55 of file khash.h.

#define KHASH_DEFAULT_SIZE   32

Definition at line 21 of file khash.h.

#define KHASH_DEFINE (   name,
  khkey_t,
  khval_t,
  kh_is_map,
  __hash_func,
  __hash_equal 
)

Definition at line 96 of file khash.h.

#define KHASH_MIN_SIZE   8

Definition at line 23 of file khash.h.

#define khash_power2 (   v)
Value:
do { \
v--;\
v |= v >> 1;\
v |= v >> 2;\
v |= v >> 4;\
v |= v >> 8;\
v |= v >> 16;\
v++;\
} while (0)

Definition at line 38 of file khash.h.

#define khash_t (   name)    kh_##name##_t

Definition at line 217 of file khash.h.

#define UPPER_BOUND (   x)    ((x)>>2|(x)>>1)

Definition at line 25 of file khash.h.

Typedef Documentation

typedef const char* kh_cstr_t

Definition at line 251 of file khash.h.

typedef uint32_t khint_t

Definition at line 17 of file khash.h.

typedef khint_t khiter_t

Definition at line 18 of file khash.h.