|
|
|
@ -511,8 +511,8 @@ VALUE Message_dup(VALUE _self) { |
|
|
|
|
return new_msg; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* :nodoc: */ |
|
|
|
|
static VALUE Message_deep_copy(VALUE _self) { |
|
|
|
|
// Internal only; used by Google::Protobuf.deep_copy.
|
|
|
|
|
VALUE Message_deep_copy(VALUE _self) { |
|
|
|
|
MessageHeader* self; |
|
|
|
|
MessageHeader* new_msg_self; |
|
|
|
|
VALUE new_msg; |
|
|
|
@ -742,7 +742,6 @@ VALUE build_class_from_descriptor(Descriptor* desc) { |
|
|
|
|
rb_define_method(klass, "to_s", Message_inspect, 0); |
|
|
|
|
rb_define_method(klass, "[]", Message_index, 1); |
|
|
|
|
rb_define_method(klass, "[]=", Message_index_set, 2); |
|
|
|
|
rb_define_method(klass, "deep_copy", Message_deep_copy, 0); |
|
|
|
|
rb_define_singleton_method(klass, "decode", Message_decode, 1); |
|
|
|
|
rb_define_singleton_method(klass, "encode", Message_encode, 1); |
|
|
|
|
rb_define_singleton_method(klass, "decode_json", Message_decode_json, -1); |
|
|
|
@ -830,3 +829,21 @@ VALUE build_module_from_enumdesc(EnumDescriptor* enumdesc) { |
|
|
|
|
|
|
|
|
|
return mod; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* call-seq: |
|
|
|
|
* Google::Protobuf.deep_copy(obj) => copy_of_obj |
|
|
|
|
* |
|
|
|
|
* Performs a deep copy of a RepeatedField instance, a Map instance, or a |
|
|
|
|
* message object, recursively copying its members. |
|
|
|
|
*/ |
|
|
|
|
VALUE Google_Protobuf_deep_copy(VALUE self, VALUE obj) { |
|
|
|
|
VALUE klass = CLASS_OF(obj); |
|
|
|
|
if (klass == cRepeatedField) { |
|
|
|
|
return RepeatedField_deep_copy(obj); |
|
|
|
|
} else if (klass == cMap) { |
|
|
|
|
return Map_deep_copy(obj); |
|
|
|
|
} else { |
|
|
|
|
return Message_deep_copy(obj); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|