#include #include struct pass_value{ char **keys; xmmsv_t **values; int count; }; void unfold_dict_foreach (const char *key, xmmsv_t *value, void *keys_values_void){ struct pass_value *keys_values; keys_values = (struct pass_value *) keys_values_void; keys_values->keys[keys_values->count] = (char*) key; keys_values->values[keys_values->count] = value; keys_values->count++; } char** allocate_keys(int n){ return malloc(sizeof(char*) * (n + 1)); } void free_keys(char** keys){ free(keys); } xmmsv_t** allocate_values(int n){ return malloc(sizeof(xmmsv_t *) * (n + 1)); } void free_values(xmmsv_t** values){ free(values); } extern void xmmsv_get_dict(char **key, xmmsv_t **value, xmmsv_t *dict){ struct pass_value keys_values; keys_values.keys = key; keys_values.values = value; keys_values.count = 0; xmmsv_dict_foreach (dict, unfold_dict_foreach, (void*)(&keys_values)); key[keys_values.count]=NULL; value[keys_values.count]=NULL; }