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