google-protobuf 4.36.2-java → 4.37.0.rc.1-java
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/message.c +199 -37
- data/ext/google/protobuf_c/message.h +2 -1
- data/ext/google/protobuf_c/protobuf.c +75 -6
- data/ext/google/protobuf_c/protobuf.h +1 -0
- data/ext/google/protobuf_c/ruby-upb.c +1324 -531
- data/ext/google/protobuf_c/ruby-upb.h +2282 -805
- data/ext/google/protobuf_c/shared_message.c +9 -1
- data/lib/google/protobuf/ffi/internal/convert.rb +32 -10
- data/lib/google/protobuf/ffi/map.rb +0 -1
- data/lib/google/protobuf/ffi/message.rb +10 -2
- data/lib/google/protobuf/ffi/repeated_field.rb +9 -1
- data/lib/google/protobuf/json_enumvalue_options_pb.rb +1 -1
- data/lib/google/protobuf/json_options_pb.rb +1 -1
- data/lib/google/protobuf/repeated_field.rb +2 -2
- data/lib/google/protobuf_java.jar +0 -0
- metadata +19 -19
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
uint64_t shared_Message_Hash(const upb_Message* msg, const upb_MessageDef* m,
|
|
17
17
|
uint64_t seed, upb_Status* status) {
|
|
18
18
|
upb_Arena* arena = upb_Arena_New();
|
|
19
|
+
if (!arena) {
|
|
20
|
+
upb_Status_SetErrorMessage(status, "Out of memory");
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
19
23
|
char* data;
|
|
20
24
|
size_t size;
|
|
21
25
|
|
|
@@ -32,6 +36,10 @@ uint64_t shared_Message_Hash(const upb_Message* msg, const upb_MessageDef* m,
|
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
upb_Arena_Free(arena);
|
|
35
|
-
|
|
39
|
+
if (encode_status == kUpb_EncodeStatus_OutOfMemory) {
|
|
40
|
+
upb_Status_SetErrorMessage(status, "Out of memory");
|
|
41
|
+
} else {
|
|
42
|
+
upb_Status_SetErrorMessage(status, "Error calculating hash");
|
|
43
|
+
}
|
|
36
44
|
return 0;
|
|
37
45
|
}
|
|
@@ -190,9 +190,31 @@ module Google
|
|
|
190
190
|
end
|
|
191
191
|
end
|
|
192
192
|
|
|
193
|
-
def to_h_internal(msg, message_descriptor)
|
|
193
|
+
def to_h_internal(msg, message_descriptor, emit_defaults = false)
|
|
194
194
|
return nil if msg.nil? or msg.null?
|
|
195
195
|
hash = {}
|
|
196
|
+
|
|
197
|
+
if emit_defaults
|
|
198
|
+
message_descriptor.each do |field_descriptor|
|
|
199
|
+
next if field_descriptor.has_presence? &&
|
|
200
|
+
!Google::Protobuf::FFI.get_message_has(msg, field_descriptor)
|
|
201
|
+
|
|
202
|
+
message_value = Google::Protobuf::FFI.get_message_value(msg, field_descriptor)
|
|
203
|
+
|
|
204
|
+
if field_descriptor.map?
|
|
205
|
+
hash_entry = map_create_hash(message_value[:map_val], field_descriptor, emit_defaults)
|
|
206
|
+
elsif field_descriptor.repeated?
|
|
207
|
+
hash_entry = repeated_field_create_array(message_value[:array_val], field_descriptor, field_descriptor.type, emit_defaults)
|
|
208
|
+
else
|
|
209
|
+
hash_entry = scalar_create_hash(message_value, field_descriptor.type, field_descriptor: field_descriptor, emit_defaults: emit_defaults)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
hash[field_descriptor.name.to_sym] = hash_entry
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
return hash
|
|
216
|
+
end
|
|
217
|
+
|
|
196
218
|
iter = ::FFI::MemoryPointer.new(:size_t, 1)
|
|
197
219
|
iter.write(:size_t, Google::Protobuf::FFI::Upb_Message_Begin)
|
|
198
220
|
message_value = Google::Protobuf::FFI::MessageValue.new
|
|
@@ -202,11 +224,11 @@ module Google
|
|
|
202
224
|
field_descriptor = FieldDescriptor.from_native field_def_ptr.get_pointer(0)
|
|
203
225
|
|
|
204
226
|
if field_descriptor.map?
|
|
205
|
-
hash_entry = map_create_hash(message_value[:map_val], field_descriptor)
|
|
227
|
+
hash_entry = map_create_hash(message_value[:map_val], field_descriptor, emit_defaults)
|
|
206
228
|
elsif field_descriptor.repeated?
|
|
207
|
-
hash_entry = repeated_field_create_array(message_value[:array_val], field_descriptor, field_descriptor.type)
|
|
229
|
+
hash_entry = repeated_field_create_array(message_value[:array_val], field_descriptor, field_descriptor.type, emit_defaults)
|
|
208
230
|
else
|
|
209
|
-
hash_entry = scalar_create_hash(message_value, field_descriptor.type, field_descriptor: field_descriptor)
|
|
231
|
+
hash_entry = scalar_create_hash(message_value, field_descriptor.type, field_descriptor: field_descriptor, emit_defaults: emit_defaults)
|
|
210
232
|
end
|
|
211
233
|
|
|
212
234
|
hash[field_descriptor.name.to_sym] = hash_entry
|
|
@@ -215,7 +237,7 @@ module Google
|
|
|
215
237
|
hash
|
|
216
238
|
end
|
|
217
239
|
|
|
218
|
-
def map_create_hash(map_ptr, field_descriptor)
|
|
240
|
+
def map_create_hash(map_ptr, field_descriptor, emit_defaults = false)
|
|
219
241
|
return {} if map_ptr.nil? or map_ptr.null?
|
|
220
242
|
return_value = {}
|
|
221
243
|
|
|
@@ -233,24 +255,24 @@ module Google
|
|
|
233
255
|
key_message_value = Google::Protobuf::FFI.map_key(map_ptr, iter_size_t)
|
|
234
256
|
value_message_value = Google::Protobuf::FFI.map_value(map_ptr, iter_size_t)
|
|
235
257
|
hash_key = convert_upb_to_ruby(key_message_value, key_field_type)
|
|
236
|
-
hash_value = scalar_create_hash(value_message_value, value_field_type, msg_or_enum_descriptor: value_field_def.subtype)
|
|
258
|
+
hash_value = scalar_create_hash(value_message_value, value_field_type, msg_or_enum_descriptor: value_field_def.subtype, emit_defaults: emit_defaults)
|
|
237
259
|
return_value[hash_key] = hash_value
|
|
238
260
|
end
|
|
239
261
|
return_value
|
|
240
262
|
end
|
|
241
263
|
|
|
242
|
-
def repeated_field_create_array(array, field_descriptor, type)
|
|
264
|
+
def repeated_field_create_array(array, field_descriptor, type, emit_defaults = false)
|
|
243
265
|
return_value = []
|
|
244
266
|
n = (array.nil? || array.null?) ? 0 : Google::Protobuf::FFI.array_size(array)
|
|
245
267
|
0.upto(n - 1) do |i|
|
|
246
268
|
message_value = Google::Protobuf::FFI.get_msgval_at(array, i)
|
|
247
|
-
return_value << scalar_create_hash(message_value, type, field_descriptor: field_descriptor)
|
|
269
|
+
return_value << scalar_create_hash(message_value, type, field_descriptor: field_descriptor, emit_defaults: emit_defaults)
|
|
248
270
|
end
|
|
249
271
|
return_value
|
|
250
272
|
end
|
|
251
273
|
|
|
252
274
|
# @param field_descriptor [FieldDescriptor] Descriptor of the field to convert to a hash.
|
|
253
|
-
def scalar_create_hash(message_value, type, field_descriptor: nil, msg_or_enum_descriptor: nil)
|
|
275
|
+
def scalar_create_hash(message_value, type, field_descriptor: nil, msg_or_enum_descriptor: nil, emit_defaults: false)
|
|
254
276
|
if [:message, :enum].include? type
|
|
255
277
|
if field_descriptor.nil?
|
|
256
278
|
if msg_or_enum_descriptor.nil?
|
|
@@ -260,7 +282,7 @@ module Google
|
|
|
260
282
|
msg_or_enum_descriptor = field_descriptor.subtype
|
|
261
283
|
end
|
|
262
284
|
if type == :message
|
|
263
|
-
to_h_internal(message_value[:msg_val], msg_or_enum_descriptor)
|
|
285
|
+
to_h_internal(message_value[:msg_val], msg_or_enum_descriptor, emit_defaults)
|
|
264
286
|
elsif type == :enum
|
|
265
287
|
convert_upb_to_ruby message_value, type, msg_or_enum_descriptor
|
|
266
288
|
end
|
|
@@ -20,7 +20,6 @@ module Google
|
|
|
20
20
|
|
|
21
21
|
# MapIterator
|
|
22
22
|
attach_function :map_next, :upb_MapIterator_Next, [:Map, :pointer], :bool
|
|
23
|
-
attach_function :map_done, :upb_MapIterator_Done, [:Map, :size_t], :bool
|
|
24
23
|
attach_function :map_key, :upb_MapIterator_Key, [:Map, :size_t], MessageValue.by_value
|
|
25
24
|
attach_function :map_value, :upb_MapIterator_Value, [:Map, :size_t], MessageValue.by_value
|
|
26
25
|
end
|
|
@@ -137,8 +137,16 @@ module Google
|
|
|
137
137
|
encoding.read(:pointer).read_string(size_ptr.read(:size_t)).hash
|
|
138
138
|
end
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
##
|
|
141
|
+
# call-seq:
|
|
142
|
+
# Message.to_h(emit_defaults: false) => hash
|
|
143
|
+
#
|
|
144
|
+
# Returns the message as a Ruby Hash object, with keys as symbols. With
|
|
145
|
+
# emit_defaults: true, fields that have no presence are also included with
|
|
146
|
+
# their default values. Fields that have presence (message fields, oneof
|
|
147
|
+
# fields and fields with explicit presence) are included only when set.
|
|
148
|
+
def to_h(emit_defaults: false)
|
|
149
|
+
to_h_internal @msg, self.class.descriptor, emit_defaults
|
|
142
150
|
end
|
|
143
151
|
|
|
144
152
|
##
|
|
@@ -67,8 +67,14 @@ module Google
|
|
|
67
67
|
# also includes Enumerable; combined with this method, the repeated field thus
|
|
68
68
|
# acts like an ordinary Ruby sequence.
|
|
69
69
|
def each &block
|
|
70
|
-
|
|
70
|
+
# The length is re-read every iteration: the block can clear or shrink
|
|
71
|
+
# the field, and a cached length would then read past the end of the
|
|
72
|
+
# upb array.
|
|
73
|
+
i = 0
|
|
74
|
+
while i < length
|
|
75
|
+
element = Google::Protobuf::FFI.get_msgval_at(array, i)
|
|
71
76
|
yield(convert_upb_to_ruby(element, type, descriptor, arena))
|
|
77
|
+
i += 1
|
|
72
78
|
end
|
|
73
79
|
self
|
|
74
80
|
end
|
|
@@ -222,6 +228,8 @@ module Google
|
|
|
222
228
|
return true if other.object_id == object_id
|
|
223
229
|
if other.is_a? RepeatedField
|
|
224
230
|
return false unless other.length == length
|
|
231
|
+
return true if length == 0
|
|
232
|
+
return false if type != other.send(:type) or descriptor != other.send(:descriptor)
|
|
225
233
|
each_msg_val_with_index do |msg_val, i|
|
|
226
234
|
other_msg_val = Google::Protobuf::FFI.get_msgval_at(other.send(:array), i)
|
|
227
235
|
unless Google::Protobuf::FFI.message_value_equal(msg_val, other_msg_val, type, descriptor)
|
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
require 'google/protobuf/descriptor_pb'
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
descriptor_data = "\n,google/protobuf/json_enumvalue_options.proto\x12\x0cpb.enumvalue\x1a google/protobuf/descriptor.proto\"(\n\x14JsonEnumValueOptions\x12\x0e\n\x06string\x18\x01 \x01(\tX\x01:\\\n\x04json\x12!.google.protobuf.EnumValueOptions\x18\xe6\x07 \x01(\x0b\x32\".pb.enumvalue.JsonEnumValueOptionsB\x06\xb2\x01\x03\x08\xea\x07\
|
|
10
|
+
descriptor_data = "\n,google/protobuf/json_enumvalue_options.proto\x12\x0cpb.enumvalue\x1a google/protobuf/descriptor.proto\"(\n\x14JsonEnumValueOptions\x12\x0e\n\x06string\x18\x01 \x01(\tX\x01:\\\n\x04json\x12!.google.protobuf.EnumValueOptions\x18\xe6\x07 \x01(\x0b\x32\".pb.enumvalue.JsonEnumValueOptionsB\x06\xb2\x01\x03\x08\xea\x07\x42J\n\x18\x63om.google.protobuf.utilZ.google.golang.org/protobuf/types/jsonoptionspbb\x08\x65\x64itionsp\xe9\x07"
|
|
11
11
|
|
|
12
12
|
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
13
13
|
pool.add_serialized_file(descriptor_data)
|
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
require 'google/protobuf/json_enumvalue_options_pb'
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
descriptor_data = "\n\"google/protobuf/json_options.proto\x12\x02pb\x1a,google/protobuf/json_enumvalue_options.
|
|
10
|
+
descriptor_data = "\n\"google/protobuf/json_options.proto\x12\x02pb\x1a,google/protobuf/json_enumvalue_options.protoBJ\n\x18\x63om.google.protobuf.utilZ.google.golang.org/protobuf/types/jsonoptionspbP\x00\x62\x08\x65\x64itionsp\xe9\x07"
|
|
11
11
|
|
|
12
12
|
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
13
13
|
pool.add_serialized_file(descriptor_data)
|
|
@@ -52,7 +52,8 @@ module Google
|
|
|
52
52
|
:pack, :permutation, :product, :pretty_print, :pretty_print_cycle,
|
|
53
53
|
:rassoc, :repeated_combination, :repeated_permutation, :reverse,
|
|
54
54
|
:rindex, :rotate, :sample, :shuffle, :shelljoin,
|
|
55
|
-
:to_s, :transpose, :union, :uniq,
|
|
55
|
+
:to_s, :transpose, :union, :uniq, :|,
|
|
56
|
+
:values_at
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
def first(n=nil)
|
|
@@ -95,7 +96,6 @@ module Google
|
|
|
95
96
|
|
|
96
97
|
# array aliases into enumerable
|
|
97
98
|
alias_method :slice, :[]
|
|
98
|
-
alias_method :values_at, :select
|
|
99
99
|
alias_method :map, :collect
|
|
100
100
|
|
|
101
101
|
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: google-protobuf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.37.0.rc.1
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Protobuf Authors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,20 +38,6 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '1'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - ">="
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '0'
|
|
47
|
-
name: bigdecimal
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|
|
57
43
|
requirements:
|
|
@@ -136,6 +122,20 @@ dependencies:
|
|
|
136
122
|
- - "~>"
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
124
|
version: '3.7'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - ">="
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0'
|
|
131
|
+
name: bigdecimal
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
139
|
description: Protocol Buffers are Google's data interchange format.
|
|
140
140
|
email: protobuf@googlegroups.com
|
|
141
141
|
executables: []
|
|
@@ -204,7 +204,7 @@ homepage: https://developers.google.com/protocol-buffers
|
|
|
204
204
|
licenses:
|
|
205
205
|
- BSD-3-Clause
|
|
206
206
|
metadata:
|
|
207
|
-
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/
|
|
207
|
+
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v37.0-rc1/ruby
|
|
208
208
|
post_install_message:
|
|
209
209
|
rdoc_options: []
|
|
210
210
|
require_paths:
|
|
@@ -216,9 +216,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
216
216
|
version: '3.2'
|
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
218
|
requirements:
|
|
219
|
-
- - "
|
|
219
|
+
- - ">"
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
|
-
version:
|
|
221
|
+
version: 1.3.1
|
|
222
222
|
requirements: []
|
|
223
223
|
rubygems_version: 3.3.26
|
|
224
224
|
signing_key:
|