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 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