google-protobuf 4.29.3-aarch64-linux → 4.30.0-aarch64-linux
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.
- checksums.yaml +4 -4
- data/ext/google/protobuf_c/convert.c +3 -10
- data/ext/google/protobuf_c/defs.c +161 -2
- data/ext/google/protobuf_c/extconf.rb +12 -0
- data/ext/google/protobuf_c/glue.c +63 -0
- data/ext/google/protobuf_c/message.c +2 -4
- data/ext/google/protobuf_c/protobuf.c +2 -1
- data/ext/google/protobuf_c/ruby-upb.c +7728 -6620
- data/ext/google/protobuf_c/ruby-upb.h +2390 -1671
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.c +15 -275
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc +117 -0
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc +272 -0
- data/lib/google/3.0/protobuf_c.so +0 -0
- data/lib/google/3.1/protobuf_c.so +0 -0
- data/lib/google/3.2/protobuf_c.so +0 -0
- data/lib/google/3.3/protobuf_c.so +0 -0
- data/lib/google/3.4/protobuf_c.so +0 -0
- data/lib/google/protobuf/descriptor_pb.rb +2 -1
- data/lib/google/protobuf/ffi/descriptor.rb +10 -0
- data/lib/google/protobuf/ffi/enum_descriptor.rb +10 -0
- data/lib/google/protobuf/ffi/ffi.rb +0 -1
- data/lib/google/protobuf/ffi/field_descriptor.rb +10 -0
- data/lib/google/protobuf/ffi/file_descriptor.rb +10 -0
- data/lib/google/protobuf/ffi/internal/convert.rb +1 -5
- data/lib/google/protobuf/ffi/message.rb +1 -3
- data/lib/google/protobuf/ffi/method_descriptor.rb +11 -1
- data/lib/google/protobuf/ffi/oneof_descriptor.rb +10 -0
- data/lib/google/protobuf/ffi/service_descriptor.rb +11 -1
- data/lib/google/protobuf_ffi.rb +2 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e641bc2d949b42640593157d72586ed7ca5396119b369310a2d53d902bdc9fa
|
4
|
+
data.tar.gz: 4135289778f285e4086bcc8b2ca9b07c97fb019131e0ca1802d0c21d03cbb77a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96e35304d4beeb2221237bfc695d920f2d6868fc70b9dc28971a59b2c32846b2250e58e9eb8beb73ddb44a2f76fc97cd0b2b757da32594fc9e84ac2e966153d7
|
7
|
+
data.tar.gz: c1913e08ec7f215cd93f4194b3befcec8cccf0fb6cb94fd6f9822db1dbe398459509de0a62b6cfc10183bc0d391c624ed3afd25d6c569d53b9ebbad6983e0087
|
@@ -112,16 +112,9 @@ VALUE Convert_CheckStringUtf8(VALUE str) {
|
|
112
112
|
// not mean that it is *valid* UTF-8. We have to check separately
|
113
113
|
// whether it is valid.
|
114
114
|
if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
rb_warn(
|
120
|
-
"String is invalid UTF-8. This will be an error in a future "
|
121
|
-
"version.");
|
122
|
-
// VALUE exc = rb_const_get_at(
|
123
|
-
// rb_cEncoding, rb_intern("InvalidByteSequenceError"));
|
124
|
-
// rb_raise(exc, "String is invalid UTF-8");
|
115
|
+
VALUE exc = rb_const_get_at(
|
116
|
+
rb_cEncoding, rb_intern("InvalidByteSequenceError"));
|
117
|
+
rb_raise(exc, "String is invalid UTF-8");
|
125
118
|
}
|
126
119
|
} else {
|
127
120
|
// Note: this will not duplicate underlying string data unless
|
@@ -146,8 +146,8 @@ VALUE DescriptorPool_add_serialized_file(VALUE _self,
|
|
146
146
|
* call-seq:
|
147
147
|
* DescriptorPool.lookup(name) => descriptor
|
148
148
|
*
|
149
|
-
* Finds a Descriptor, EnumDescriptor or
|
150
|
-
* or nil if none exists with the given name.
|
149
|
+
* Finds a Descriptor, EnumDescriptor, FieldDescriptor or ServiceDescriptor by
|
150
|
+
* name and returns it, or nil if none exists with the given name.
|
151
151
|
*/
|
152
152
|
static VALUE DescriptorPool_lookup(VALUE _self, VALUE name) {
|
153
153
|
DescriptorPool* self = ruby_to_DescriptorPool(_self);
|
@@ -451,6 +451,27 @@ static VALUE Descriptor_options(VALUE _self) {
|
|
451
451
|
return message_options;
|
452
452
|
}
|
453
453
|
|
454
|
+
/*
|
455
|
+
* call-seq:
|
456
|
+
* Descriptor.to_proto => DescriptorProto
|
457
|
+
*
|
458
|
+
* Returns the `DescriptorProto` of this `Descriptor`.
|
459
|
+
*/
|
460
|
+
static VALUE Descriptor_to_proto(VALUE _self) {
|
461
|
+
Descriptor* self = ruby_to_Descriptor(_self);
|
462
|
+
upb_Arena* arena = upb_Arena_New();
|
463
|
+
google_protobuf_DescriptorProto* proto =
|
464
|
+
upb_MessageDef_ToProto(self->msgdef, arena);
|
465
|
+
size_t size;
|
466
|
+
const char* serialized =
|
467
|
+
google_protobuf_DescriptorProto_serialize(proto, arena, &size);
|
468
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::DescriptorProto");
|
469
|
+
VALUE proto_rb =
|
470
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
471
|
+
upb_Arena_Free(arena);
|
472
|
+
return proto_rb;
|
473
|
+
}
|
474
|
+
|
454
475
|
static void Descriptor_register(VALUE module) {
|
455
476
|
VALUE klass = rb_define_class_under(module, "Descriptor", rb_cObject);
|
456
477
|
rb_define_alloc_func(klass, Descriptor_alloc);
|
@@ -463,6 +484,7 @@ static void Descriptor_register(VALUE module) {
|
|
463
484
|
rb_define_method(klass, "name", Descriptor_name, 0);
|
464
485
|
rb_define_method(klass, "file_descriptor", Descriptor_file_descriptor, 0);
|
465
486
|
rb_define_method(klass, "options", Descriptor_options, 0);
|
487
|
+
rb_define_method(klass, "to_proto", Descriptor_to_proto, 0);
|
466
488
|
rb_include_module(klass, rb_mEnumerable);
|
467
489
|
rb_gc_register_address(&cDescriptor);
|
468
490
|
cDescriptor = klass;
|
@@ -558,12 +580,37 @@ static VALUE FileDescriptor_options(VALUE _self) {
|
|
558
580
|
return file_options;
|
559
581
|
}
|
560
582
|
|
583
|
+
/*
|
584
|
+
* call-seq:
|
585
|
+
* FileDescriptor.to_proto => FileDescriptorProto
|
586
|
+
*
|
587
|
+
* Returns the `FileDescriptorProto` of this `FileDescriptor`.
|
588
|
+
*/
|
589
|
+
static VALUE FileDescriptor_to_proto(VALUE _self) {
|
590
|
+
FileDescriptor* self = ruby_to_FileDescriptor(_self);
|
591
|
+
upb_Arena* arena = upb_Arena_New();
|
592
|
+
google_protobuf_FileDescriptorProto* file_proto =
|
593
|
+
upb_FileDef_ToProto(self->filedef, arena);
|
594
|
+
|
595
|
+
size_t size;
|
596
|
+
const char* serialized =
|
597
|
+
google_protobuf_FileDescriptorProto_serialize(file_proto, arena, &size);
|
598
|
+
|
599
|
+
VALUE file_proto_class =
|
600
|
+
rb_path2class("Google::Protobuf::FileDescriptorProto");
|
601
|
+
VALUE proto_rb =
|
602
|
+
Message_decode_bytes(size, serialized, 0, file_proto_class, false);
|
603
|
+
upb_Arena_Free(arena);
|
604
|
+
return proto_rb;
|
605
|
+
}
|
606
|
+
|
561
607
|
static void FileDescriptor_register(VALUE module) {
|
562
608
|
VALUE klass = rb_define_class_under(module, "FileDescriptor", rb_cObject);
|
563
609
|
rb_define_alloc_func(klass, FileDescriptor_alloc);
|
564
610
|
rb_define_method(klass, "initialize", FileDescriptor_initialize, 3);
|
565
611
|
rb_define_method(klass, "name", FileDescriptor_name, 0);
|
566
612
|
rb_define_method(klass, "options", FileDescriptor_options, 0);
|
613
|
+
rb_define_method(klass, "to_proto", FileDescriptor_to_proto, 0);
|
567
614
|
rb_gc_register_address(&cFileDescriptor);
|
568
615
|
cFileDescriptor = klass;
|
569
616
|
}
|
@@ -956,6 +1003,27 @@ static VALUE FieldDescriptor_options(VALUE _self) {
|
|
956
1003
|
return field_options;
|
957
1004
|
}
|
958
1005
|
|
1006
|
+
/*
|
1007
|
+
* call-seq:
|
1008
|
+
* FieldDescriptor.to_proto => FieldDescriptorProto
|
1009
|
+
*
|
1010
|
+
* Returns the `FieldDescriptorProto` of this `FieldDescriptor`.
|
1011
|
+
*/
|
1012
|
+
static VALUE FieldDescriptor_to_proto(VALUE _self) {
|
1013
|
+
FieldDescriptor* self = ruby_to_FieldDescriptor(_self);
|
1014
|
+
upb_Arena* arena = upb_Arena_New();
|
1015
|
+
google_protobuf_FieldDescriptorProto* proto =
|
1016
|
+
upb_FieldDef_ToProto(self->fielddef, arena);
|
1017
|
+
size_t size;
|
1018
|
+
const char* serialized =
|
1019
|
+
google_protobuf_FieldDescriptorProto_serialize(proto, arena, &size);
|
1020
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::FieldDescriptorProto");
|
1021
|
+
VALUE proto_rb =
|
1022
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
1023
|
+
upb_Arena_Free(arena);
|
1024
|
+
return proto_rb;
|
1025
|
+
}
|
1026
|
+
|
959
1027
|
static void FieldDescriptor_register(VALUE module) {
|
960
1028
|
VALUE klass = rb_define_class_under(module, "FieldDescriptor", rb_cObject);
|
961
1029
|
rb_define_alloc_func(klass, FieldDescriptor_alloc);
|
@@ -975,6 +1043,7 @@ static void FieldDescriptor_register(VALUE module) {
|
|
975
1043
|
rb_define_method(klass, "get", FieldDescriptor_get, 1);
|
976
1044
|
rb_define_method(klass, "set", FieldDescriptor_set, 2);
|
977
1045
|
rb_define_method(klass, "options", FieldDescriptor_options, 0);
|
1046
|
+
rb_define_method(klass, "to_proto", FieldDescriptor_to_proto, 0);
|
978
1047
|
rb_gc_register_address(&cFieldDescriptor);
|
979
1048
|
cFieldDescriptor = klass;
|
980
1049
|
}
|
@@ -1093,6 +1162,27 @@ static VALUE OneOfDescriptor_options(VALUE _self) {
|
|
1093
1162
|
return oneof_options;
|
1094
1163
|
}
|
1095
1164
|
|
1165
|
+
/*
|
1166
|
+
* call-seq:
|
1167
|
+
* OneofDescriptor.to_proto => OneofDescriptorProto
|
1168
|
+
*
|
1169
|
+
* Returns the `OneofDescriptorProto` of this `OneofDescriptor`.
|
1170
|
+
*/
|
1171
|
+
static VALUE OneOfDescriptor_to_proto(VALUE _self) {
|
1172
|
+
OneofDescriptor* self = ruby_to_OneofDescriptor(_self);
|
1173
|
+
upb_Arena* arena = upb_Arena_New();
|
1174
|
+
google_protobuf_OneofDescriptorProto* proto =
|
1175
|
+
upb_OneofDef_ToProto(self->oneofdef, arena);
|
1176
|
+
size_t size;
|
1177
|
+
const char* serialized =
|
1178
|
+
google_protobuf_OneofDescriptorProto_serialize(proto, arena, &size);
|
1179
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::OneofDescriptorProto");
|
1180
|
+
VALUE proto_rb =
|
1181
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
1182
|
+
upb_Arena_Free(arena);
|
1183
|
+
return proto_rb;
|
1184
|
+
}
|
1185
|
+
|
1096
1186
|
static void OneofDescriptor_register(VALUE module) {
|
1097
1187
|
VALUE klass = rb_define_class_under(module, "OneofDescriptor", rb_cObject);
|
1098
1188
|
rb_define_alloc_func(klass, OneofDescriptor_alloc);
|
@@ -1100,6 +1190,7 @@ static void OneofDescriptor_register(VALUE module) {
|
|
1100
1190
|
rb_define_method(klass, "name", OneofDescriptor_name, 0);
|
1101
1191
|
rb_define_method(klass, "each", OneofDescriptor_each, 0);
|
1102
1192
|
rb_define_method(klass, "options", OneOfDescriptor_options, 0);
|
1193
|
+
rb_define_method(klass, "to_proto", OneOfDescriptor_to_proto, 0);
|
1103
1194
|
rb_include_module(klass, rb_mEnumerable);
|
1104
1195
|
rb_gc_register_address(&cOneofDescriptor);
|
1105
1196
|
cOneofDescriptor = klass;
|
@@ -1298,6 +1389,29 @@ static VALUE EnumDescriptor_options(VALUE _self) {
|
|
1298
1389
|
return enum_options;
|
1299
1390
|
}
|
1300
1391
|
|
1392
|
+
/*
|
1393
|
+
* call-seq:
|
1394
|
+
* EnumDescriptor.to_proto => EnumDescriptorProto
|
1395
|
+
*
|
1396
|
+
* Returns the `EnumDescriptorProto` of this `EnumDescriptor`.
|
1397
|
+
*/
|
1398
|
+
static VALUE EnumDescriptor_to_proto(VALUE _self) {
|
1399
|
+
EnumDescriptor* self = ruby_to_EnumDescriptor(_self);
|
1400
|
+
upb_Arena* arena = upb_Arena_New();
|
1401
|
+
google_protobuf_EnumDescriptorProto* proto =
|
1402
|
+
upb_EnumDef_ToProto(self->enumdef, arena);
|
1403
|
+
|
1404
|
+
size_t size;
|
1405
|
+
const char* serialized =
|
1406
|
+
google_protobuf_EnumDescriptorProto_serialize(proto, arena, &size);
|
1407
|
+
|
1408
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::EnumDescriptorProto");
|
1409
|
+
VALUE proto_rb =
|
1410
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
1411
|
+
upb_Arena_Free(arena);
|
1412
|
+
return proto_rb;
|
1413
|
+
}
|
1414
|
+
|
1301
1415
|
static void EnumDescriptor_register(VALUE module) {
|
1302
1416
|
VALUE klass = rb_define_class_under(module, "EnumDescriptor", rb_cObject);
|
1303
1417
|
rb_define_alloc_func(klass, EnumDescriptor_alloc);
|
@@ -1310,6 +1424,7 @@ static void EnumDescriptor_register(VALUE module) {
|
|
1310
1424
|
rb_define_method(klass, "file_descriptor", EnumDescriptor_file_descriptor, 0);
|
1311
1425
|
rb_define_method(klass, "is_closed?", EnumDescriptor_is_closed, 0);
|
1312
1426
|
rb_define_method(klass, "options", EnumDescriptor_options, 0);
|
1427
|
+
rb_define_method(klass, "to_proto", EnumDescriptor_to_proto, 0);
|
1313
1428
|
rb_include_module(klass, rb_mEnumerable);
|
1314
1429
|
rb_gc_register_address(&cEnumDescriptor);
|
1315
1430
|
cEnumDescriptor = klass;
|
@@ -1438,6 +1553,27 @@ static VALUE ServiceDescriptor_options(VALUE _self) {
|
|
1438
1553
|
return service_options;
|
1439
1554
|
}
|
1440
1555
|
|
1556
|
+
/*
|
1557
|
+
* call-seq:
|
1558
|
+
* ServiceDescriptor.to_proto => ServiceDescriptorProto
|
1559
|
+
*
|
1560
|
+
* Returns the `ServiceDescriptorProto` of this `ServiceDescriptor`.
|
1561
|
+
*/
|
1562
|
+
static VALUE ServiceDescriptor_to_proto(VALUE _self) {
|
1563
|
+
ServiceDescriptor* self = ruby_to_ServiceDescriptor(_self);
|
1564
|
+
upb_Arena* arena = upb_Arena_New();
|
1565
|
+
google_protobuf_ServiceDescriptorProto* proto =
|
1566
|
+
upb_ServiceDef_ToProto(self->servicedef, arena);
|
1567
|
+
size_t size;
|
1568
|
+
const char* serialized =
|
1569
|
+
google_protobuf_ServiceDescriptorProto_serialize(proto, arena, &size);
|
1570
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::ServiceDescriptorProto");
|
1571
|
+
VALUE proto_rb =
|
1572
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
1573
|
+
upb_Arena_Free(arena);
|
1574
|
+
return proto_rb;
|
1575
|
+
}
|
1576
|
+
|
1441
1577
|
static void ServiceDescriptor_register(VALUE module) {
|
1442
1578
|
VALUE klass = rb_define_class_under(module, "ServiceDescriptor", rb_cObject);
|
1443
1579
|
rb_define_alloc_func(klass, ServiceDescriptor_alloc);
|
@@ -1447,6 +1583,7 @@ static void ServiceDescriptor_register(VALUE module) {
|
|
1447
1583
|
rb_define_method(klass, "file_descriptor", ServiceDescriptor_file_descriptor,
|
1448
1584
|
0);
|
1449
1585
|
rb_define_method(klass, "options", ServiceDescriptor_options, 0);
|
1586
|
+
rb_define_method(klass, "to_proto", ServiceDescriptor_to_proto, 0);
|
1450
1587
|
rb_include_module(klass, rb_mEnumerable);
|
1451
1588
|
rb_gc_register_address(&cServiceDescriptor);
|
1452
1589
|
cServiceDescriptor = klass;
|
@@ -1580,6 +1717,27 @@ static VALUE MethodDescriptor_client_streaming(VALUE _self) {
|
|
1580
1717
|
return upb_MethodDef_ClientStreaming(self->methoddef) ? Qtrue : Qfalse;
|
1581
1718
|
}
|
1582
1719
|
|
1720
|
+
/*
|
1721
|
+
* call-seq:
|
1722
|
+
* MethodDescriptor.to_proto => MethodDescriptorProto
|
1723
|
+
*
|
1724
|
+
* Returns the `MethodDescriptorProto` of this `MethodDescriptor`.
|
1725
|
+
*/
|
1726
|
+
static VALUE MethodDescriptor_to_proto(VALUE _self) {
|
1727
|
+
MethodDescriptor* self = ruby_to_MethodDescriptor(_self);
|
1728
|
+
upb_Arena* arena = upb_Arena_New();
|
1729
|
+
google_protobuf_MethodDescriptorProto* proto =
|
1730
|
+
upb_MethodDef_ToProto(self->methoddef, arena);
|
1731
|
+
size_t size;
|
1732
|
+
const char* serialized =
|
1733
|
+
google_protobuf_MethodDescriptorProto_serialize(proto, arena, &size);
|
1734
|
+
VALUE proto_class = rb_path2class("Google::Protobuf::MethodDescriptorProto");
|
1735
|
+
VALUE proto_rb =
|
1736
|
+
Message_decode_bytes(size, serialized, 0, proto_class, false);
|
1737
|
+
upb_Arena_Free(arena);
|
1738
|
+
return proto_rb;
|
1739
|
+
}
|
1740
|
+
|
1583
1741
|
/*
|
1584
1742
|
* call-seq:
|
1585
1743
|
* MethodDescriptor.server_streaming => bool
|
@@ -1603,6 +1761,7 @@ static void MethodDescriptor_register(VALUE module) {
|
|
1603
1761
|
0);
|
1604
1762
|
rb_define_method(klass, "server_streaming", MethodDescriptor_server_streaming,
|
1605
1763
|
0);
|
1764
|
+
rb_define_method(klass, "to_proto", MethodDescriptor_to_proto, 0);
|
1606
1765
|
rb_gc_register_address(&cMethodDescriptor);
|
1607
1766
|
cMethodDescriptor = klass;
|
1608
1767
|
}
|
@@ -6,6 +6,18 @@ ext_name = "google/protobuf_c"
|
|
6
6
|
|
7
7
|
dir_config(ext_name)
|
8
8
|
|
9
|
+
if ENV["CC"]
|
10
|
+
RbConfig::CONFIG["CC"] = RbConfig::MAKEFILE_CONFIG["CC"] = ENV["CC"]
|
11
|
+
end
|
12
|
+
|
13
|
+
if ENV["CXX"]
|
14
|
+
RbConfig::CONFIG["CXX"] = RbConfig::MAKEFILE_CONFIG["CXX"] = ENV["CXX"]
|
15
|
+
end
|
16
|
+
|
17
|
+
if ENV["LD"]
|
18
|
+
RbConfig::CONFIG["LD"] = RbConfig::MAKEFILE_CONFIG["LD"] = ENV["LD"]
|
19
|
+
end
|
20
|
+
|
9
21
|
if RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/ || RUBY_PLATFORM =~ /freebsd/
|
10
22
|
$CFLAGS += " -std=gnu99 -O3 -DNDEBUG -fvisibility=hidden -Wall -Wsign-compare -Wno-declaration-after-statement"
|
11
23
|
else
|
@@ -26,6 +26,15 @@ char* EnumDescriptor_serialized_options(const upb_EnumDef* enumdef,
|
|
26
26
|
return serialized;
|
27
27
|
}
|
28
28
|
|
29
|
+
char* EnumDescriptor_serialized_to_proto(const upb_EnumDef* enumdef,
|
30
|
+
size_t* size, upb_Arena* arena) {
|
31
|
+
const google_protobuf_EnumDescriptorProto* file_proto =
|
32
|
+
upb_EnumDef_ToProto(enumdef, arena);
|
33
|
+
char* serialized =
|
34
|
+
google_protobuf_EnumDescriptorProto_serialize(file_proto, arena, size);
|
35
|
+
return serialized;
|
36
|
+
}
|
37
|
+
|
29
38
|
char* FileDescriptor_serialized_options(const upb_FileDef* filedef,
|
30
39
|
size_t* size, upb_Arena* arena) {
|
31
40
|
const google_protobuf_FileOptions* opts = upb_FileDef_Options(filedef);
|
@@ -33,6 +42,15 @@ char* FileDescriptor_serialized_options(const upb_FileDef* filedef,
|
|
33
42
|
return serialized;
|
34
43
|
}
|
35
44
|
|
45
|
+
char* FileDescriptor_serialized_to_proto(const upb_FileDef* filedef,
|
46
|
+
size_t* size, upb_Arena* arena) {
|
47
|
+
const google_protobuf_FileDescriptorProto* file_proto =
|
48
|
+
upb_FileDef_ToProto(filedef, arena);
|
49
|
+
char* serialized =
|
50
|
+
google_protobuf_FileDescriptorProto_serialize(file_proto, arena, size);
|
51
|
+
return serialized;
|
52
|
+
}
|
53
|
+
|
36
54
|
char* Descriptor_serialized_options(const upb_MessageDef* msgdef, size_t* size,
|
37
55
|
upb_Arena* arena) {
|
38
56
|
const google_protobuf_MessageOptions* opts = upb_MessageDef_Options(msgdef);
|
@@ -41,6 +59,15 @@ char* Descriptor_serialized_options(const upb_MessageDef* msgdef, size_t* size,
|
|
41
59
|
return serialized;
|
42
60
|
}
|
43
61
|
|
62
|
+
char* Descriptor_serialized_to_proto(const upb_MessageDef* msgdef, size_t* size,
|
63
|
+
upb_Arena* arena) {
|
64
|
+
const google_protobuf_DescriptorProto* proto =
|
65
|
+
upb_MessageDef_ToProto(msgdef, arena);
|
66
|
+
char* serialized =
|
67
|
+
google_protobuf_DescriptorProto_serialize(proto, arena, size);
|
68
|
+
return serialized;
|
69
|
+
}
|
70
|
+
|
44
71
|
char* OneOfDescriptor_serialized_options(const upb_OneofDef* oneofdef,
|
45
72
|
size_t* size, upb_Arena* arena) {
|
46
73
|
const google_protobuf_OneofOptions* opts = upb_OneofDef_Options(oneofdef);
|
@@ -48,6 +75,15 @@ char* OneOfDescriptor_serialized_options(const upb_OneofDef* oneofdef,
|
|
48
75
|
return serialized;
|
49
76
|
}
|
50
77
|
|
78
|
+
char* OneOfDescriptor_serialized_to_proto(const upb_OneofDef* oneofdef,
|
79
|
+
size_t* size, upb_Arena* arena) {
|
80
|
+
const google_protobuf_OneofDescriptorProto* proto =
|
81
|
+
upb_OneofDef_ToProto(oneofdef, arena);
|
82
|
+
char* serialized =
|
83
|
+
google_protobuf_OneofDescriptorProto_serialize(proto, arena, size);
|
84
|
+
return serialized;
|
85
|
+
}
|
86
|
+
|
51
87
|
char* FieldDescriptor_serialized_options(const upb_FieldDef* fielddef,
|
52
88
|
size_t* size, upb_Arena* arena) {
|
53
89
|
const google_protobuf_FieldOptions* opts = upb_FieldDef_Options(fielddef);
|
@@ -55,6 +91,15 @@ char* FieldDescriptor_serialized_options(const upb_FieldDef* fielddef,
|
|
55
91
|
return serialized;
|
56
92
|
}
|
57
93
|
|
94
|
+
char* FieldDescriptor_serialized_to_proto(const upb_FieldDef* fieldef,
|
95
|
+
size_t* size, upb_Arena* arena) {
|
96
|
+
const google_protobuf_FieldDescriptorProto* proto =
|
97
|
+
upb_FieldDef_ToProto(fieldef, arena);
|
98
|
+
char* serialized =
|
99
|
+
google_protobuf_FieldDescriptorProto_serialize(proto, arena, size);
|
100
|
+
return serialized;
|
101
|
+
}
|
102
|
+
|
58
103
|
char* ServiceDescriptor_serialized_options(const upb_ServiceDef* servicedef,
|
59
104
|
size_t* size, upb_Arena* arena) {
|
60
105
|
const google_protobuf_ServiceOptions* opts =
|
@@ -64,9 +109,27 @@ char* ServiceDescriptor_serialized_options(const upb_ServiceDef* servicedef,
|
|
64
109
|
return serialized;
|
65
110
|
}
|
66
111
|
|
112
|
+
char* ServiceDescriptor_serialized_to_proto(const upb_ServiceDef* servicedef,
|
113
|
+
size_t* size, upb_Arena* arena) {
|
114
|
+
const google_protobuf_ServiceDescriptorProto* proto =
|
115
|
+
upb_ServiceDef_ToProto(servicedef, arena);
|
116
|
+
char* serialized =
|
117
|
+
google_protobuf_ServiceDescriptorProto_serialize(proto, arena, size);
|
118
|
+
return serialized;
|
119
|
+
}
|
120
|
+
|
67
121
|
char* MethodDescriptor_serialized_options(const upb_MethodDef* methoddef,
|
68
122
|
size_t* size, upb_Arena* arena) {
|
69
123
|
const google_protobuf_MethodOptions* opts = upb_MethodDef_Options(methoddef);
|
70
124
|
char* serialized = google_protobuf_MethodOptions_serialize(opts, arena, size);
|
71
125
|
return serialized;
|
72
126
|
}
|
127
|
+
|
128
|
+
char* MethodDescriptor_serialized_to_proto(const upb_MethodDef* methodef,
|
129
|
+
size_t* size, upb_Arena* arena) {
|
130
|
+
const google_protobuf_MethodDescriptorProto* proto =
|
131
|
+
upb_MethodDef_ToProto(methodef, arena);
|
132
|
+
char* serialized =
|
133
|
+
google_protobuf_MethodDescriptorProto_serialize(proto, arena, size);
|
134
|
+
return serialized;
|
135
|
+
}
|
@@ -362,7 +362,8 @@ static VALUE Message_field_accessor(VALUE _self, const upb_FieldDef* f,
|
|
362
362
|
if (!upb_FieldDef_HasPresence(f)) {
|
363
363
|
rb_raise(rb_eRuntimeError, "Field does not have presence.");
|
364
364
|
}
|
365
|
-
return upb_Message_HasFieldByDef(Message_Get(_self, NULL), f)
|
365
|
+
return upb_Message_HasFieldByDef(Message_Get(_self, NULL), f) ? Qtrue
|
366
|
+
: Qfalse;
|
366
367
|
case METHOD_WRAPPER_GETTER: {
|
367
368
|
Message* self = ruby_to_Message(_self);
|
368
369
|
if (upb_Message_HasFieldByDef(self->msg, f)) {
|
@@ -1046,9 +1047,6 @@ static VALUE Message_decode_json(int argc, VALUE* argv, VALUE klass) {
|
|
1046
1047
|
switch (result) {
|
1047
1048
|
case kUpb_JsonDecodeResult_Ok:
|
1048
1049
|
break;
|
1049
|
-
case kUpb_JsonDecodeResult_OkWithEmptyStringNumerics:
|
1050
|
-
rb_warn("%s", upb_Status_ErrorMessage(&status));
|
1051
|
-
break;
|
1052
1050
|
case kUpb_JsonDecodeResult_Error:
|
1053
1051
|
rb_raise(cParseError, "Error occurred during parsing: %s",
|
1054
1052
|
upb_Status_ErrorMessage(&status));
|
@@ -286,7 +286,8 @@ VALUE ObjectCache_Get(const void *key) {
|
|
286
286
|
static VALUE Google_Protobuf_discard_unknown(VALUE self, VALUE msg_rb) {
|
287
287
|
const upb_MessageDef *m;
|
288
288
|
upb_Message *msg = Message_GetMutable(msg_rb, &m);
|
289
|
-
|
289
|
+
const upb_DefPool* ext_pool = upb_FileDef_Pool(upb_MessageDef_File(m));
|
290
|
+
if (!upb_Message_DiscardUnknown(msg, m, ext_pool, 128)) {
|
290
291
|
rb_raise(rb_eRuntimeError, "Messages nested too deeply.");
|
291
292
|
}
|
292
293
|
|