XMMS2
xmmsv.h
Go to the documentation of this file.
1 /* XMMS2 - X Music Multiplexer System
2  * Copyright (C) 2003-2009 XMMS2 Team
3  *
4  * PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  */
16 
17 #ifndef __XMMSV_H__
18 #define __XMMSV_H__
19 
20 #include <stdarg.h>
21 #include "xmmsc/xmmsc_compiler.h"
22 #include "xmmsc/xmmsc_stdint.h"
23 #include "xmmsc/xmmsv_coll.h"
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 typedef enum {
39 } xmmsv_type_t;
40 
41 static inline xmmsv_type_t XMMSV_TYPE_UINT32_IS_DEPRECATED(void) XMMS_DEPRECATED;
42 static inline xmmsv_type_t
43 XMMSV_TYPE_UINT32_IS_DEPRECATED (void)
44 {
45  return XMMSV_TYPE_INT32;
46 }
47 #define XMMSV_TYPE_UINT32 XMMSV_TYPE_UINT32_IS_DEPRECATED()
48 
49 
50 
51 typedef struct xmmsv_St xmmsv_t;
52 
53 typedef struct xmmsv_list_iter_St xmmsv_list_iter_t;
54 typedef struct xmmsv_dict_iter_St xmmsv_dict_iter_t;
55 
56 xmmsv_t *xmmsv_new_none (void);
57 xmmsv_t *xmmsv_new_error (const char *errstr); /* FIXME: err id? */
58 xmmsv_t *xmmsv_new_int (int32_t i);
59 xmmsv_t *xmmsv_new_string (const char *s);
61 xmmsv_t *xmmsv_new_bin (unsigned char *data, unsigned int len);
62 
63 xmmsv_t *xmmsv_new_list (void);
64 xmmsv_t *xmmsv_new_dict (void);
65 
66 xmmsv_t *xmmsv_ref (xmmsv_t *val);
67 void xmmsv_unref (xmmsv_t *val);
68 
69 xmmsv_type_t xmmsv_get_type (const xmmsv_t *val);
70 int xmmsv_is_type (const xmmsv_t *val, xmmsv_type_t t);
71 
72 /* legacy aliases */
73 int xmmsv_is_error (const xmmsv_t *val);
74 int xmmsv_is_list (const xmmsv_t *val) XMMS_DEPRECATED;
75 int xmmsv_is_dict (const xmmsv_t *val) XMMS_DEPRECATED;
76 
77 const char * xmmsv_get_error_old (const xmmsv_t *val) XMMS_DEPRECATED;
78 xmmsv_t *xmmsv_make_stringlist (char *array[], int num);
79 
80 typedef void (*xmmsv_list_foreach_func) (xmmsv_t *value, void *user_data);
81 typedef void (*xmmsv_dict_foreach_func) (const char *key, xmmsv_t *value, void *user_data);
82 
83 /* legacy transitional utilities */
84 xmmsv_type_t xmmsv_dict_entry_get_type (xmmsv_t *val, const char *key);
85 xmmsv_t *xmmsv_propdict_to_dict (xmmsv_t *propdict, const char **src_prefs);
86 
87 int xmmsv_get_error (const xmmsv_t *val, const char **r);
88 int xmmsv_get_int (const xmmsv_t *val, int32_t *r);
89 int xmmsv_get_uint (const xmmsv_t *val, uint32_t *r) XMMS_DEPRECATED;
90 int xmmsv_get_string (const xmmsv_t *val, const char **r);
91 int xmmsv_get_coll (const xmmsv_t *val, xmmsv_coll_t **coll);
92 int xmmsv_get_bin (const xmmsv_t *val, const unsigned char **r, unsigned int *rlen);
93 
94 int xmmsv_get_list_iter (const xmmsv_t *val, xmmsv_list_iter_t **it);
95 int xmmsv_get_dict_iter (const xmmsv_t *val, xmmsv_dict_iter_t **it);
96 
99 
100 
101 /* List */
102 int xmmsv_list_get (xmmsv_t *listv, int pos, xmmsv_t **val);
103 int xmmsv_list_set (xmmsv_t *listv, int pos, xmmsv_t *val);
104 int xmmsv_list_append (xmmsv_t *listv, xmmsv_t *val);
105 int xmmsv_list_insert (xmmsv_t *listv, int pos, xmmsv_t *val);
106 int xmmsv_list_remove (xmmsv_t *listv, int pos);
107 int xmmsv_list_move (xmmsv_t *listv, int old_pos, int new_pos);
108 int xmmsv_list_clear (xmmsv_t *listv);
109 int xmmsv_list_foreach (xmmsv_t *listv, xmmsv_list_foreach_func func, void* user_data);
110 int xmmsv_list_get_size (xmmsv_t *listv);
111 int xmmsv_list_restrict_type (xmmsv_t *listv, xmmsv_type_t type);
112 
113 int xmmsv_list_get_string (xmmsv_t *v, int pos, const char **val);
114 int xmmsv_list_get_int (xmmsv_t *v, int pos, int32_t *val);
115 int xmmsv_list_get_coll (xmmsv_t *v, int pos, xmmsv_coll_t **val);
116 
117 int xmmsv_list_set_string (xmmsv_t *v, int pos, const char *val);
118 int xmmsv_list_set_int (xmmsv_t *v, int pos, int32_t val);
119 int xmmsv_list_set_coll (xmmsv_t *v, int pos, xmmsv_coll_t *val);
120 
121 int xmmsv_list_insert_string (xmmsv_t *v, int pos, const char *val);
122 int xmmsv_list_insert_int (xmmsv_t *v, int pos, int32_t val);
123 int xmmsv_list_insert_coll (xmmsv_t *v, int pos, xmmsv_coll_t *val);
124 
125 int xmmsv_list_append_string (xmmsv_t *v, const char *val);
126 int xmmsv_list_append_int (xmmsv_t *v, int32_t val);
128 
135 int xmmsv_list_iter_seek (xmmsv_list_iter_t *it, int pos);
138 
141 
142 int xmmsv_list_iter_entry_string (xmmsv_list_iter_t *it, const char **val);
143 int xmmsv_list_iter_entry_int (xmmsv_list_iter_t *it, int32_t *val);
145 
146 int xmmsv_list_iter_insert_string (xmmsv_list_iter_t *it, const char *val);
147 int xmmsv_list_iter_insert_int (xmmsv_list_iter_t *it, int32_t val);
149 
150 
151 /* Dict */
152 int xmmsv_dict_get (xmmsv_t *dictv, const char *key, xmmsv_t **val);
153 int xmmsv_dict_set (xmmsv_t *dictv, const char *key, xmmsv_t *val);
154 int xmmsv_dict_remove (xmmsv_t *dictv, const char *key);
155 int xmmsv_dict_clear (xmmsv_t *dictv);
156 int xmmsv_dict_foreach (xmmsv_t *dictv, xmmsv_dict_foreach_func func, void *user_data);
157 int xmmsv_dict_get_size (xmmsv_t *dictv);
158 int xmmsv_dict_has_key (xmmsv_t *dictv, const char *key);
159 
160 int xmmsv_dict_entry_get_string (xmmsv_t *val, const char *key, const char **r);
161 int xmmsv_dict_entry_get_int (xmmsv_t *val, const char *key, int32_t *r);
162 int xmmsv_dict_entry_get_coll (xmmsv_t *val, const char *key, xmmsv_coll_t **coll);
163 
164 int xmmsv_dict_set_string (xmmsv_t *val, const char *key, const char *el);
165 int xmmsv_dict_set_int (xmmsv_t *val, const char *key, int32_t el);
166 int xmmsv_dict_set_coll (xmmsv_t *val, const char *key, xmmsv_coll_t *el);
167 
168 int xmmsv_dict_iter_pair (xmmsv_dict_iter_t *it, const char **key, xmmsv_t **val);
172 int xmmsv_dict_iter_find (xmmsv_dict_iter_t *it, const char *key);
173 
176 
177 int xmmsv_dict_iter_pair_string (xmmsv_dict_iter_t *it, const char **key, const char **r);
178 int xmmsv_dict_iter_pair_int (xmmsv_dict_iter_t *it, const char **key, int32_t *r);
179 int xmmsv_dict_iter_pair_coll (xmmsv_dict_iter_t *it, const char **key, xmmsv_coll_t **r);
180 
181 int xmmsv_dict_iter_set_string (xmmsv_dict_iter_t *it, const char *elem);
182 int xmmsv_dict_iter_set_int (xmmsv_dict_iter_t *it, int32_t elem);
184 
185 /* Utils */
186 
187 #define xmmsv_check_type(type) ((type) > XMMSV_TYPE_NONE && (type) < XMMSV_TYPE_END)
188 
189 
190 xmmsv_t *xmmsv_decode_url (const xmmsv_t *url);
191 int xmmsv_dict_format (char *target, int len, const char *fmt, xmmsv_t *val);
192 
193 int xmmsv_utf8_validate (const char *str);
194 
195 
196 /* These helps us doing compiletime typechecking */
197 static inline const char *__xmmsv_identity_const_charp (const char *v) {return v;}
198 static inline xmmsv_t *__xmmsv_identity_xmmsv (xmmsv_t *v) {return v;}
199 #define XMMSV_DICT_ENTRY(k, v) __xmmsv_identity_const_charp (k), __xmmsv_identity_xmmsv (v)
200 #define XMMSV_DICT_ENTRY_STR(k, v) XMMSV_DICT_ENTRY (k, xmmsv_new_string (v))
201 #define XMMSV_DICT_ENTRY_INT(k, v) XMMSV_DICT_ENTRY (k, xmmsv_new_int (v))
202 #define XMMSV_DICT_END NULL
203 xmmsv_t *xmmsv_build_dict (const char *firstkey, ...);
204 
205 #define XMMSV_LIST_ENTRY(v) __xmmsv_identity_xmmsv (v)
206 #define XMMSV_LIST_ENTRY_STR(v) XMMSV_LIST_ENTRY (xmmsv_new_string (v))
207 #define XMMSV_LIST_ENTRY_INT(v) XMMSV_LIST_ENTRY (xmmsv_new_int (v))
208 #define XMMSV_LIST_ENTRY_COLL(v) XMMSV_LIST_ENTRY (xmmsv_new_coll (v))
209 #define XMMSV_LIST_END NULL
210 
211 xmmsv_t *xmmsv_build_list (xmmsv_t *first_entry, ...);
212 xmmsv_t *xmmsv_build_list_va (xmmsv_t *first_entry, va_list ap);
213 
214 #ifdef __cplusplus
215 }
216 #endif
217 
218 #endif
struct xmmsv_St xmmsv_t
Definition: xmmsv.h:51
xmmsv_t * xmmsv_new_dict(void)
Allocates a new dict xmmsv_t.
Definition: value.c:266
#define XMMS_DEPRECATED
int xmmsv_dict_iter_pair_coll(xmmsv_dict_iter_t *it, const char **key, xmmsv_coll_t **r)
int xmmsv_dict_iter_remove(xmmsv_dict_iter_t *it)
Remove the pair in the dict pointed at by the iterator.
Definition: value.c:2120
int xmmsv_dict_entry_get_int(xmmsv_t *val, const char *key, int32_t *r)
int xmmsv_list_set(xmmsv_t *listv, int pos, xmmsv_t *val)
Set the element at the given position in the list xmmsv_t.
Definition: value.c:1241
void xmmsv_unref(xmmsv_t *val)
Decreases the references for the xmmsv_t When the number of references reaches 0 it will be freed...
Definition: value.c:301
int xmmsv_list_iter_entry_int(xmmsv_list_iter_t *it, int32_t *val)
int xmmsv_dict_set(xmmsv_t *dictv, const char *key, xmmsv_t *val)
Insert an element under the given key in the dict xmmsv_t.
Definition: value.c:1744
int xmmsv_list_insert(xmmsv_t *listv, int pos, xmmsv_t *val)
Insert an element at the given position in the list xmmsv_t.
Definition: value.c:1274
int xmmsv_dict_set_int(xmmsv_t *val, const char *key, int32_t el)
void(* xmmsv_list_foreach_func)(xmmsv_t *value, void *user_data)
Definition: xmmsv.h:80
int xmmsv_dict_entry_get_string(xmmsv_t *val, const char *key, const char **r)
int xmmsv_list_get(xmmsv_t *listv, int pos, xmmsv_t **val)
Get the element at the given position in the list xmmsv_t.
Definition: value.c:1210
int xmmsv_dict_iter_valid(xmmsv_dict_iter_t *it)
Check whether the iterator is valid and points to a valid pair.
Definition: value.c:1975
int xmmsv_get_list_iter(const xmmsv_t *val, xmmsv_list_iter_t **it)
Retrieves a list iterator from a list xmmsv_t.
Definition: value.c:918
int xmmsv_list_iter_insert_string(xmmsv_list_iter_t *it, const char *val)
int xmmsv_list_insert_int(xmmsv_t *v, int pos, int32_t val)
xmmsv_t * xmmsv_new_error(const char *errstr)
Allocates a new error xmmsv_t.
Definition: value.c:141
int xmmsv_dict_remove(xmmsv_t *dictv, const char *key)
Remove the element corresponding to a given key in the dict xmmsv_t (if it exists).
Definition: value.c:1795
int xmmsv_list_iter_insert(xmmsv_list_iter_t *it, xmmsv_t *val)
Insert an element in the list at the position pointed at by the iterator.
Definition: value.c:1628
int xmmsv_list_get_string(xmmsv_t *v, int pos, const char **val)
int xmmsv_dict_entry_get_coll(xmmsv_t *val, const char *key, xmmsv_coll_t **coll)
xmmsv_t * xmmsv_new_none(void)
Allocates a new empty xmmsv_t.
Definition: value.c:127
int xmmsv_list_iter_entry(xmmsv_list_iter_t *it, xmmsv_t **val)
Get the element currently pointed at by the iterator.
Definition: value.c:1487
int xmmsv_list_set_coll(xmmsv_t *v, int pos, xmmsv_coll_t *val)
xmmsv_t * xmmsv_new_string(const char *s)
Allocates a new string xmmsv_t.
Definition: value.c:178
void xmmsv_list_iter_first(xmmsv_list_iter_t *it)
Rewind the iterator to the start of the list.
Definition: value.c:1515
int xmmsv_get_int(const xmmsv_t *val, int32_t *r)
Retrieves a signed integer from the value.
Definition: value.c:815
xmmsv_t * xmmsv_build_list(xmmsv_t *first_entry,...)
Definition: value.c:2270
int xmmsv_list_append(xmmsv_t *listv, xmmsv_t *val)
Append an element to the end of the list xmmsv_t.
Definition: value.c:1332
int xmmsv_list_iter_entry_string(xmmsv_list_iter_t *it, const char **val)
xmmsv_t * xmmsv_build_list_va(xmmsv_t *first_entry, va_list ap)
Definition: value.c:2244
void xmmsv_list_iter_last(xmmsv_list_iter_t *it)
Move the iterator to end of the list.
Definition: value.c:1528
int xmmsv_list_get_int(xmmsv_t *v, int pos, int32_t *val)
int xmmsv_dict_format(char *target, int len, const char *fmt, xmmsv_t *val)
This function will make a pretty string about the information in xmmsv dict.
Definition: value.c:2296
int xmmsv_dict_get(xmmsv_t *dictv, const char *key, xmmsv_t **val)
Get the element corresponding to the given key in the dict xmmsv_t (if it exists).
Definition: value.c:1709
int xmmsv_dict_foreach(xmmsv_t *dictv, xmmsv_dict_foreach_func func, void *user_data)
Apply a function to each key-element pair in the list.
Definition: value.c:1845
void xmmsv_dict_iter_explicit_destroy(xmmsv_dict_iter_t *it)
Explicitly free dict iterator.
Definition: value.c:1923
int xmmsv_list_get_coll(xmmsv_t *v, int pos, xmmsv_coll_t **val)
void xmmsv_list_iter_explicit_destroy(xmmsv_list_iter_t *it)
Explicitly free list iterator.
Definition: value.c:1470
int xmmsv_get_coll(const xmmsv_t *val, xmmsv_coll_t **coll)
Retrieves a collection from the value.
Definition: value.c:875
xmmsv_type_t xmmsv_dict_entry_get_type(xmmsv_t *val, const char *key)
Gets the type of a dict entry.
Definition: value.c:500
int xmmsv_list_append_int(xmmsv_t *v, int32_t val)
int xmmsv_dict_iter_pair(xmmsv_dict_iter_t *it, const char **key, xmmsv_t **val)
Get the key-element pair currently pointed at by the iterator.
Definition: value.c:1940
xmmsv_t * xmmsv_new_coll(xmmsv_coll_t *coll)
Allocates a new collection xmmsv_t.
Definition: value.c:200
int xmmsv_dict_set_coll(xmmsv_t *val, const char *key, xmmsv_coll_t *el)
int xmmsv_dict_has_key(xmmsv_t *dictv, const char *key)
Definition: value.c:2486
int xmmsv_list_iter_insert_int(xmmsv_list_iter_t *it, int32_t val)
int xmmsv_is_type(const xmmsv_t *val, xmmsv_type_t t)
Check if value is of specified type.
Definition: value.c:400
int xmmsv_list_set_string(xmmsv_t *v, int pos, const char *val)
void(* xmmsv_dict_foreach_func)(const char *key, xmmsv_t *value, void *user_data)
Definition: xmmsv.h:81
struct xmmsv_coll_St xmmsv_coll_t
Definition: xmmsv_coll.h:28
int xmmsv_list_iter_entry_coll(xmmsv_list_iter_t *it, xmmsv_coll_t **val)
int xmmsv_list_get_size(xmmsv_t *listv)
Return the size of the list.
Definition: value.c:1395
int xmmsv_list_iter_seek(xmmsv_list_iter_t *it, int pos)
Move the iterator to the n-th element in the list.
Definition: value.c:1579
xmmsv_type_t
Definition: xmmsv.h:29
int xmmsv_dict_iter_set(xmmsv_dict_iter_t *it, xmmsv_t *val)
Replace the element of the pair currently pointed to by the iterator.
Definition: value.c:2093
int xmmsv_list_iter_remove(xmmsv_list_iter_t *it)
Remove the element in the list at the position pointed at by the iterator.
Definition: value.c:1644
void xmmsv_list_iter_next(xmmsv_list_iter_t *it)
Advance the iterator to the next element in the list.
Definition: value.c:1545
xmmsv_t * xmmsv_propdict_to_dict(xmmsv_t *propdict, const char **src_prefs)
Helper function to transform a key-source-value dict-of-dict xmmsv_t (formerly a propdict) to a regul...
Definition: value.c:744
int xmmsv_list_iter_insert_coll(xmmsv_list_iter_t *it, xmmsv_coll_t *val)
int xmmsv_list_append_coll(xmmsv_t *v, xmmsv_coll_t *val)
int xmmsv_list_insert_string(xmmsv_t *v, int pos, const char *val)
int xmmsv_list_clear(xmmsv_t *listv)
Empty the list from all its elements.
Definition: value.c:1348
xmmsv_type_t xmmsv_get_type(const xmmsv_t *val)
Get the type of the value.
Definition: value.c:384
int xmmsv_list_remove(xmmsv_t *listv, int pos)
Remove the element at the given position from the list xmmsv_t.
Definition: value.c:1292
xmmsv_t * xmmsv_make_stringlist(char *array[], int num)
Helper function to build a list xmmsv_t containing the strings from the input array.
Definition: value.c:475
int xmmsv_list_append_string(xmmsv_t *v, const char *val)
int xmmsv_dict_iter_set_string(xmmsv_dict_iter_t *it, const char *elem)
int xmmsv_is_list(const xmmsv_t *val) XMMS_DEPRECATED
Check if the value stores a list.
Definition: value.c:429
xmmsv_t * xmmsv_new_int(int32_t i)
Allocates a new integer xmmsv_t.
Definition: value.c:159
int xmmsv_list_move(xmmsv_t *listv, int old_pos, int new_pos)
Move the element from position #old to position #new.
Definition: value.c:1315
xmmsv_t * xmmsv_ref(xmmsv_t *val)
References the xmmsv_t.
Definition: value.c:286
int xmmsv_get_error(const xmmsv_t *val, const char **r)
Retrieves an error string describing the server error from the value.
Definition: value.c:796
void xmmsv_dict_iter_next(xmmsv_dict_iter_t *it)
Advance the iterator to the next pair in the dict.
Definition: value.c:2001
int xmmsv_dict_iter_pair_int(xmmsv_dict_iter_t *it, const char **key, int32_t *r)
xmmsv_t * xmmsv_list_iter_get_parent(const xmmsv_list_iter_t *it)
Return the parent xmmsv_t of an iterator.
Definition: value.c:1612
const char * xmmsv_get_error_old(const xmmsv_t *val) XMMS_DEPRECATED
Legacy alias to retrieve the error string from an xmmsv_t.
Definition: value.c:454
int xmmsv_dict_iter_find(xmmsv_dict_iter_t *it, const char *key)
Move the iterator to the pair with the given key (if it exists) or move it to the position where the ...
Definition: value.c:2020
int xmmsv_list_insert_coll(xmmsv_t *v, int pos, xmmsv_coll_t *val)
xmmsv_t * xmmsv_decode_url(const xmmsv_t *url)
Decode an URL-encoded string.
Definition: value.c:2159
xmmsv_t * xmmsv_new_bin(unsigned char *data, unsigned int len)
Allocates a new binary data xmmsv_t.
Definition: value.c:223
int xmmsv_get_dict_iter(const xmmsv_t *val, xmmsv_dict_iter_t **it)
Retrieves a dict iterator from a dict xmmsv_t.
Definition: value.c:947
int xmmsv_dict_set_string(xmmsv_t *val, const char *key, const char *el)
int xmmsv_dict_iter_set_coll(xmmsv_dict_iter_t *it, xmmsv_coll_t *elem)
int xmmsv_is_dict(const xmmsv_t *val) XMMS_DEPRECATED
Check if the value stores a dict.
Definition: value.c:441
int xmmsv_get_bin(const xmmsv_t *val, const unsigned char **r, unsigned int *rlen)
Retrieves binary data from the value.
Definition: value.c:896
xmmsv_t * xmmsv_new_list(void)
Allocates a new list xmmsv_t.
Definition: value.c:248
int xmmsv_list_iter_tell(const xmmsv_list_iter_t *it)
Tell the position of the iterator.
Definition: value.c:1598
int xmmsv_get_uint(const xmmsv_t *val, uint32_t *r) XMMS_DEPRECATED
Retrieves a unsigned integer from the value.
Definition: value.c:834
int xmmsv_get_string(const xmmsv_t *val, const char **r)
Retrieves a string from the value.
Definition: value.c:855
int xmmsv_is_error(const xmmsv_t *val)
Check if the value stores an error.
Definition: value.c:417
int xmmsv_dict_get_size(xmmsv_t *dictv)
Return the size of the dict.
Definition: value.c:1874
int xmmsv_list_restrict_type(xmmsv_t *listv, xmmsv_type_t type)
Definition: value.c:1405
int xmmsv_list_set_int(xmmsv_t *v, int pos, int32_t val)
int xmmsv_dict_iter_set_int(xmmsv_dict_iter_t *it, int32_t elem)
void xmmsv_dict_iter_first(xmmsv_dict_iter_t *it)
Rewind the iterator to the start of the dict.
Definition: value.c:1987
xmmsv_t * xmmsv_build_dict(const char *firstkey,...)
Definition: value.c:2213
void xmmsv_list_iter_prev(xmmsv_list_iter_t *it)
Move the iterator to the previous element in the list.
Definition: value.c:1560
int xmmsv_list_foreach(xmmsv_t *listv, xmmsv_list_foreach_func func, void *user_data)
Apply a function to each element in the list, in sequential order.
Definition: value.c:1367
struct xmmsv_list_iter_St xmmsv_list_iter_t
Definition: xmmsv.h:53
int xmmsv_list_iter_valid(xmmsv_list_iter_t *it)
Check whether the iterator is valid and points to a valid element.
Definition: value.c:1504
int xmmsv_utf8_validate(const char *str)
Check if a string is valid UTF-8.
Definition: value.c:2436
int xmmsv_dict_iter_pair_string(xmmsv_dict_iter_t *it, const char **key, const char **r)
struct xmmsv_dict_iter_St xmmsv_dict_iter_t
Definition: xmmsv.h:54
int xmmsv_dict_clear(xmmsv_t *dictv)
Empty the dict of all its elements.
Definition: value.c:1825