XMMS-0.1: cbits/XMMSUtils.c
#include <xmmsclient/xmmsclient.h>
#include <stdlib.h>
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;
}