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"