Lines Matching defs:arr
323 static bool decode_reserve(upb_decstate *d, upb_array *arr, int elem) {
324 bool need_realloc = arr->size - arr->len < elem;
325 if (need_realloc && !_upb_array_realloc(arr, arr->len + elem, d->arena)) {
446 upb_array *arr = *arrp;
449 if (!arr) {
451 arr = _upb_array_new(d->arena, type);
452 if (!arr) decode_err(d);
453 *arrp = arr;
456 decode_reserve(d, arr, 1);
463 mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << op, void);
464 arr->len++;
470 UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(upb_strview), void);
471 arr->len++;
477 *UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(void *), upb_msg *) =
479 arr->len++;
496 decode_reserve(d, arr, count);
497 mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
498 arr->len += count;
510 char *out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
515 if (decode_reserve(d, arr, 1)) {
516 out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
518 arr->len++;
861 static bool upb_put_fixedarray(upb_encstate *e, const upb_array *arr,
863 size_t bytes = arr->len * elem_size;
864 const char* data = _upb_array_constptr(arr);
960 const upb_array *arr = *(const upb_array**)field_mem;
963 if (arr == NULL || arr->len == 0) {
969 const ctype *start = _upb_array_constptr(arr); \
970 const ctype *ptr = start + arr->len; \
989 CHK(upb_put_fixedarray(e, arr, sizeof(double), TAG(UPB_WIRE_TYPE_64BIT)));
992 CHK(upb_put_fixedarray(e, arr, sizeof(float), TAG(UPB_WIRE_TYPE_32BIT)));
996 CHK(upb_put_fixedarray(e, arr, sizeof(uint64_t), TAG(UPB_WIRE_TYPE_64BIT)));
1000 CHK(upb_put_fixedarray(e, arr, sizeof(uint32_t), TAG(UPB_WIRE_TYPE_32BIT)));
1018 const upb_strview *start = _upb_array_constptr(arr);
1019 const upb_strview *ptr = start + arr->len;
1029 const void *const*start = _upb_array_constptr(arr);
1030 const void *const*ptr = start + arr->len;
1042 const void *const*start = _upb_array_constptr(arr);
1043 const void *const*ptr = start + arr->len;
1268 upb_array *arr = upb_arena_malloc(a, sizeof(upb_array));
1270 if (!arr) {
1274 arr->data = tag_arrptr(NULL, _upb_fieldtype_to_sizelg2[type]);
1275 arr->len = 0;
1276 arr->size = 0;
1278 return arr;
1281 bool _upb_array_realloc(upb_array *arr, size_t min_size, upb_arena *arena) {
1282 size_t new_size = UPB_MAX(arr->size, 4);
1283 int elem_size_lg2 = arr->data & 7;
1284 size_t old_bytes = arr->size << elem_size_lg2;
1286 void* ptr = _upb_array_ptr(arr);
1298 arr->data = tag_arrptr(ptr, elem_size_lg2);
1299 arr->size = new_size;
1305 upb_array *arr = *arr_ptr;
1306 if (!arr) {
1307 arr = _upb_array_new(arena, type);
1308 if (!arr) return NULL;
1309 *arr_ptr = arr;
1311 return arr;
1314 static bool resize_array(upb_array *arr, size_t size, upb_arena *arena) {
1315 if (size > arr->size && !_upb_array_realloc(arr, size, arena)) {
1319 arr->len = size;
1325 upb_array *arr = getorcreate_array(arr_ptr, type, arena);
1326 return arr && resize_array(arr, size, arena) ? _upb_array_ptr(arr) : NULL;
1331 upb_array *arr = getorcreate_array(arr_ptr, type, arena);
1332 size_t elem = arr->len;
1336 if (!arr || !resize_array(arr, elem + 1, arena)) return false;
1338 data = _upb_array_ptr(arr);
1979 size_t arr_size = max[size_lg2] + 1; /* +1 so arr[max] will fit. */
5326 size_t upb_array_size(const upb_array *arr) {
5327 return arr->len;
5330 upb_msgval upb_array_get(const upb_array *arr, size_t i) {
5332 const char* data = _upb_array_constptr(arr);
5333 int lg2 = arr->data & 7;
5334 UPB_ASSERT(i < arr->len);
5339 void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
5340 char* data = _upb_array_ptr(arr);
5341 int lg2 = arr->data & 7;
5342 UPB_ASSERT(i < arr->len);
5346 bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
5347 if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
5350 arr->len++;
5351 upb_array_set(arr, arr->len - 1, val);
5357 bool upb_array_resize(upb_array *arr, size_t size, upb_arena *arena) {
5358 return _upb_array_realloc(arr, size, arena);