35 #include "ha0storage.ic"
51 ha_storage_node_t* node;
56 fold =
ut_fold_binary(static_cast<const unsigned char*>(data), data_len);
59 node->data_len == data_len && memcmp(node->data, data, data_len) == 0
98 ha_storage_node_t* node;
99 const void* data_copy;
103 data_copy = ha_storage_get(storage, data, data_len);
104 if (data_copy != NULL) {
121 sizeof(ha_storage_node_t) + data_len);
123 node = (ha_storage_node_t*) raw;
124 data_copy = (byte*) raw +
sizeof(*node);
126 memcpy((byte*) raw +
sizeof(*node), data, data_len);
128 node->data_len = data_len;
129 node->data = data_copy;
133 fold =
ut_fold_binary(static_cast<const unsigned char *>(data), data_len);
147 #ifdef UNIV_COMPILE_TEST_FUNCS
155 const void* stored[256];
160 for (i = 0; i < 256; i++) {
162 memset(buf, i,
sizeof(buf));
168 for (i = 255; i >= 0; i--) {
170 memset(buf, i,
sizeof(buf));
173 if (p != stored[i]) {
175 fprintf(stderr,
"ha_storage_put() returned %p "
176 "instead of %p, i=%d\n", p, stored[i], i);
181 fprintf(stderr,
"all ok\n");
#define ha_storage_put(storage, data, data_len)
UNIV_INTERN const void * ha_storage_put_memlim(ha_storage_t *storage, const void *data, ulint data_len, ulint memlim)
struct ha_storage_struct ha_storage_t
#define HASH_INSERT(TYPE, NAME, TABLE, FOLD, DATA)
UNIV_INLINE ha_storage_t * ha_storage_create(ulint initial_heap_bytes, ulint initial_hash_cells)
UNIV_INLINE void * mem_heap_alloc(mem_heap_t *heap, ulint n)
UNIV_INLINE ulint ut_fold_binary(const byte *str, ulint len) __attribute__((pure))
#define HASH_SEARCH(NAME, TABLE, FOLD, TYPE, DATA, ASSERTION, TEST)
UNIV_INLINE void ha_storage_free(ha_storage_t *storage)
UNIV_INLINE ulint ha_storage_get_size(const ha_storage_t *storage)