static void Factory_free(msgpack_factory_t* fc) { if(fc == NULL) { return; } msgpack_packer_ext_registry_destroy(&fc->pkrg); msgpack_unpacker_ext_registry_destroy(&fc->ukrg); xfree(fc); }
static void Packer_free(msgpack_packer_t* pk) { if(pk == NULL) { return; } msgpack_packer_ext_registry_destroy(&pk->ext_registry); msgpack_packer_destroy(pk); xfree(pk); }
VALUE MessagePack_Factory_packer(int argc, VALUE* argv, VALUE self) { FACTORY(self, fc); VALUE packer = MessagePack_Packer_alloc(cMessagePack_Packer); MessagePack_Packer_initialize(argc, argv, packer); msgpack_packer_t* pk; Data_Get_Struct(packer, msgpack_packer_t, pk); msgpack_packer_ext_registry_destroy(&pk->ext_registry); msgpack_packer_ext_registry_dup(&fc->pkrg, &pk->ext_registry); pk->has_symbol_ext_type = fc->has_symbol_ext_type; return packer; }