Cache-utLRU
view release on metacpan or search on metacpan
MODULE = Cache::utLRU PACKAGE = Cache::utLRU
PROTOTYPES: DISABLE
#################################################################
Cache*
new(char* CLASS, int size = 0)
CODE:
{
if (size <= 0) {
size = CACHE_DEFAULT_SIZE;
}
RETVAL = cache_build(aTHX_ size);
if (!RETVAL) {
croak("could not create cache");
}
}
OUTPUT: RETVAL
int
size(Cache* cache)
CODE:
{
RETVAL = cache_size(aTHX_ cache);
}
OUTPUT: RETVAL
int
capacity(Cache* cache)
CODE:
{
RETVAL = cache_capacity(aTHX_ cache);
}
OUTPUT: RETVAL
void
clear(Cache* cache)
CODE:
{
cache_clear(aTHX_ cache);
}
void
add(Cache* cache, SV* key, SV* val)
CODE:
{
if (!key || !SvOK(key) || !SvPOK(key)) {
croak("add key argument must be a string");
}
if (!val || !SvOK(val)) {
croak("add value argument must be an actual value");
}
if (!cache_add(aTHX_ cache, key, val)) {
croak("could not add element to cache");
}
}
void
find(Cache* cache, SV* key)
PPCODE:
{
/* We use PPCODE because XS mortalizes the return value */
if (!key || !SvOK(key) || !SvPOK(key)) {
croak("find key argument must be a string");
}
ST(0) = cache_find(aTHX_ cache, key);
XSRETURN(1);
}
void
visit(Cache* cache, SV* cb)
CODE:
{
if (!cb || !SvOK(cb) || !SvROK(cb) || SvTYPE(SvRV(cb)) != SVt_PVCV) {
croak("visit cb argument must be a coderef");
}
cache_iterate(aTHX_ cache, cache_visit, cb);
}
( run in 2.796 seconds using v1.01-cache-2.11-cpan-71847e10f99 )