예제 #1
0
파일: var.c 프로젝트: bihai/SmallBASIC
/*
 * 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;
}
예제 #2
0
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);
}
예제 #3
0
int su_map_length(su_state *s, int idx) {
	return map_length(STK(TOP(idx))->obj.m);
}