google-protobuf 3.17.0 → 3.23.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/ext/google/protobuf_c/convert.c +128 -116
  3. data/ext/google/protobuf_c/convert.h +12 -9
  4. data/ext/google/protobuf_c/defs.c +235 -1529
  5. data/ext/google/protobuf_c/defs.h +19 -19
  6. data/ext/google/protobuf_c/extconf.rb +12 -6
  7. data/ext/google/protobuf_c/map.c +108 -110
  8. data/ext/google/protobuf_c/map.h +7 -7
  9. data/ext/google/protobuf_c/message.c +456 -343
  10. data/ext/google/protobuf_c/message.h +22 -19
  11. data/ext/google/protobuf_c/protobuf.c +78 -56
  12. data/ext/google/protobuf_c/protobuf.h +16 -9
  13. data/ext/google/protobuf_c/repeated_field.c +85 -85
  14. data/ext/google/protobuf_c/repeated_field.h +6 -5
  15. data/ext/google/protobuf_c/ruby-upb.c +11806 -6746
  16. data/ext/google/protobuf_c/ruby-upb.h +10860 -3532
  17. data/ext/google/protobuf_c/third_party/utf8_range/LICENSE +22 -0
  18. data/ext/google/protobuf_c/third_party/utf8_range/naive.c +92 -0
  19. data/ext/google/protobuf_c/third_party/utf8_range/range2-neon.c +157 -0
  20. data/ext/google/protobuf_c/third_party/utf8_range/range2-sse.c +170 -0
  21. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.h +21 -0
  22. data/ext/google/protobuf_c/wrap_memcpy.c +4 -3
  23. data/lib/google/protobuf/any_pb.rb +24 -5
  24. data/lib/google/protobuf/api_pb.rb +27 -23
  25. data/lib/google/protobuf/descriptor_dsl.rb +465 -0
  26. data/lib/google/protobuf/descriptor_pb.rb +75 -0
  27. data/lib/google/protobuf/duration_pb.rb +24 -5
  28. data/lib/google/protobuf/empty_pb.rb +24 -3
  29. data/lib/google/protobuf/field_mask_pb.rb +24 -4
  30. data/lib/google/protobuf/message_exts.rb +7 -2
  31. data/lib/google/protobuf/plugin_pb.rb +47 -0
  32. data/lib/google/protobuf/repeated_field.rb +15 -2
  33. data/lib/google/protobuf/source_context_pb.rb +24 -4
  34. data/lib/google/protobuf/struct_pb.rb +24 -20
  35. data/lib/google/protobuf/timestamp_pb.rb +24 -5
  36. data/lib/google/protobuf/type_pb.rb +27 -68
  37. data/lib/google/protobuf/well_known_types.rb +12 -2
  38. data/lib/google/protobuf/wrappers_pb.rb +24 -28
  39. data/lib/google/protobuf.rb +5 -73
  40. metadata +17 -36
  41. data/ext/google/protobuf_c/third_party/wyhash/wyhash.h +0 -145
  42. data/tests/basic.rb +0 -604
  43. data/tests/generated_code_test.rb +0 -23
  44. data/tests/stress.rb +0 -38
@@ -34,17 +34,16 @@
34
34
  #include "defs.h"
35
35
  #include "message.h"
36
36
  #include "protobuf.h"
37
- #include "third_party/wyhash/wyhash.h"
38
37
 
39
38
  // -----------------------------------------------------------------------------
40
39
  // Repeated field container type.
41
40
  // -----------------------------------------------------------------------------
42
41
 
43
42
  typedef struct {
44
- const upb_array *array; // Can get as mutable when non-frozen.
43
+ const upb_Array* array; // Can get as mutable when non-frozen.
45
44
  TypeInfo type_info;
46
45
  VALUE type_class; // To GC-root the msgdef/enumdef in type_info.
47
- VALUE arena; // To GC-root the upb_array.
46
+ VALUE arena; // To GC-root the upb_Array.
48
47
  } RepeatedField;
49
48
 
50
49
  VALUE cRepeatedField;
@@ -56,9 +55,9 @@ static void RepeatedField_mark(void* _self) {
56
55
  }
57
56
 
58
57
  const rb_data_type_t RepeatedField_type = {
59
- "Google::Protobuf::RepeatedField",
60
- { RepeatedField_mark, RUBY_DEFAULT_FREE, NULL },
61
- .flags = RUBY_TYPED_FREE_IMMEDIATELY,
58
+ "Google::Protobuf::RepeatedField",
59
+ {RepeatedField_mark, RUBY_DEFAULT_FREE, NULL},
60
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY,
62
61
  };
63
62
 
64
63
  static RepeatedField* ruby_to_RepeatedField(VALUE _self) {
@@ -67,9 +66,9 @@ static RepeatedField* ruby_to_RepeatedField(VALUE _self) {
67
66
  return self;
68
67
  }
69
68
 
70
- static upb_array *RepeatedField_GetMutable(VALUE _self) {
69
+ static upb_Array* RepeatedField_GetMutable(VALUE _self) {
71
70
  rb_check_frozen(_self);
72
- return (upb_array*)ruby_to_RepeatedField(_self)->array;
71
+ return (upb_Array*)ruby_to_RepeatedField(_self)->array;
73
72
  }
74
73
 
75
74
  VALUE RepeatedField_alloc(VALUE klass) {
@@ -80,7 +79,7 @@ VALUE RepeatedField_alloc(VALUE klass) {
80
79
  return TypedData_Wrap_Struct(klass, &RepeatedField_type, self);
81
80
  }
82
81
 
83
- VALUE RepeatedField_GetRubyWrapper(upb_array* array, TypeInfo type_info,
82
+ VALUE RepeatedField_GetRubyWrapper(upb_Array* array, TypeInfo type_info,
84
83
  VALUE arena) {
85
84
  PBRUBY_ASSERT(array);
86
85
  VALUE val = ObjectCache_Get(array);
@@ -93,7 +92,7 @@ VALUE RepeatedField_GetRubyWrapper(upb_array* array, TypeInfo type_info,
93
92
  self->array = array;
94
93
  self->arena = arena;
95
94
  self->type_info = type_info;
96
- if (self->type_info.type == UPB_TYPE_MESSAGE) {
95
+ if (self->type_info.type == kUpb_CType_Message) {
97
96
  self->type_class = Descriptor_DefToClass(type_info.def.msgdef);
98
97
  }
99
98
  }
@@ -106,24 +105,24 @@ VALUE RepeatedField_GetRubyWrapper(upb_array* array, TypeInfo type_info,
106
105
 
107
106
  static VALUE RepeatedField_new_this_type(RepeatedField* from) {
108
107
  VALUE arena_rb = Arena_new();
109
- upb_array *array = upb_array_new(Arena_get(arena_rb), from->type_info.type);
108
+ upb_Array* array = upb_Array_New(Arena_get(arena_rb), from->type_info.type);
110
109
  VALUE ret = RepeatedField_GetRubyWrapper(array, from->type_info, arena_rb);
111
110
  PBRUBY_ASSERT(ruby_to_RepeatedField(ret)->type_class == from->type_class);
112
111
  return ret;
113
112
  }
114
113
 
115
- void RepeatedField_Inspect(StringBuilder* b, const upb_array* array,
114
+ void RepeatedField_Inspect(StringBuilder* b, const upb_Array* array,
116
115
  TypeInfo info) {
117
116
  bool first = true;
118
117
  StringBuilder_Printf(b, "[");
119
- size_t n = array ? upb_array_size(array) : 0;
118
+ size_t n = array ? upb_Array_Size(array) : 0;
120
119
  for (size_t i = 0; i < n; i++) {
121
120
  if (first) {
122
121
  first = false;
123
122
  } else {
124
123
  StringBuilder_Printf(b, ", ");
125
124
  }
126
- StringBuilder_PrintMsgval(b, upb_array_get(array, i), info);
125
+ StringBuilder_PrintMsgval(b, upb_Array_Get(array, i), info);
127
126
  }
128
127
  StringBuilder_Printf(b, "]");
129
128
  }
@@ -133,23 +132,24 @@ VALUE RepeatedField_deep_copy(VALUE _self) {
133
132
  VALUE new_rptfield = RepeatedField_new_this_type(self);
134
133
  RepeatedField* new_self = ruby_to_RepeatedField(new_rptfield);
135
134
  VALUE arena_rb = new_self->arena;
136
- upb_array *new_array = RepeatedField_GetMutable(new_rptfield);
137
- upb_arena *arena = Arena_get(arena_rb);
138
- size_t elements = upb_array_size(self->array);
135
+ upb_Array* new_array = RepeatedField_GetMutable(new_rptfield);
136
+ upb_Arena* arena = Arena_get(arena_rb);
137
+ size_t elements = upb_Array_Size(self->array);
139
138
 
140
- upb_array_resize(new_array, elements, arena);
139
+ upb_Array_Resize(new_array, elements, arena);
141
140
 
142
- size_t size = upb_array_size(self->array);
141
+ size_t size = upb_Array_Size(self->array);
143
142
  for (size_t i = 0; i < size; i++) {
144
- upb_msgval msgval = upb_array_get(self->array, i);
145
- upb_msgval copy = Msgval_DeepCopy(msgval, self->type_info, arena);
146
- upb_array_set(new_array, i, copy);
143
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
144
+ upb_MessageValue copy = Msgval_DeepCopy(msgval, self->type_info, arena);
145
+ upb_Array_Set(new_array, i, copy);
147
146
  }
148
147
 
149
148
  return new_rptfield;
150
149
  }
151
150
 
152
- const upb_array* RepeatedField_GetUpbArray(VALUE val, const upb_fielddef *field) {
151
+ const upb_Array* RepeatedField_GetUpbArray(VALUE val, const upb_FieldDef* field,
152
+ upb_Arena* arena) {
153
153
  RepeatedField* self;
154
154
  TypeInfo type_info = TypeInfo_get(field);
155
155
 
@@ -167,22 +167,23 @@ const upb_array* RepeatedField_GetUpbArray(VALUE val, const upb_fielddef *field)
167
167
  rb_raise(cTypeError, "Repeated field array has wrong message/enum class");
168
168
  }
169
169
 
170
+ Arena_fuse(self->arena, arena);
170
171
  return self->array;
171
172
  }
172
173
 
173
174
  static int index_position(VALUE _index, RepeatedField* repeated_field) {
174
175
  int index = NUM2INT(_index);
175
- if (index < 0) index += upb_array_size(repeated_field->array);
176
+ if (index < 0) index += upb_Array_Size(repeated_field->array);
176
177
  return index;
177
178
  }
178
179
 
179
180
  static VALUE RepeatedField_subarray(RepeatedField* self, long beg, long len) {
180
- size_t size = upb_array_size(self->array);
181
+ size_t size = upb_Array_Size(self->array);
181
182
  VALUE ary = rb_ary_new2(size);
182
183
  long i;
183
184
 
184
185
  for (i = beg; i < beg + len; i++) {
185
- upb_msgval msgval = upb_array_get(self->array, i);
186
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
186
187
  VALUE elem = Convert_UpbToRuby(msgval, self->type_info, self->arena);
187
188
  rb_ary_push(ary, elem);
188
189
  }
@@ -199,18 +200,17 @@ static VALUE RepeatedField_subarray(RepeatedField* self, long beg, long len) {
199
200
  */
200
201
  static VALUE RepeatedField_each(VALUE _self) {
201
202
  RepeatedField* self = ruby_to_RepeatedField(_self);
202
- int size = upb_array_size(self->array);
203
+ int size = upb_Array_Size(self->array);
203
204
  int i;
204
205
 
205
206
  for (i = 0; i < size; i++) {
206
- upb_msgval msgval = upb_array_get(self->array, i);
207
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
207
208
  VALUE val = Convert_UpbToRuby(msgval, self->type_info, self->arena);
208
209
  rb_yield(val);
209
210
  }
210
211
  return _self;
211
212
  }
212
213
 
213
-
214
214
  /*
215
215
  * call-seq:
216
216
  * RepeatedField.[](index) => value
@@ -219,20 +219,20 @@ static VALUE RepeatedField_each(VALUE _self) {
219
219
  */
220
220
  static VALUE RepeatedField_index(int argc, VALUE* argv, VALUE _self) {
221
221
  RepeatedField* self = ruby_to_RepeatedField(_self);
222
- long size = upb_array_size(self->array);
222
+ long size = upb_Array_Size(self->array);
223
223
 
224
224
  VALUE arg = argv[0];
225
225
  long beg, len;
226
226
 
227
- if (argc == 1){
227
+ if (argc == 1) {
228
228
  if (FIXNUM_P(arg)) {
229
229
  /* standard case */
230
- upb_msgval msgval;
230
+ upb_MessageValue msgval;
231
231
  int index = index_position(argv[0], self);
232
- if (index < 0 || (size_t)index >= upb_array_size(self->array)) {
232
+ if (index < 0 || (size_t)index >= upb_Array_Size(self->array)) {
233
233
  return Qnil;
234
234
  }
235
- msgval = upb_array_get(self->array, index);
235
+ msgval = upb_Array_Get(self->array, index);
236
236
  return Convert_UpbToRuby(msgval, self->type_info, self->arena);
237
237
  } else {
238
238
  /* check if idx is Range */
@@ -268,10 +268,10 @@ static VALUE RepeatedField_index(int argc, VALUE* argv, VALUE _self) {
268
268
  */
269
269
  static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
270
270
  RepeatedField* self = ruby_to_RepeatedField(_self);
271
- int size = upb_array_size(self->array);
272
- upb_array *array = RepeatedField_GetMutable(_self);
273
- upb_arena *arena = Arena_get(self->arena);
274
- upb_msgval msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
271
+ int size = upb_Array_Size(self->array);
272
+ upb_Array* array = RepeatedField_GetMutable(_self);
273
+ upb_Arena* arena = Arena_get(self->arena);
274
+ upb_MessageValue msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
275
275
 
276
276
  int index = index_position(_index, self);
277
277
  if (index < 0 || index >= (INT_MAX - 1)) {
@@ -279,17 +279,17 @@ static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
279
279
  }
280
280
 
281
281
  if (index >= size) {
282
- upb_array_resize(array, index + 1, arena);
283
- upb_msgval fill;
282
+ upb_Array_Resize(array, index + 1, arena);
283
+ upb_MessageValue fill;
284
284
  memset(&fill, 0, sizeof(fill));
285
285
  for (int i = size; i < index; i++) {
286
286
  // Fill default values.
287
287
  // TODO(haberman): should this happen at the upb level?
288
- upb_array_set(array, i, fill);
288
+ upb_Array_Set(array, i, fill);
289
289
  }
290
290
  }
291
291
 
292
- upb_array_set(array, index, msgval);
292
+ upb_Array_Set(array, index, msgval);
293
293
  return Qnil;
294
294
  }
295
295
 
@@ -301,13 +301,14 @@ static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
301
301
  */
302
302
  static VALUE RepeatedField_push_vararg(int argc, VALUE* argv, VALUE _self) {
303
303
  RepeatedField* self = ruby_to_RepeatedField(_self);
304
- upb_arena *arena = Arena_get(self->arena);
305
- upb_array *array = RepeatedField_GetMutable(_self);
304
+ upb_Arena* arena = Arena_get(self->arena);
305
+ upb_Array* array = RepeatedField_GetMutable(_self);
306
306
  int i;
307
307
 
308
308
  for (i = 0; i < argc; i++) {
309
- upb_msgval msgval = Convert_RubyToUpb(argv[i], "", self->type_info, arena);
310
- upb_array_append(array, msgval, arena);
309
+ upb_MessageValue msgval =
310
+ Convert_RubyToUpb(argv[i], "", self->type_info, arena);
311
+ upb_Array_Append(array, msgval, arena);
311
312
  }
312
313
 
313
314
  return _self;
@@ -321,11 +322,11 @@ static VALUE RepeatedField_push_vararg(int argc, VALUE* argv, VALUE _self) {
321
322
  */
322
323
  static VALUE RepeatedField_push(VALUE _self, VALUE val) {
323
324
  RepeatedField* self = ruby_to_RepeatedField(_self);
324
- upb_arena *arena = Arena_get(self->arena);
325
- upb_array *array = RepeatedField_GetMutable(_self);
325
+ upb_Arena* arena = Arena_get(self->arena);
326
+ upb_Array* array = RepeatedField_GetMutable(_self);
326
327
 
327
- upb_msgval msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
328
- upb_array_append(array, msgval, arena);
328
+ upb_MessageValue msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
329
+ upb_Array_Append(array, msgval, arena);
329
330
 
330
331
  return _self;
331
332
  }
@@ -335,19 +336,19 @@ static VALUE RepeatedField_push(VALUE _self, VALUE val) {
335
336
  */
336
337
  static VALUE RepeatedField_pop_one(VALUE _self) {
337
338
  RepeatedField* self = ruby_to_RepeatedField(_self);
338
- size_t size = upb_array_size(self->array);
339
- upb_array *array = RepeatedField_GetMutable(_self);
340
- upb_msgval last;
339
+ size_t size = upb_Array_Size(self->array);
340
+ upb_Array* array = RepeatedField_GetMutable(_self);
341
+ upb_MessageValue last;
341
342
  VALUE ret;
342
343
 
343
344
  if (size == 0) {
344
345
  return Qnil;
345
346
  }
346
347
 
347
- last = upb_array_get(self->array, size - 1);
348
+ last = upb_Array_Get(self->array, size - 1);
348
349
  ret = Convert_UpbToRuby(last, self->type_info, self->arena);
349
350
 
350
- upb_array_resize(array, size - 1, Arena_get(self->arena));
351
+ upb_Array_Resize(array, size - 1, Arena_get(self->arena));
351
352
  return ret;
352
353
  }
353
354
 
@@ -359,11 +360,11 @@ static VALUE RepeatedField_pop_one(VALUE _self) {
359
360
  */
360
361
  static VALUE RepeatedField_replace(VALUE _self, VALUE list) {
361
362
  RepeatedField* self = ruby_to_RepeatedField(_self);
362
- upb_array *array = RepeatedField_GetMutable(_self);
363
+ upb_Array* array = RepeatedField_GetMutable(_self);
363
364
  int i;
364
365
 
365
366
  Check_Type(list, T_ARRAY);
366
- upb_array_resize(array, 0, Arena_get(self->arena));
367
+ upb_Array_Resize(array, 0, Arena_get(self->arena));
367
368
 
368
369
  for (i = 0; i < RARRAY_LEN(list); i++) {
369
370
  RepeatedField_push(_self, rb_ary_entry(list, i));
@@ -380,8 +381,8 @@ static VALUE RepeatedField_replace(VALUE _self, VALUE list) {
380
381
  */
381
382
  static VALUE RepeatedField_clear(VALUE _self) {
382
383
  RepeatedField* self = ruby_to_RepeatedField(_self);
383
- upb_array *array = RepeatedField_GetMutable(_self);
384
- upb_array_resize(array, 0, Arena_get(self->arena));
384
+ upb_Array* array = RepeatedField_GetMutable(_self);
385
+ upb_Array_Resize(array, 0, Arena_get(self->arena));
385
386
  return _self;
386
387
  }
387
388
 
@@ -393,7 +394,7 @@ static VALUE RepeatedField_clear(VALUE _self) {
393
394
  */
394
395
  static VALUE RepeatedField_length(VALUE _self) {
395
396
  RepeatedField* self = ruby_to_RepeatedField(_self);
396
- return INT2NUM(upb_array_size(self->array));
397
+ return INT2NUM(upb_Array_Size(self->array));
397
398
  }
398
399
 
399
400
  /*
@@ -407,16 +408,16 @@ static VALUE RepeatedField_dup(VALUE _self) {
407
408
  RepeatedField* self = ruby_to_RepeatedField(_self);
408
409
  VALUE new_rptfield = RepeatedField_new_this_type(self);
409
410
  RepeatedField* new_rptfield_self = ruby_to_RepeatedField(new_rptfield);
410
- upb_array *new_array = RepeatedField_GetMutable(new_rptfield);
411
- upb_arena* arena = Arena_get(new_rptfield_self->arena);
412
- int size = upb_array_size(self->array);
411
+ upb_Array* new_array = RepeatedField_GetMutable(new_rptfield);
412
+ upb_Arena* arena = Arena_get(new_rptfield_self->arena);
413
+ int size = upb_Array_Size(self->array);
413
414
  int i;
414
415
 
415
- upb_arena_fuse(arena, Arena_get(self->arena));
416
+ Arena_fuse(self->arena, arena);
416
417
 
417
418
  for (i = 0; i < size; i++) {
418
- upb_msgval msgval = upb_array_get(self->array, i);
419
- upb_array_append(new_array, msgval, arena);
419
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
420
+ upb_Array_Append(new_array, msgval, arena);
420
421
  }
421
422
 
422
423
  return new_rptfield;
@@ -431,12 +432,12 @@ static VALUE RepeatedField_dup(VALUE _self) {
431
432
  */
432
433
  VALUE RepeatedField_to_ary(VALUE _self) {
433
434
  RepeatedField* self = ruby_to_RepeatedField(_self);
434
- int size = upb_array_size(self->array);
435
+ int size = upb_Array_Size(self->array);
435
436
  VALUE ary = rb_ary_new2(size);
436
437
  int i;
437
438
 
438
439
  for (i = 0; i < size; i++) {
439
- upb_msgval msgval = upb_array_get(self->array, i);
440
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
440
441
  VALUE val = Convert_UpbToRuby(msgval, self->type_info, self->arena);
441
442
  rb_ary_push(ary, val);
442
443
  }
@@ -472,17 +473,17 @@ VALUE RepeatedField_eq(VALUE _self, VALUE _other) {
472
473
 
473
474
  self = ruby_to_RepeatedField(_self);
474
475
  other = ruby_to_RepeatedField(_other);
475
- size_t n = upb_array_size(self->array);
476
+ size_t n = upb_Array_Size(self->array);
476
477
 
477
478
  if (self->type_info.type != other->type_info.type ||
478
479
  self->type_class != other->type_class ||
479
- upb_array_size(other->array) != n) {
480
+ upb_Array_Size(other->array) != n) {
480
481
  return Qfalse;
481
482
  }
482
483
 
483
484
  for (size_t i = 0; i < n; i++) {
484
- upb_msgval val1 = upb_array_get(self->array, i);
485
- upb_msgval val2 = upb_array_get(other->array, i);
485
+ upb_MessageValue val1 = upb_Array_Get(self->array, i);
486
+ upb_MessageValue val2 = upb_Array_Get(other->array, i);
486
487
  if (!Msgval_IsEqual(val1, val2, self->type_info)) {
487
488
  return Qfalse;
488
489
  }
@@ -516,10 +517,10 @@ static VALUE RepeatedField_freeze(VALUE _self) {
516
517
  VALUE RepeatedField_hash(VALUE _self) {
517
518
  RepeatedField* self = ruby_to_RepeatedField(_self);
518
519
  uint64_t hash = 0;
519
- size_t n = upb_array_size(self->array);
520
+ size_t n = upb_Array_Size(self->array);
520
521
 
521
522
  for (size_t i = 0; i < n; i++) {
522
- upb_msgval val = upb_array_get(self->array, i);
523
+ upb_MessageValue val = upb_Array_Get(self->array, i);
523
524
  hash = Msgval_GetHash(val, self->type_info, hash);
524
525
  }
525
526
 
@@ -548,9 +549,10 @@ VALUE RepeatedField_plus(VALUE _self, VALUE list) {
548
549
  RepeatedField* self = ruby_to_RepeatedField(_self);
549
550
  RepeatedField* list_rptfield = ruby_to_RepeatedField(list);
550
551
  RepeatedField* dupped = ruby_to_RepeatedField(dupped_);
551
- upb_array *dupped_array = RepeatedField_GetMutable(dupped_);
552
- upb_arena* arena = Arena_get(dupped->arena);
553
- int size = upb_array_size(list_rptfield->array);
552
+ upb_Array* dupped_array = RepeatedField_GetMutable(dupped_);
553
+ upb_Arena* arena = Arena_get(dupped->arena);
554
+ Arena_fuse(list_rptfield->arena, arena);
555
+ int size = upb_Array_Size(list_rptfield->array);
554
556
  int i;
555
557
 
556
558
  if (self->type_info.type != list_rptfield->type_info.type ||
@@ -560,8 +562,8 @@ VALUE RepeatedField_plus(VALUE _self, VALUE list) {
560
562
  }
561
563
 
562
564
  for (i = 0; i < size; i++) {
563
- upb_msgval msgval = upb_array_get(list_rptfield->array, i);
564
- upb_array_append(dupped_array, msgval, arena);
565
+ upb_MessageValue msgval = upb_Array_Get(list_rptfield->array, i);
566
+ upb_Array_Append(dupped_array, msgval, arena);
565
567
  }
566
568
  } else {
567
569
  rb_raise(rb_eArgError, "Unknown type appending to RepeatedField");
@@ -599,7 +601,7 @@ VALUE RepeatedField_concat(VALUE _self, VALUE list) {
599
601
  */
600
602
  VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
601
603
  RepeatedField* self = ruby_to_RepeatedField(_self);
602
- upb_arena *arena;
604
+ upb_Arena* arena;
603
605
  VALUE ary = Qnil;
604
606
 
605
607
  self->arena = Arena_new();
@@ -610,7 +612,7 @@ VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
610
612
  }
611
613
 
612
614
  self->type_info = TypeInfo_FromClass(argc, argv, 0, &self->type_class, &ary);
613
- self->array = upb_array_new(arena, self->type_info.type);
615
+ self->array = upb_Array_New(arena, self->type_info.type);
614
616
  ObjectCache_Add(self->array, _self);
615
617
 
616
618
  if (ary != Qnil) {
@@ -625,14 +627,12 @@ VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
625
627
  }
626
628
 
627
629
  void RepeatedField_register(VALUE module) {
628
- VALUE klass = rb_define_class_under(
629
- module, "RepeatedField", rb_cObject);
630
+ VALUE klass = rb_define_class_under(module, "RepeatedField", rb_cObject);
630
631
  rb_define_alloc_func(klass, RepeatedField_alloc);
631
632
  rb_gc_register_address(&cRepeatedField);
632
633
  cRepeatedField = klass;
633
634
 
634
- rb_define_method(klass, "initialize",
635
- RepeatedField_init, -1);
635
+ rb_define_method(klass, "initialize", RepeatedField_init, -1);
636
636
  rb_define_method(klass, "each", RepeatedField_each, 0);
637
637
  rb_define_method(klass, "[]", RepeatedField_index, -1);
638
638
  rb_define_method(klass, "at", RepeatedField_index, -1);
@@ -36,18 +36,19 @@
36
36
  #include "protobuf.h"
37
37
  #include "ruby-upb.h"
38
38
 
39
- // Returns a Ruby wrapper object for the given upb_array, which will be created
39
+ // Returns a Ruby wrapper object for the given upb_Array, which will be created
40
40
  // if one does not exist already.
41
- VALUE RepeatedField_GetRubyWrapper(upb_array* msg, TypeInfo type_info,
41
+ VALUE RepeatedField_GetRubyWrapper(upb_Array* msg, TypeInfo type_info,
42
42
  VALUE arena);
43
43
 
44
- // Gets the underlying upb_array for this Ruby RepeatedField object, which must
44
+ // Gets the underlying upb_Array for this Ruby RepeatedField object, which must
45
45
  // have a type that matches |f|. If this is not a repeated field or the type
46
46
  // doesn't match, raises an exception.
47
- const upb_array* RepeatedField_GetUpbArray(VALUE value, const upb_fielddef* f);
47
+ const upb_Array* RepeatedField_GetUpbArray(VALUE value, const upb_FieldDef* f,
48
+ upb_Arena* arena);
48
49
 
49
50
  // Implements #inspect for this repeated field by appending its contents to |b|.
50
- void RepeatedField_Inspect(StringBuilder* b, const upb_array* array,
51
+ void RepeatedField_Inspect(StringBuilder* b, const upb_Array* array,
51
52
  TypeInfo info);
52
53
 
53
54
  // Returns a deep copy of this RepeatedField object.