static bool unpack_list(serial_context *ser_cont, uint32_t size, as_val **value) { if (VERBOSE) { ver("%sList, %u element(s)", indent(ser_cont), size); } as_arraylist *list = as_arraylist_new(size, 8); if (list == NULL) { err("Error while allocating list"); return false; } ser_cont->indent += 2; for (uint32_t i = 0; i < size; ++i) { as_val *element; if (!UNPACK_VALUE(ser_cont, &element)) { err("Error while unpacking list element"); as_arraylist_destroy(list); return false; } if (as_arraylist_set(list, i, element) != AS_ARRAYLIST_OK) { err("Error while populating list"); as_arraylist_destroy(list); return false; } } ser_cont->indent -= 2; *value = (as_val *)list; return true; }
static int _as_arraylist_list_set(as_list * l, const uint32_t i, as_val * v) { return as_arraylist_set((as_arraylist *) l, i, v); }