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]++; }
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; }
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]; } }
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)); } } } } }
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; }
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); }
_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 ) ); }