google-protobuf 3.2.1.pre-x86-linux → 3.3.0-x86-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.
Potentially problematic release.
This version of google-protobuf might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ext/google/protobuf_c/map.c +31 -0
- data/ext/google/protobuf_c/message.c +12 -2
- data/ext/google/protobuf_c/protobuf.h +2 -0
- data/ext/google/protobuf_c/wrap_memcpy.c +5 -5
- data/lib/google/2.0/protobuf_c.so +0 -0
- data/lib/google/2.1/protobuf_c.so +0 -0
- data/lib/google/2.2/protobuf_c.so +0 -0
- data/lib/google/2.3/protobuf_c.so +0 -0
- data/lib/google/2.4/protobuf_c.so +0 -0
- data/tests/basic.rb +10 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7cb1d03b63976874801182545d85e0d5443b45a
|
4
|
+
data.tar.gz: c449f7765f8bfd174766b17a9ce11b47069320c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c2e7a7935c3b221916527dffd35a4c4895c4e86be1f875f11c5d2a8c90156fa0f2b204625f9330a16f277e45b5599558a2fb31672023ce93b776ab4ebc3546b
|
7
|
+
data.tar.gz: 1188c4309d06b272dc4064e3715bf4c93956f86a8232ee1d42c3382225f6b5eaf14f36587e84c4b211499f17f9aa003feaa5c9d6fd7f38637e757f7a827aa022
|
data/ext/google/protobuf_c/map.c
CHANGED
@@ -652,6 +652,35 @@ VALUE Map_hash(VALUE _self) {
|
|
652
652
|
return INT2FIX(h);
|
653
653
|
}
|
654
654
|
|
655
|
+
/*
|
656
|
+
* call-seq:
|
657
|
+
* Map.to_h => {}
|
658
|
+
*
|
659
|
+
* Returns a Ruby Hash object containing all the values within the map
|
660
|
+
*/
|
661
|
+
VALUE Map_to_h(VALUE _self) {
|
662
|
+
Map* self = ruby_to_Map(_self);
|
663
|
+
VALUE hash = rb_hash_new();
|
664
|
+
upb_strtable_iter it;
|
665
|
+
for (upb_strtable_begin(&it, &self->table);
|
666
|
+
!upb_strtable_done(&it);
|
667
|
+
upb_strtable_next(&it)) {
|
668
|
+
VALUE key = table_key_to_ruby(
|
669
|
+
self, upb_strtable_iter_key(&it), upb_strtable_iter_keylength(&it));
|
670
|
+
upb_value v = upb_strtable_iter_value(&it);
|
671
|
+
void* mem = value_memory(&v);
|
672
|
+
VALUE value = native_slot_get(self->value_type,
|
673
|
+
self->value_type_class,
|
674
|
+
mem);
|
675
|
+
|
676
|
+
if (self->value_type == UPB_TYPE_MESSAGE) {
|
677
|
+
value = Message_to_h(value);
|
678
|
+
}
|
679
|
+
rb_hash_aset(hash, key, value);
|
680
|
+
}
|
681
|
+
return hash;
|
682
|
+
}
|
683
|
+
|
655
684
|
/*
|
656
685
|
* call-seq:
|
657
686
|
* Map.inspect => string
|
@@ -804,6 +833,8 @@ void Map_register(VALUE module) {
|
|
804
833
|
rb_define_method(klass, "dup", Map_dup, 0);
|
805
834
|
rb_define_method(klass, "==", Map_eq, 1);
|
806
835
|
rb_define_method(klass, "hash", Map_hash, 0);
|
836
|
+
rb_define_method(klass, "to_hash", Map_to_h, 0);
|
837
|
+
rb_define_method(klass, "to_h", Map_to_h, 0);
|
807
838
|
rb_define_method(klass, "inspect", Map_inspect, 0);
|
808
839
|
rb_define_method(klass, "merge", Map_merge, 1);
|
809
840
|
rb_include_module(klass, rb_mEnumerable);
|
@@ -394,7 +394,12 @@ VALUE Message_inspect(VALUE _self) {
|
|
394
394
|
return str;
|
395
395
|
}
|
396
396
|
|
397
|
-
|
397
|
+
/*
|
398
|
+
* call-seq:
|
399
|
+
* Message.to_h => {}
|
400
|
+
*
|
401
|
+
* Returns the message as a Ruby Hash object, with keys as symbols.
|
402
|
+
*/
|
398
403
|
VALUE Message_to_h(VALUE _self) {
|
399
404
|
MessageHeader* self;
|
400
405
|
VALUE hash;
|
@@ -410,8 +415,13 @@ VALUE Message_to_h(VALUE _self) {
|
|
410
415
|
VALUE msg_value = layout_get(self->descriptor->layout, Message_data(self),
|
411
416
|
field);
|
412
417
|
VALUE msg_key = ID2SYM(rb_intern(upb_fielddef_name(field)));
|
413
|
-
if (
|
418
|
+
if (upb_fielddef_ismap(field)) {
|
419
|
+
msg_value = Map_to_h(msg_value);
|
420
|
+
} else if (upb_fielddef_label(field) == UPB_LABEL_REPEATED) {
|
414
421
|
msg_value = RepeatedField_to_ary(msg_value);
|
422
|
+
} else if (msg_value != Qnil &&
|
423
|
+
upb_fielddef_type(field) == UPB_TYPE_MESSAGE) {
|
424
|
+
msg_value = Message_to_h(msg_value);
|
415
425
|
}
|
416
426
|
rb_hash_aset(hash, msg_key, msg_value);
|
417
427
|
}
|
@@ -424,6 +424,7 @@ VALUE Map_dup(VALUE _self);
|
|
424
424
|
VALUE Map_deep_copy(VALUE _self);
|
425
425
|
VALUE Map_eq(VALUE _self, VALUE _other);
|
426
426
|
VALUE Map_hash(VALUE _self);
|
427
|
+
VALUE Map_to_h(VALUE _self);
|
427
428
|
VALUE Map_inspect(VALUE _self);
|
428
429
|
VALUE Map_merge(VALUE _self, VALUE hashmap);
|
429
430
|
VALUE Map_merge_into_self(VALUE _self, VALUE hashmap);
|
@@ -496,6 +497,7 @@ VALUE Message_deep_copy(VALUE _self);
|
|
496
497
|
VALUE Message_eq(VALUE _self, VALUE _other);
|
497
498
|
VALUE Message_hash(VALUE _self);
|
498
499
|
VALUE Message_inspect(VALUE _self);
|
500
|
+
VALUE Message_to_h(VALUE _self);
|
499
501
|
VALUE Message_index(VALUE _self, VALUE field_name);
|
500
502
|
VALUE Message_index_set(VALUE _self, VALUE field_name, VALUE value);
|
501
503
|
VALUE Message_descriptor(VALUE klass);
|
@@ -30,15 +30,15 @@
|
|
30
30
|
|
31
31
|
#include <string.h>
|
32
32
|
|
33
|
-
// On x86-64 Linux, we link against the 2.2.5 version of memcpy so
|
34
|
-
// avoid depending on the 2.14 version of the symbol. This way,
|
35
|
-
// that are using pre-2.14 versions of glibc can successfully use
|
36
|
-
// distribute (https://github.com/google/protobuf/issues/2783).
|
33
|
+
// On x86-64 Linux with glibc, we link against the 2.2.5 version of memcpy so
|
34
|
+
// that we avoid depending on the 2.14 version of the symbol. This way,
|
35
|
+
// distributions that are using pre-2.14 versions of glibc can successfully use
|
36
|
+
// the gem we distribute (https://github.com/google/protobuf/issues/2783).
|
37
37
|
//
|
38
38
|
// This wrapper is enabled by passing the linker flags -Wl,-wrap,memcpy in
|
39
39
|
// extconf.rb.
|
40
40
|
#ifdef __linux__
|
41
|
-
#
|
41
|
+
#if defined(__x86_64__) && defined(__GNU_LIBRARY__)
|
42
42
|
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
|
43
43
|
void *__wrap_memcpy(void *dest, const void *src, size_t n) {
|
44
44
|
return memcpy(dest, src, n);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/tests/basic.rb
CHANGED
@@ -927,6 +927,16 @@ module BasicTest
|
|
927
927
|
:repeated_uint64=>[]
|
928
928
|
}
|
929
929
|
assert_equal expected_result, m.to_h
|
930
|
+
|
931
|
+
m = MapMessage.new(
|
932
|
+
:map_string_int32 => {"a" => 1, "b" => 2},
|
933
|
+
:map_string_msg => {"a" => TestMessage2.new(:foo => 1),
|
934
|
+
"b" => TestMessage2.new(:foo => 2)})
|
935
|
+
expected_result = {
|
936
|
+
:map_string_int32 => {"a" => 1, "b" => 2},
|
937
|
+
:map_string_msg => {"a" => {:foo => 1}, "b" => {:foo => 2}}
|
938
|
+
}
|
939
|
+
assert_equal expected_result, m.to_h
|
930
940
|
end
|
931
941
|
|
932
942
|
|
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: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: x86-linux
|
6
6
|
authors:
|
7
7
|
- Protobuf Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler-dock
|
@@ -130,9 +130,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '2.5'
|
131
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
132
|
requirements:
|
133
|
-
- - "
|
133
|
+
- - ">="
|
134
134
|
- !ruby/object:Gem::Version
|
135
|
-
version:
|
135
|
+
version: '0'
|
136
136
|
requirements: []
|
137
137
|
rubyforge_project:
|
138
138
|
rubygems_version: 2.6.10
|