コード例 #1
0
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;
}
コード例 #2
0
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);
}