google-protobuf 3.17.2 → 3.23.4

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 +105 -109
  8. data/ext/google/protobuf_c/map.h +7 -8
  9. data/ext/google/protobuf_c/message.c +447 -342
  10. data/ext/google/protobuf_c/message.h +22 -19
  11. data/ext/google/protobuf_c/protobuf.c +71 -59
  12. data/ext/google/protobuf_c/protobuf.h +13 -10
  13. data/ext/google/protobuf_c/repeated_field.c +83 -85
  14. data/ext/google/protobuf_c/repeated_field.h +6 -6
  15. data/ext/google/protobuf_c/ruby-upb.c +11760 -6644
  16. data/ext/google/protobuf_c/ruby-upb.h +10765 -3396
  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 -611
  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,24 +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,
153
- upb_arena* arena) {
151
+ const upb_Array* RepeatedField_GetUpbArray(VALUE val, const upb_FieldDef* field,
152
+ upb_Arena* arena) {
154
153
  RepeatedField* self;
155
154
  TypeInfo type_info = TypeInfo_get(field);
156
155
 
@@ -174,17 +173,17 @@ const upb_array* RepeatedField_GetUpbArray(VALUE val, const upb_fielddef* field,
174
173
 
175
174
  static int index_position(VALUE _index, RepeatedField* repeated_field) {
176
175
  int index = NUM2INT(_index);
177
- if (index < 0) index += upb_array_size(repeated_field->array);
176
+ if (index < 0) index += upb_Array_Size(repeated_field->array);
178
177
  return index;
179
178
  }
180
179
 
181
180
  static VALUE RepeatedField_subarray(RepeatedField* self, long beg, long len) {
182
- size_t size = upb_array_size(self->array);
181
+ size_t size = upb_Array_Size(self->array);
183
182
  VALUE ary = rb_ary_new2(size);
184
183
  long i;
185
184
 
186
185
  for (i = beg; i < beg + len; i++) {
187
- upb_msgval msgval = upb_array_get(self->array, i);
186
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
188
187
  VALUE elem = Convert_UpbToRuby(msgval, self->type_info, self->arena);
189
188
  rb_ary_push(ary, elem);
190
189
  }
@@ -201,18 +200,17 @@ static VALUE RepeatedField_subarray(RepeatedField* self, long beg, long len) {
201
200
  */
202
201
  static VALUE RepeatedField_each(VALUE _self) {
203
202
  RepeatedField* self = ruby_to_RepeatedField(_self);
204
- int size = upb_array_size(self->array);
203
+ int size = upb_Array_Size(self->array);
205
204
  int i;
206
205
 
207
206
  for (i = 0; i < size; i++) {
208
- upb_msgval msgval = upb_array_get(self->array, i);
207
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
209
208
  VALUE val = Convert_UpbToRuby(msgval, self->type_info, self->arena);
210
209
  rb_yield(val);
211
210
  }
212
211
  return _self;
213
212
  }
214
213
 
215
-
216
214
  /*
217
215
  * call-seq:
218
216
  * RepeatedField.[](index) => value
@@ -221,20 +219,20 @@ static VALUE RepeatedField_each(VALUE _self) {
221
219
  */
222
220
  static VALUE RepeatedField_index(int argc, VALUE* argv, VALUE _self) {
223
221
  RepeatedField* self = ruby_to_RepeatedField(_self);
224
- long size = upb_array_size(self->array);
222
+ long size = upb_Array_Size(self->array);
225
223
 
226
224
  VALUE arg = argv[0];
227
225
  long beg, len;
228
226
 
229
- if (argc == 1){
227
+ if (argc == 1) {
230
228
  if (FIXNUM_P(arg)) {
231
229
  /* standard case */
232
- upb_msgval msgval;
230
+ upb_MessageValue msgval;
233
231
  int index = index_position(argv[0], self);
234
- if (index < 0 || (size_t)index >= upb_array_size(self->array)) {
232
+ if (index < 0 || (size_t)index >= upb_Array_Size(self->array)) {
235
233
  return Qnil;
236
234
  }
237
- msgval = upb_array_get(self->array, index);
235
+ msgval = upb_Array_Get(self->array, index);
238
236
  return Convert_UpbToRuby(msgval, self->type_info, self->arena);
239
237
  } else {
240
238
  /* check if idx is Range */
@@ -270,10 +268,10 @@ static VALUE RepeatedField_index(int argc, VALUE* argv, VALUE _self) {
270
268
  */
271
269
  static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
272
270
  RepeatedField* self = ruby_to_RepeatedField(_self);
273
- int size = upb_array_size(self->array);
274
- upb_array *array = RepeatedField_GetMutable(_self);
275
- upb_arena *arena = Arena_get(self->arena);
276
- 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);
277
275
 
278
276
  int index = index_position(_index, self);
279
277
  if (index < 0 || index >= (INT_MAX - 1)) {
@@ -281,17 +279,17 @@ static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
281
279
  }
282
280
 
283
281
  if (index >= size) {
284
- upb_array_resize(array, index + 1, arena);
285
- upb_msgval fill;
282
+ upb_Array_Resize(array, index + 1, arena);
283
+ upb_MessageValue fill;
286
284
  memset(&fill, 0, sizeof(fill));
287
285
  for (int i = size; i < index; i++) {
288
286
  // Fill default values.
289
287
  // TODO(haberman): should this happen at the upb level?
290
- upb_array_set(array, i, fill);
288
+ upb_Array_Set(array, i, fill);
291
289
  }
292
290
  }
293
291
 
294
- upb_array_set(array, index, msgval);
292
+ upb_Array_Set(array, index, msgval);
295
293
  return Qnil;
296
294
  }
297
295
 
@@ -303,13 +301,14 @@ static VALUE RepeatedField_index_set(VALUE _self, VALUE _index, VALUE val) {
303
301
  */
304
302
  static VALUE RepeatedField_push_vararg(int argc, VALUE* argv, VALUE _self) {
305
303
  RepeatedField* self = ruby_to_RepeatedField(_self);
306
- upb_arena *arena = Arena_get(self->arena);
307
- upb_array *array = RepeatedField_GetMutable(_self);
304
+ upb_Arena* arena = Arena_get(self->arena);
305
+ upb_Array* array = RepeatedField_GetMutable(_self);
308
306
  int i;
309
307
 
310
308
  for (i = 0; i < argc; i++) {
311
- upb_msgval msgval = Convert_RubyToUpb(argv[i], "", self->type_info, arena);
312
- 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);
313
312
  }
314
313
 
315
314
  return _self;
@@ -323,11 +322,11 @@ static VALUE RepeatedField_push_vararg(int argc, VALUE* argv, VALUE _self) {
323
322
  */
324
323
  static VALUE RepeatedField_push(VALUE _self, VALUE val) {
325
324
  RepeatedField* self = ruby_to_RepeatedField(_self);
326
- upb_arena *arena = Arena_get(self->arena);
327
- upb_array *array = RepeatedField_GetMutable(_self);
325
+ upb_Arena* arena = Arena_get(self->arena);
326
+ upb_Array* array = RepeatedField_GetMutable(_self);
328
327
 
329
- upb_msgval msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
330
- upb_array_append(array, msgval, arena);
328
+ upb_MessageValue msgval = Convert_RubyToUpb(val, "", self->type_info, arena);
329
+ upb_Array_Append(array, msgval, arena);
331
330
 
332
331
  return _self;
333
332
  }
@@ -337,19 +336,19 @@ static VALUE RepeatedField_push(VALUE _self, VALUE val) {
337
336
  */
338
337
  static VALUE RepeatedField_pop_one(VALUE _self) {
339
338
  RepeatedField* self = ruby_to_RepeatedField(_self);
340
- size_t size = upb_array_size(self->array);
341
- upb_array *array = RepeatedField_GetMutable(_self);
342
- upb_msgval last;
339
+ size_t size = upb_Array_Size(self->array);
340
+ upb_Array* array = RepeatedField_GetMutable(_self);
341
+ upb_MessageValue last;
343
342
  VALUE ret;
344
343
 
345
344
  if (size == 0) {
346
345
  return Qnil;
347
346
  }
348
347
 
349
- last = upb_array_get(self->array, size - 1);
348
+ last = upb_Array_Get(self->array, size - 1);
350
349
  ret = Convert_UpbToRuby(last, self->type_info, self->arena);
351
350
 
352
- upb_array_resize(array, size - 1, Arena_get(self->arena));
351
+ upb_Array_Resize(array, size - 1, Arena_get(self->arena));
353
352
  return ret;
354
353
  }
355
354
 
@@ -361,11 +360,11 @@ static VALUE RepeatedField_pop_one(VALUE _self) {
361
360
  */
362
361
  static VALUE RepeatedField_replace(VALUE _self, VALUE list) {
363
362
  RepeatedField* self = ruby_to_RepeatedField(_self);
364
- upb_array *array = RepeatedField_GetMutable(_self);
363
+ upb_Array* array = RepeatedField_GetMutable(_self);
365
364
  int i;
366
365
 
367
366
  Check_Type(list, T_ARRAY);
368
- upb_array_resize(array, 0, Arena_get(self->arena));
367
+ upb_Array_Resize(array, 0, Arena_get(self->arena));
369
368
 
370
369
  for (i = 0; i < RARRAY_LEN(list); i++) {
371
370
  RepeatedField_push(_self, rb_ary_entry(list, i));
@@ -382,8 +381,8 @@ static VALUE RepeatedField_replace(VALUE _self, VALUE list) {
382
381
  */
383
382
  static VALUE RepeatedField_clear(VALUE _self) {
384
383
  RepeatedField* self = ruby_to_RepeatedField(_self);
385
- upb_array *array = RepeatedField_GetMutable(_self);
386
- 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));
387
386
  return _self;
388
387
  }
389
388
 
@@ -395,7 +394,7 @@ static VALUE RepeatedField_clear(VALUE _self) {
395
394
  */
396
395
  static VALUE RepeatedField_length(VALUE _self) {
397
396
  RepeatedField* self = ruby_to_RepeatedField(_self);
398
- return INT2NUM(upb_array_size(self->array));
397
+ return INT2NUM(upb_Array_Size(self->array));
399
398
  }
400
399
 
401
400
  /*
@@ -409,16 +408,16 @@ static VALUE RepeatedField_dup(VALUE _self) {
409
408
  RepeatedField* self = ruby_to_RepeatedField(_self);
410
409
  VALUE new_rptfield = RepeatedField_new_this_type(self);
411
410
  RepeatedField* new_rptfield_self = ruby_to_RepeatedField(new_rptfield);
412
- upb_array *new_array = RepeatedField_GetMutable(new_rptfield);
413
- upb_arena* arena = Arena_get(new_rptfield_self->arena);
414
- 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);
415
414
  int i;
416
415
 
417
416
  Arena_fuse(self->arena, arena);
418
417
 
419
418
  for (i = 0; i < size; i++) {
420
- upb_msgval msgval = upb_array_get(self->array, i);
421
- 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);
422
421
  }
423
422
 
424
423
  return new_rptfield;
@@ -433,12 +432,12 @@ static VALUE RepeatedField_dup(VALUE _self) {
433
432
  */
434
433
  VALUE RepeatedField_to_ary(VALUE _self) {
435
434
  RepeatedField* self = ruby_to_RepeatedField(_self);
436
- int size = upb_array_size(self->array);
435
+ int size = upb_Array_Size(self->array);
437
436
  VALUE ary = rb_ary_new2(size);
438
437
  int i;
439
438
 
440
439
  for (i = 0; i < size; i++) {
441
- upb_msgval msgval = upb_array_get(self->array, i);
440
+ upb_MessageValue msgval = upb_Array_Get(self->array, i);
442
441
  VALUE val = Convert_UpbToRuby(msgval, self->type_info, self->arena);
443
442
  rb_ary_push(ary, val);
444
443
  }
@@ -474,17 +473,17 @@ VALUE RepeatedField_eq(VALUE _self, VALUE _other) {
474
473
 
475
474
  self = ruby_to_RepeatedField(_self);
476
475
  other = ruby_to_RepeatedField(_other);
477
- size_t n = upb_array_size(self->array);
476
+ size_t n = upb_Array_Size(self->array);
478
477
 
479
478
  if (self->type_info.type != other->type_info.type ||
480
479
  self->type_class != other->type_class ||
481
- upb_array_size(other->array) != n) {
480
+ upb_Array_Size(other->array) != n) {
482
481
  return Qfalse;
483
482
  }
484
483
 
485
484
  for (size_t i = 0; i < n; i++) {
486
- upb_msgval val1 = upb_array_get(self->array, i);
487
- 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);
488
487
  if (!Msgval_IsEqual(val1, val2, self->type_info)) {
489
488
  return Qfalse;
490
489
  }
@@ -518,10 +517,10 @@ static VALUE RepeatedField_freeze(VALUE _self) {
518
517
  VALUE RepeatedField_hash(VALUE _self) {
519
518
  RepeatedField* self = ruby_to_RepeatedField(_self);
520
519
  uint64_t hash = 0;
521
- size_t n = upb_array_size(self->array);
520
+ size_t n = upb_Array_Size(self->array);
522
521
 
523
522
  for (size_t i = 0; i < n; i++) {
524
- upb_msgval val = upb_array_get(self->array, i);
523
+ upb_MessageValue val = upb_Array_Get(self->array, i);
525
524
  hash = Msgval_GetHash(val, self->type_info, hash);
526
525
  }
527
526
 
@@ -550,9 +549,10 @@ VALUE RepeatedField_plus(VALUE _self, VALUE list) {
550
549
  RepeatedField* self = ruby_to_RepeatedField(_self);
551
550
  RepeatedField* list_rptfield = ruby_to_RepeatedField(list);
552
551
  RepeatedField* dupped = ruby_to_RepeatedField(dupped_);
553
- upb_array *dupped_array = RepeatedField_GetMutable(dupped_);
554
- upb_arena* arena = Arena_get(dupped->arena);
555
- 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);
556
556
  int i;
557
557
 
558
558
  if (self->type_info.type != list_rptfield->type_info.type ||
@@ -562,8 +562,8 @@ VALUE RepeatedField_plus(VALUE _self, VALUE list) {
562
562
  }
563
563
 
564
564
  for (i = 0; i < size; i++) {
565
- upb_msgval msgval = upb_array_get(list_rptfield->array, i);
566
- 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);
567
567
  }
568
568
  } else {
569
569
  rb_raise(rb_eArgError, "Unknown type appending to RepeatedField");
@@ -601,7 +601,7 @@ VALUE RepeatedField_concat(VALUE _self, VALUE list) {
601
601
  */
602
602
  VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
603
603
  RepeatedField* self = ruby_to_RepeatedField(_self);
604
- upb_arena *arena;
604
+ upb_Arena* arena;
605
605
  VALUE ary = Qnil;
606
606
 
607
607
  self->arena = Arena_new();
@@ -612,7 +612,7 @@ VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
612
612
  }
613
613
 
614
614
  self->type_info = TypeInfo_FromClass(argc, argv, 0, &self->type_class, &ary);
615
- self->array = upb_array_new(arena, self->type_info.type);
615
+ self->array = upb_Array_New(arena, self->type_info.type);
616
616
  ObjectCache_Add(self->array, _self);
617
617
 
618
618
  if (ary != Qnil) {
@@ -627,14 +627,12 @@ VALUE RepeatedField_init(int argc, VALUE* argv, VALUE _self) {
627
627
  }
628
628
 
629
629
  void RepeatedField_register(VALUE module) {
630
- VALUE klass = rb_define_class_under(
631
- module, "RepeatedField", rb_cObject);
630
+ VALUE klass = rb_define_class_under(module, "RepeatedField", rb_cObject);
632
631
  rb_define_alloc_func(klass, RepeatedField_alloc);
633
632
  rb_gc_register_address(&cRepeatedField);
634
633
  cRepeatedField = klass;
635
634
 
636
- rb_define_method(klass, "initialize",
637
- RepeatedField_init, -1);
635
+ rb_define_method(klass, "initialize", RepeatedField_init, -1);
638
636
  rb_define_method(klass, "each", RepeatedField_each, 0);
639
637
  rb_define_method(klass, "[]", RepeatedField_index, -1);
640
638
  rb_define_method(klass, "at", RepeatedField_index, -1);
@@ -36,19 +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,
48
- upb_arena* arena);
47
+ const upb_Array* RepeatedField_GetUpbArray(VALUE value, const upb_FieldDef* f,
48
+ upb_Arena* arena);
49
49
 
50
50
  // Implements #inspect for this repeated field by appending its contents to |b|.
51
- void RepeatedField_Inspect(StringBuilder* b, const upb_array* array,
51
+ void RepeatedField_Inspect(StringBuilder* b, const upb_Array* array,
52
52
  TypeInfo info);
53
53
 
54
54
  // Returns a deep copy of this RepeatedField object.