/ lib / pandas / _libs / khash.pxd
khash.pxd
  1  from cpython.object cimport PyObject
  2  from numpy cimport (
  3      complex64_t,
  4      complex128_t,
  5      float32_t,
  6      float64_t,
  7      int8_t,
  8      int16_t,
  9      int32_t,
 10      int64_t,
 11      uint8_t,
 12      uint16_t,
 13      uint32_t,
 14      uint64_t,
 15  )
 16  
 17  
 18  cdef extern from "khash_python.h":
 19      const int KHASH_TRACE_DOMAIN
 20  
 21      ctypedef uint32_t khuint_t
 22      ctypedef khuint_t khiter_t
 23  
 24      ctypedef struct khcomplex128_t:
 25          double real
 26          double imag
 27  
 28      bint are_equivalent_khcomplex128_t \
 29          "kh_complex_hash_equal" (khcomplex128_t a, khcomplex128_t b) nogil
 30  
 31      ctypedef struct khcomplex64_t:
 32          float real
 33          float imag
 34  
 35      bint are_equivalent_khcomplex64_t \
 36          "kh_complex_hash_equal" (khcomplex64_t a, khcomplex64_t b) nogil
 37  
 38      bint are_equivalent_float64_t \
 39          "kh_floats_hash_equal" (float64_t a, float64_t b) nogil
 40  
 41      bint are_equivalent_float32_t \
 42          "kh_floats_hash_equal" (float32_t a, float32_t b) nogil
 43  
 44      uint32_t kh_python_hash_func(object key)
 45      bint kh_python_hash_equal(object a, object b)
 46  
 47      ctypedef struct kh_pymap_t:
 48          khuint_t n_buckets, size, n_occupied, upper_bound
 49          uint32_t *flags
 50          PyObject **keys
 51          size_t *vals
 52  
 53      kh_pymap_t* kh_init_pymap()
 54      void kh_destroy_pymap(kh_pymap_t*)
 55      void kh_clear_pymap(kh_pymap_t*)
 56      khuint_t kh_get_pymap(kh_pymap_t*, PyObject*)
 57      void kh_resize_pymap(kh_pymap_t*, khuint_t)
 58      khuint_t kh_put_pymap(kh_pymap_t*, PyObject*, int*)
 59      void kh_del_pymap(kh_pymap_t*, khuint_t)
 60  
 61      bint kh_exist_pymap(kh_pymap_t*, khiter_t)
 62  
 63      ctypedef struct kh_pyset_t:
 64          khuint_t n_buckets, size, n_occupied, upper_bound
 65          uint32_t *flags
 66          PyObject **keys
 67          size_t *vals
 68  
 69      kh_pyset_t* kh_init_pyset()
 70      void kh_destroy_pyset(kh_pyset_t*)
 71      void kh_clear_pyset(kh_pyset_t*)
 72      khuint_t kh_get_pyset(kh_pyset_t*, PyObject*)
 73      void kh_resize_pyset(kh_pyset_t*, khuint_t)
 74      khuint_t kh_put_pyset(kh_pyset_t*, PyObject*, int*)
 75      void kh_del_pyset(kh_pyset_t*, khuint_t)
 76  
 77      bint kh_exist_pyset(kh_pyset_t*, khiter_t)
 78  
 79      ctypedef char* kh_cstr_t
 80  
 81      ctypedef struct kh_str_t:
 82          khuint_t n_buckets, size, n_occupied, upper_bound
 83          uint32_t *flags
 84          kh_cstr_t *keys
 85          size_t *vals
 86  
 87      kh_str_t* kh_init_str() nogil
 88      void kh_destroy_str(kh_str_t*) nogil
 89      void kh_clear_str(kh_str_t*) nogil
 90      khuint_t kh_get_str(kh_str_t*, kh_cstr_t) nogil
 91      void kh_resize_str(kh_str_t*, khuint_t) nogil
 92      khuint_t kh_put_str(kh_str_t*, kh_cstr_t, int*) nogil
 93      void kh_del_str(kh_str_t*, khuint_t) nogil
 94  
 95      bint kh_exist_str(kh_str_t*, khiter_t) nogil
 96  
 97      ctypedef struct kh_str_starts_t:
 98          kh_str_t *table
 99          int starts[256]
100  
101      kh_str_starts_t* kh_init_str_starts() nogil
102      khuint_t kh_put_str_starts_item(kh_str_starts_t* table, char* key,
103                                      int* ret) nogil
104      khuint_t kh_get_str_starts_item(kh_str_starts_t* table, char* key) nogil
105      void kh_destroy_str_starts(kh_str_starts_t*) nogil
106      void kh_resize_str_starts(kh_str_starts_t*, khuint_t) nogil
107  
108      # sweep factorize
109  
110      ctypedef struct kh_strbox_t:
111          khuint_t n_buckets, size, n_occupied, upper_bound
112          uint32_t *flags
113          kh_cstr_t *keys
114          PyObject **vals
115  
116      kh_strbox_t* kh_init_strbox() nogil
117      void kh_destroy_strbox(kh_strbox_t*) nogil
118      void kh_clear_strbox(kh_strbox_t*) nogil
119      khuint_t kh_get_strbox(kh_strbox_t*, kh_cstr_t) nogil
120      void kh_resize_strbox(kh_strbox_t*, khuint_t) nogil
121      khuint_t kh_put_strbox(kh_strbox_t*, kh_cstr_t, int*) nogil
122      void kh_del_strbox(kh_strbox_t*, khuint_t) nogil
123  
124      bint kh_exist_strbox(kh_strbox_t*, khiter_t) nogil
125  
126      khuint_t kh_needed_n_buckets(khuint_t element_n) nogil
127  
128  
129  include "khash_for_primitive_helper.pxi"