Esempio n. 1
0
void Dict::set(const char *key, int val)
{
    int index, len;
    
    index = _index(key);
    if (index == -1) {
        len = _length();
        
        values = (int*) realloc(values, sizeof(int) * (len + 1));
        values[len] = NULL;
        
        counts = (int*) realloc(counts, sizeof(int) * (len + 1));
        counts[len - 1] = 0;
        counts[len] = NULL;
        
        keys = (const char**) realloc(keys, sizeof(const char*) * (len + 1));
        keys[len - 1] = key;
        keys[len] = NULL;
        
        index = len - 1;
    }
    
    // extend array
    values[index] = val;
    counts[index]++;
}
Esempio n. 2
0
static obj_ptr _map_find(obj_ptr args, obj_ptr env)
{
    int     ct = _length(args);
    obj_ptr map, key, res;

    if (ct < 2 || ct > 3)
        return MKERROR_STRING(MKSTRING("Syntax: (map-find map key [default])"));

    map = CAR(args);
    if (NMAPP(map))
        return MKERROR(MKSTRING("Expected a map in first arg to map-find"), map);


    key = CADR(args);

    res = map_find(&MAP(map), key);
    if (!res)
    {
        if (ct == 3)
            return CADDR(args);
        else
            return MKERROR(MKSTRING("Key not found."), key);
    }

    return res;
}
Esempio n. 3
0
void _reverse(char s1[], char s2[]) {
    uint32_t i, j;
    uint32_t len = _length(s1);

    for (i = 0, j = len - 1; i < len; i++, j--) {
        s2[i] = s1[j];
    }
}
Esempio n. 4
0
void od(const void *data, size_t data_len, uint8_t width, uint16_t flags)
{
    char address_format[5];
    uint8_t date_length = _length(flags);
    char bytes_format[_log10(date_length) + 7];

    if (data_len == 0) {
        return;
    }

    _address_format(address_format, flags);
    _bytes_format(bytes_format, flags);

    if (width == 0) {
        width = OD_WIDTH_DEFAULT;
    }

    if (width < date_length) {
        width = 1;
    }
    else {
        width = (width / date_length);
    }

    if (data_len % date_length) {
        data_len = (data_len / date_length) + 1;
    }
    else {
        data_len = data_len / date_length;
    }

    if ((flags & OD_FLAGS_ADDRESS_MASK) != OD_FLAGS_ADDRESS_NONE) {
        printf(address_format, 0);
    }

    for (size_t i = 0; i < data_len; i++) {
        _print_date(data, i, bytes_format, date_length, flags);

        if ((((i + 1) % width) == 0) || i == (data_len - 1)) {
            printf("\n");

            if (i != (data_len - 1)) {
                if ((flags & OD_FLAGS_ADDRESS_MASK) != OD_FLAGS_ADDRESS_NONE) {
                    printf(address_format, date_length * (i + 1));
                }
            }
        }
    }
}
Esempio n. 5
0
struct ls_object *lsrt_builtin_length(int argc, struct ls_object *args[],
                                      struct ls_object *freelist[])
{
  struct ls_object *obj;
  int n;

  UNUSED_ARGUMENT(freelist);
  lsrt_check_args_count(1, 1, argc);

  n = _length(args[0]);
  if (n == -1)
    lsrt_error("(Argument 1) LIST expected");

  obj = lsrt_new_object(ls_t_number);
  lso_number_set(obj, n);
  return obj;
}
Esempio n. 6
0
struct ls_object *lsrt_builtin_listref(int argc, struct ls_object *args[],
                                      struct ls_object *freelist[])
{
  struct ls_object *it;
  int len, idx;

  UNUSED_ARGUMENT(freelist);
  lsrt_check_args_count(2, 2, argc);
  lsrt_number_p(args[1]);

  len = _length(args[0]);
  if (len == -1)
    lsrt_error("(Argument 1) LIST expected");

  idx = lso_simplenumber_get(args[1]);
  if (idx < 0 || idx >= len)
    lsrt_error("(Argument 2) out of range: %d", idx);

  for (it = args[0]; idx > 0; --idx) {
    it = lso_pair_cdr(it);
  }

  return lso_pair_car(it);
}
Esempio n. 7
0
_imageGadget::_imageGadget( _optValue<_coord> x , _optValue<_coord> y , _bitmap img , _optValue<_length> width , _optValue<_length> height , _style&& style ) :
    _gadget( _gadgetType::imagegadget , x , y , width.isValid() ? _length(width) : img.getWidth() , height.isValid() ? _length(height) : img.getHeight() , (_bitmap&&)img , (_style&&)style )
{
    // Register Event-Handler
    this->setInternalEventHandler( onDraw , make_callback( &_imageGadget::refreshHandler ) );
}