OLD | NEW |
1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
2 // Copyright 2014 Google Inc. All rights reserved. | 2 // Copyright 2014 Google Inc. All rights reserved. |
3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
4 // | 4 // |
5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
7 // met: | 7 // met: |
8 // | 8 // |
9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 upb_msgdef_unref(self->msgdef, &self->msgdef); | 236 upb_msgdef_unref(self->msgdef, &self->msgdef); |
237 if (self->layout) { | 237 if (self->layout) { |
238 free_layout(self->layout); | 238 free_layout(self->layout); |
239 } | 239 } |
240 if (self->fill_handlers) { | 240 if (self->fill_handlers) { |
241 upb_handlers_unref(self->fill_handlers, &self->fill_handlers); | 241 upb_handlers_unref(self->fill_handlers, &self->fill_handlers); |
242 } | 242 } |
243 if (self->fill_method) { | 243 if (self->fill_method) { |
244 upb_pbdecodermethod_unref(self->fill_method, &self->fill_method); | 244 upb_pbdecodermethod_unref(self->fill_method, &self->fill_method); |
245 } | 245 } |
| 246 if (self->json_fill_method) { |
| 247 upb_json_parsermethod_unref(self->json_fill_method, |
| 248 &self->json_fill_method); |
| 249 } |
246 if (self->pb_serialize_handlers) { | 250 if (self->pb_serialize_handlers) { |
247 upb_handlers_unref(self->pb_serialize_handlers, | 251 upb_handlers_unref(self->pb_serialize_handlers, |
248 &self->pb_serialize_handlers); | 252 &self->pb_serialize_handlers); |
249 } | 253 } |
250 if (self->json_serialize_handlers) { | 254 if (self->json_serialize_handlers) { |
251 upb_handlers_unref(self->json_serialize_handlers, | 255 upb_handlers_unref(self->json_serialize_handlers, |
252 &self->json_serialize_handlers); | 256 &self->json_serialize_handlers); |
253 } | 257 } |
| 258 if (self->json_serialize_handlers_preserve) { |
| 259 upb_handlers_unref(self->json_serialize_handlers_preserve, |
| 260 &self->json_serialize_handlers_preserve); |
| 261 } |
254 xfree(self); | 262 xfree(self); |
255 } | 263 } |
256 | 264 |
257 /* | 265 /* |
258 * call-seq: | 266 * call-seq: |
259 * Descriptor.new => descriptor | 267 * Descriptor.new => descriptor |
260 * | 268 * |
261 * Creates a new, empty, message type descriptor. At a minimum, its name must be | 269 * Creates a new, empty, message type descriptor. At a minimum, its name must be |
262 * set before it is added to a pool. It cannot be used to create messages until | 270 * set before it is added to a pool. It cannot be used to create messages until |
263 * it is added to a pool, after which it becomes immutable (as part of a | 271 * it is added to a pool, after which it becomes immutable (as part of a |
264 * finalization process). | 272 * finalization process). |
265 */ | 273 */ |
266 VALUE Descriptor_alloc(VALUE klass) { | 274 VALUE Descriptor_alloc(VALUE klass) { |
267 Descriptor* self = ALLOC(Descriptor); | 275 Descriptor* self = ALLOC(Descriptor); |
268 VALUE ret = TypedData_Wrap_Struct(klass, &_Descriptor_type, self); | 276 VALUE ret = TypedData_Wrap_Struct(klass, &_Descriptor_type, self); |
269 self->msgdef = upb_msgdef_new(&self->msgdef); | 277 self->msgdef = upb_msgdef_new(&self->msgdef); |
270 self->klass = Qnil; | 278 self->klass = Qnil; |
271 self->layout = NULL; | 279 self->layout = NULL; |
272 self->fill_handlers = NULL; | 280 self->fill_handlers = NULL; |
273 self->fill_method = NULL; | 281 self->fill_method = NULL; |
| 282 self->json_fill_method = NULL; |
274 self->pb_serialize_handlers = NULL; | 283 self->pb_serialize_handlers = NULL; |
275 self->json_serialize_handlers = NULL; | 284 self->json_serialize_handlers = NULL; |
| 285 self->json_serialize_handlers_preserve = NULL; |
276 self->typeclass_references = rb_ary_new(); | 286 self->typeclass_references = rb_ary_new(); |
277 return ret; | 287 return ret; |
278 } | 288 } |
279 | 289 |
280 void Descriptor_register(VALUE module) { | 290 void Descriptor_register(VALUE module) { |
281 VALUE klass = rb_define_class_under( | 291 VALUE klass = rb_define_class_under( |
282 module, "Descriptor", rb_cObject); | 292 module, "Descriptor", rb_cObject); |
283 rb_define_alloc_func(klass, Descriptor_alloc); | 293 rb_define_alloc_func(klass, Descriptor_alloc); |
284 rb_define_method(klass, "each", Descriptor_each, 0); | 294 rb_define_method(klass, "each", Descriptor_each, 0); |
285 rb_define_method(klass, "lookup", Descriptor_lookup, 1); | 295 rb_define_method(klass, "lookup", Descriptor_lookup, 1); |
(...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1744 "Unable to add defs to DescriptorPool"); | 1754 "Unable to add defs to DescriptorPool"); |
1745 | 1755 |
1746 for (int i = 0; i < RARRAY_LEN(self->pending_list); i++) { | 1756 for (int i = 0; i < RARRAY_LEN(self->pending_list); i++) { |
1747 VALUE def_rb = rb_ary_entry(self->pending_list, i); | 1757 VALUE def_rb = rb_ary_entry(self->pending_list, i); |
1748 add_def_obj(self->defs[i], def_rb); | 1758 add_def_obj(self->defs[i], def_rb); |
1749 } | 1759 } |
1750 | 1760 |
1751 self->pending_list = rb_ary_new(); | 1761 self->pending_list = rb_ary_new(); |
1752 return Qnil; | 1762 return Qnil; |
1753 } | 1763 } |
OLD | NEW |