102#include <config_auto.h>
105#include "allheaders.h"
111l_amapCreate(l_int32 keytype)
115 if (keytype != L_INT_TYPE && keytype != L_UINT_TYPE &&
116 keytype != L_FLOAT_TYPE)
117 return (L_AMAP *)ERROR_PTR(
"invalid keytype", __func__, NULL);
119 m = (L_AMAP *)LEPT_CALLOC(1,
sizeof(L_AMAP));
120 m->keytype = keytype;
128 return l_rbtreeLookup(m, key);
132l_amapInsert(L_AMAP *m,
136 l_rbtreeInsert(m, key, value);
140l_amapDelete(L_AMAP *m,
143 l_rbtreeDelete(m, key);
147l_amapDestroy(L_AMAP **pm)
153l_amapGetFirst(L_AMAP *m)
155 return l_rbtreeGetFirst(m);
159l_amapGetNext(L_AMAP_NODE *n)
161 return l_rbtreeGetNext(n);
165l_amapGetLast(L_AMAP *m)
167 return l_rbtreeGetLast(m);
171l_amapGetPrev(L_AMAP_NODE *n)
173 return l_rbtreeGetPrev(n);
179 return l_rbtreeGetCount(m);
187l_asetCreate(l_int32 keytype)
191 if (keytype != L_INT_TYPE && keytype != L_UINT_TYPE &&
192 keytype != L_FLOAT_TYPE)
193 return (L_ASET *)ERROR_PTR(
"invalid keytype", __func__, NULL);
195 s = (L_ASET *)LEPT_CALLOC(1,
sizeof(L_ASET));
196 s->keytype = keytype;
210 return l_rbtreeLookup(s, key);
214l_asetInsert(L_ASET *s,
220 l_rbtreeInsert(s, key, value);
224l_asetDelete(L_ASET *s,
227 l_rbtreeDelete(s, key);
231l_asetDestroy(L_ASET **ps)
237l_asetGetFirst(L_ASET *s)
239 return l_rbtreeGetFirst(s);
243l_asetGetNext(L_ASET_NODE *n)
245 return l_rbtreeGetNext(n);
249l_asetGetLast(L_ASET *s)
251 return l_rbtreeGetLast(s);
255l_asetGetPrev(L_ASET_NODE *n)
257 return l_rbtreeGetPrev(n);
263 return l_rbtreeGetCount(s);