void msgpack_rpc_free_stringarray(StringArray value) { for (uint32_t i = 0; i < value.size; i++) { msgpack_rpc_free_string(value.items[i]); } free(value.items); }
void msgpack_rpc_free_object(Object value) { switch (value.type) { case kObjectTypeNil: case kObjectTypeBool: case kObjectTypeInt: case kObjectTypeFloat: break; case kObjectTypeString: msgpack_rpc_free_string(value.data.string); break; case kObjectTypeArray: msgpack_rpc_free_array(value.data.array); break; case kObjectTypeDictionary: msgpack_rpc_free_dictionary(value.data.dictionary); break; default: abort(); } }
void msgpack_rpc_free_dictionary(Dictionary value) { for (uint32_t i = 0; i < value.size; i++) { msgpack_rpc_free_string(value.items[i].key); msgpack_rpc_free_object(value.items[i].value); } free(value.items); }
void msgpack_rpc_free_object(Object value) { switch (value.type) { case kObjectTypeNil: case kObjectTypeBoolean: case kObjectTypeInteger: case kObjectTypeFloat: case kObjectTypePosition: case kObjectTypeBuffer: case kObjectTypeWindow: case kObjectTypeTabpage: break; case kObjectTypeString: msgpack_rpc_free_string(value.data.string); break; case kObjectTypeArray: msgpack_rpc_free_array(value.data.array); break; case kObjectTypeStringArray: msgpack_rpc_free_stringarray(value.data.stringarray); break; case kObjectTypeBufferArray: msgpack_rpc_free_bufferarray(value.data.bufferarray); break; case kObjectTypeWindowArray: msgpack_rpc_free_windowarray(value.data.windowarray); break; case kObjectTypeTabpageArray: msgpack_rpc_free_tabpagearray(value.data.tabpagearray); break; case kObjectTypeDictionary: msgpack_rpc_free_dictionary(value.data.dictionary); break; default: abort(); } }