google-protobuf 3.2.1.pre-x86-linux → 3.3.0-x86-linux

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a7cc36db1cfa569b99798183cebd30ade29e86c
4
- data.tar.gz: 007eb3a576bf14b2232de2793cf1fd136840a0b2
3
+ metadata.gz: d7cb1d03b63976874801182545d85e0d5443b45a
4
+ data.tar.gz: c449f7765f8bfd174766b17a9ce11b47069320c2
5
5
  SHA512:
6
- metadata.gz: 5ea1a985294b146c5ed661d8f4d92d52f08819afc9cbb41caa026deadcff69132f34a8883b1f51ff6f5906e7af0fe0580dc4594300c476f29248c00a3aedd9c1
7
- data.tar.gz: bfc73a9c13056ceff4bde61cda244936675036942c12844a6555976a078d701ccf40b5f519bd0d2ae7dccefad4eff4f5a22ded2b39a8d826879b266a1dc4a773
6
+ metadata.gz: 3c2e7a7935c3b221916527dffd35a4c4895c4e86be1f875f11c5d2a8c90156fa0f2b204625f9330a16f277e45b5599558a2fb31672023ce93b776ab4ebc3546b
7
+ data.tar.gz: 1188c4309d06b272dc4064e3715bf4c93956f86a8232ee1d42c3382225f6b5eaf14f36587e84c4b211499f17f9aa003feaa5c9d6fd7f38637e757f7a827aa022
@@ -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 (upb_fielddef_label(field) == UPB_LABEL_REPEATED) {
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 that we
34
- // avoid depending on the 2.14 version of the symbol. This way, distributions
35
- // that are using pre-2.14 versions of glibc can successfully use the gem we
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
- #ifdef __x86_64__
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
@@ -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.2.1.pre
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-03-10 00:00:00.000000000 Z
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: 1.3.1
135
+ version: '0'
136
136
  requirements: []
137
137
  rubyforge_project:
138
138
  rubygems_version: 2.6.10