1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module glib.DataList; 26 27 private import glib.Str; 28 private import gtkc.glib; 29 public import gtkc.glibtypes; 30 31 32 /** */ 33 public struct DataList 34 { 35 36 /** 37 * Frees all the data elements of the datalist. 38 * The data elements' destroy functions are called 39 * if they have been set. 40 * 41 * Params: 42 * datalist = a datalist. 43 */ 44 public static void clear(GData** datalist) 45 { 46 g_datalist_clear(datalist); 47 } 48 49 /** 50 * Calls the given function for each data element of the datalist. The 51 * function is called with each data element's #GQuark id and data, 52 * together with the given @user_data parameter. Note that this 53 * function is NOT thread-safe. So unless @datalist can be protected 54 * from any modifications during invocation of this function, it should 55 * not be called. 56 * 57 * Params: 58 * datalist = a datalist. 59 * func = the function to call for each data element. 60 * userData = user data to pass to the function. 61 */ 62 public static void foreac(GData** datalist, GDataForeachFunc func, void* userData) 63 { 64 g_datalist_foreach(datalist, func, userData); 65 } 66 67 /** 68 * Gets a data element, using its string identifier. This is slower than 69 * g_datalist_id_get_data() because it compares strings. 70 * 71 * Params: 72 * datalist = a datalist. 73 * key = the string identifying a data element. 74 * 75 * Returns: the data element, or %NULL if it is not found. 76 */ 77 public static void* getData(GData** datalist, string key) 78 { 79 return g_datalist_get_data(datalist, Str.toStringz(key)); 80 } 81 82 /** 83 * Gets flags values packed in together with the datalist. 84 * See g_datalist_set_flags(). 85 * 86 * Params: 87 * datalist = pointer to the location that holds a list 88 * 89 * Returns: the flags of the datalist 90 * 91 * Since: 2.8 92 */ 93 public static uint getFlags(GData** datalist) 94 { 95 return g_datalist_get_flags(datalist); 96 } 97 98 /** 99 * This is a variant of g_datalist_id_get_data() which 100 * returns a 'duplicate' of the value. @dup_func defines the 101 * meaning of 'duplicate' in this context, it could e.g. 102 * take a reference on a ref-counted object. 103 * 104 * If the @key_id is not set in the datalist then @dup_func 105 * will be called with a %NULL argument. 106 * 107 * Note that @dup_func is called while the datalist is locked, so it 108 * is not allowed to read or modify the datalist. 109 * 110 * This function can be useful to avoid races when multiple 111 * threads are using the same datalist and the same key. 112 * 113 * Params: 114 * datalist = location of a datalist 115 * keyId = the #GQuark identifying a data element 116 * dupFunc = function to duplicate the old value 117 * userData = passed as user_data to @dup_func 118 * 119 * Returns: the result of calling @dup_func on the value 120 * associated with @key_id in @datalist, or %NULL if not set. 121 * If @dup_func is %NULL, the value is returned unmodified. 122 * 123 * Since: 2.34 124 */ 125 public static void* idDupData(GData** datalist, GQuark keyId, GDuplicateFunc dupFunc, void* userData) 126 { 127 return g_datalist_id_dup_data(datalist, keyId, dupFunc, userData); 128 } 129 130 /** 131 * Retrieves the data element corresponding to @key_id. 132 * 133 * Params: 134 * datalist = a datalist. 135 * keyId = the #GQuark identifying a data element. 136 * 137 * Returns: the data element, or %NULL if it is not found. 138 */ 139 public static void* idGetData(GData** datalist, GQuark keyId) 140 { 141 return g_datalist_id_get_data(datalist, keyId); 142 } 143 144 /** 145 * Removes an element, without calling its destroy notification 146 * function. 147 * 148 * Params: 149 * datalist = a datalist. 150 * keyId = the #GQuark identifying a data element. 151 * 152 * Returns: the data previously stored at @key_id, or %NULL if none. 153 */ 154 public static void* idRemoveNoNotify(GData** datalist, GQuark keyId) 155 { 156 return g_datalist_id_remove_no_notify(datalist, keyId); 157 } 158 159 /** 160 * Compares the member that is associated with @key_id in 161 * @datalist to @oldval, and if they are the same, replace 162 * @oldval with @newval. 163 * 164 * This is like a typical atomic compare-and-exchange 165 * operation, for a member of @datalist. 166 * 167 * If the previous value was replaced then ownership of the 168 * old value (@oldval) is passed to the caller, including 169 * the registred destroy notify for it (passed out in @old_destroy). 170 * Its up to the caller to free this as he wishes, which may 171 * or may not include using @old_destroy as sometimes replacement 172 * should not destroy the object in the normal way. 173 * 174 * Params: 175 * datalist = location of a datalist 176 * keyId = the #GQuark identifying a data element 177 * oldval = the old value to compare against 178 * newval = the new value to replace it with 179 * destroy = destroy notify for the new value 180 * oldDestroy = destroy notify for the existing value 181 * 182 * Returns: %TRUE if the existing value for @key_id was replaced 183 * by @newval, %FALSE otherwise. 184 * 185 * Since: 2.34 186 */ 187 public static bool idReplaceData(GData** datalist, GQuark keyId, void* oldval, void* newval, GDestroyNotify destroy, GDestroyNotify* oldDestroy) 188 { 189 return g_datalist_id_replace_data(datalist, keyId, oldval, newval, destroy, oldDestroy) != 0; 190 } 191 192 /** 193 * Sets the data corresponding to the given #GQuark id, and the 194 * function to be called when the element is removed from the datalist. 195 * Any previous data with the same key is removed, and its destroy 196 * function is called. 197 * 198 * Params: 199 * datalist = a datalist. 200 * keyId = the #GQuark to identify the data element. 201 * data = the data element or %NULL to remove any previous element 202 * corresponding to @key_id. 203 * destroyFunc = the function to call when the data element is 204 * removed. This function will be called with the data 205 * element and can be used to free any memory allocated 206 * for it. If @data is %NULL, then @destroy_func must 207 * also be %NULL. 208 */ 209 public static void idSetDataFull(GData** datalist, GQuark keyId, void* data, GDestroyNotify destroyFunc) 210 { 211 g_datalist_id_set_data_full(datalist, keyId, data, destroyFunc); 212 } 213 214 /** 215 * Resets the datalist to %NULL. It does not free any memory or call 216 * any destroy functions. 217 * 218 * Params: 219 * datalist = a pointer to a pointer to a datalist. 220 */ 221 public static void init(GData** datalist) 222 { 223 g_datalist_init(datalist); 224 } 225 226 /** 227 * Turns on flag values for a data list. This function is used 228 * to keep a small number of boolean flags in an object with 229 * a data list without using any additional space. It is 230 * not generally useful except in circumstances where space 231 * is very tight. (It is used in the base #GObject type, for 232 * example.) 233 * 234 * Params: 235 * datalist = pointer to the location that holds a list 236 * flags = the flags to turn on. The values of the flags are 237 * restricted by %G_DATALIST_FLAGS_MASK (currently 238 * 3; giving two possible boolean flags). 239 * A value for @flags that doesn't fit within the mask is 240 * an error. 241 * 242 * Since: 2.8 243 */ 244 public static void setFlags(GData** datalist, uint flags) 245 { 246 g_datalist_set_flags(datalist, flags); 247 } 248 249 /** 250 * Turns off flag values for a data list. See g_datalist_unset_flags() 251 * 252 * Params: 253 * datalist = pointer to the location that holds a list 254 * flags = the flags to turn off. The values of the flags are 255 * restricted by %G_DATALIST_FLAGS_MASK (currently 256 * 3: giving two possible boolean flags). 257 * A value for @flags that doesn't fit within the mask is 258 * an error. 259 * 260 * Since: 2.8 261 */ 262 public static void unsetFlags(GData** datalist, uint flags) 263 { 264 g_datalist_unset_flags(datalist, flags); 265 } 266 }