/* * returns the length of the variable */ int v_length(var_t *var) { char tmpsb[64]; switch (var->type) { case V_STR: return strlen(var->v.p.ptr); case V_MAP: return map_length(var); case V_PTR: ltostr(var->v.ap.p, tmpsb); return strlen(tmpsb); case V_INT: ltostr(var->v.i, tmpsb); return strlen(tmpsb); case V_NUM: ftostr(var->v.n, tmpsb); return strlen(tmpsb); case V_ARRAY: return var->v.a.size; case V_REF: return v_length(var->v.ref); } return 1; }
int lrucache_set(LRUCACHE* lrucache, char* key, char* value) { char* k; while (map_length(lrucache->map) >= lrucache->size) { k = queue_peek(lrucache->queue); if (k == NULL) { break; } else { map_remove(lrucache->map, k); } } queue_insert(lrucache->queue, key); return map_set(lrucache->map, key, value); }
int su_map_length(su_state *s, int idx) { return map_length(STK(TOP(idx))->obj.m); }