mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
|
#include "mdict.h"
|
||
|
#include "memory.h"
|
||
|
#define USEPMA
|
||
|
#ifdef USEPMA
|
||
|
#include "pma.h"
|
||
|
|
||
|
struct mdict {
|
||
|
PMA pma;
|
||
|
};
|
||
|
|
||
|
int mdict_create (MDICT* mdict) {
|
||
|
MDICT result;
|
||
|
int r;
|
||
|
MALLOC(result);
|
||
|
if (result==0) return -1;
|
||
|
r = pma_create(&result->pma);
|
||
|
if (r==0) {
|
||
|
*mdict = result;
|
||
|
}
|
||
|
return r;
|
||
|
}
|
||
|
|
||
|
void mdict_free (MDICT m) {
|
||
|
pma_free(m->pma);
|
||
|
my_free(m);
|
||
|
}
|
||
|
|
||
|
int mdict_n_entries (MDICT m) {
|
||
|
return pma_n_entries(m->pma);
|
||
|
}
|
||
|
|
||
|
|
||
|
/* Returns an error if the key is already present. */
|
||
|
/* The values returned should not be modified. */
|
||
|
/* May damage the cursor. */
|
||
|
int mdict_insert (MDICT m, bytevec key, ITEMLEN keylen, bytevec data, ITEMLEN datalen) {
|
||
|
return pma_insert(m->pma, key, keylen, data, datalen);
|
||
|
}
|
||
|
/* This returns an error if the key is NOT present. */
|
||
|
int mdict_replace (MDICT, bytevec key, ITEMLEN keylen, bytevec data, ITEMLEN datalen);
|
||
|
/* This returns an error if the key is NOT present. */
|
||
|
int mdict_delete (MDICT m, bytevec key, ITEMLEN keylen) {
|
||
|
return pma_delete(m->pma, key, keylen);
|
||
|
}
|
||
|
|
||
|
/* Exposes internals of the MDICT by returning a pointer to the guts.
|
||
|
* Don't modify the returned data. Don't free it. */
|
||
|
int mdict_lookup (MDICT m, bytevec key, ITEMLEN keylen, bytevec*data, ITEMLEN *datalen) {
|
||
|
return pma_lookup(m->pma, key, keylen, data, datalen);
|
||
|
}
|
||
|
|
||
|
|
||
|
int mdict_random_pick(MDICT m, bytevec *key, ITEMLEN *keylen, bytevec *data, ITEMLEN *datalen) {
|
||
|
return pma_random_pick(m->pma, key, keylen, data, datalen);
|
||
|
}
|
||
|
|
||
|
void mdict_iterate (MDICT m, void(*f)(bytevec,ITEMLEN,bytevec,ITEMLEN, void*), void*v) {
|
||
|
pma_iterate(m->pma, f, v);
|
||
|
}
|
||
|
|
||
|
|
||
|
#else
|
||
|
foo
|
||
|
#endif
|