You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

50 lines
1.1 KiB

from libc.stdint cimport uint64_t
from cymem.cymem cimport Pool
ctypedef uint64_t key_t
cdef struct Cell:
key_t key
void* value
cdef struct MapStruct:
Cell* cells
void* value_for_empty_key
void* value_for_del_key
key_t length
key_t filled
bint is_empty_key_set
bint is_del_key_set
cdef void* map_bulk_get(const MapStruct* map_, const key_t* keys, void** values,
int n) nogil
cdef void* map_get(const MapStruct* map_, const key_t key) nogil
cdef void map_set(Pool mem, MapStruct* map_, key_t key, void* value) except *
cdef void map_init(Pool mem, MapStruct* pmap, size_t length) except *
cdef bint map_iter(const MapStruct* map_, int* i, key_t* key, void** value) nogil
cdef class PreshMap:
cdef MapStruct* c_map
cdef Pool mem
cdef inline void* get(self, key_t key) nogil
cdef void set(self, key_t key, void* value) except *
cdef class PreshMapArray:
cdef Pool mem
cdef MapStruct* maps
cdef size_t length
cdef inline void* get(self, size_t i, key_t key) nogil
cdef void set(self, size_t i, key_t key, void* value) except *