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 gst.base.QueueArray; 26 27 private import glib.ConstructionException; 28 private import gobject.ObjectG; 29 private import gst.base.c.functions; 30 public import gst.base.c.types; 31 private import gtkd.Loader; 32 33 34 /** 35 * #GstQueueArray is an object that provides standard queue functionality 36 * based on an array instead of linked lists. This reduces the overhead 37 * caused by memory management by a large factor. 38 */ 39 public class QueueArray 40 { 41 /** the main Gtk struct */ 42 protected GstQueueArray* gstQueueArray; 43 protected bool ownedRef; 44 45 /** Get the main Gtk struct */ 46 public GstQueueArray* getQueueArrayStruct(bool transferOwnership = false) 47 { 48 if (transferOwnership) 49 ownedRef = false; 50 return gstQueueArray; 51 } 52 53 /** the main Gtk struct as a void* */ 54 protected void* getStruct() 55 { 56 return cast(void*)gstQueueArray; 57 } 58 59 /** 60 * Sets our main struct and passes it to the parent class. 61 */ 62 public this (GstQueueArray* gstQueueArray, bool ownedRef = false) 63 { 64 this.gstQueueArray = gstQueueArray; 65 this.ownedRef = ownedRef; 66 } 67 68 ~this () 69 { 70 if ( Linker.isLoaded(LIBRARY_GSTBASE) && ownedRef ) 71 gst_queue_array_free(gstQueueArray); 72 } 73 74 75 /** 76 * Clears queue @array and frees all memory associated to it. 77 * 78 * Since: 1.16 79 */ 80 public void clear() 81 { 82 gst_queue_array_clear(gstQueueArray); 83 } 84 85 /** 86 * Drops the queue element at position @idx from queue @array. 87 * 88 * Params: 89 * idx = index to drop 90 * 91 * Returns: the dropped element 92 * 93 * Since: 1.2 94 */ 95 public void* dropElement(uint idx) 96 { 97 return gst_queue_array_drop_element(gstQueueArray, idx); 98 } 99 100 /** 101 * Drops the queue element at position @idx from queue @array and copies the 102 * data of the element or structure that was removed into @p_struct if 103 * @p_struct is set (not NULL). 104 * 105 * Params: 106 * idx = index to drop 107 * pStruct = address into which to store the data of the dropped structure, or NULL 108 * 109 * Returns: TRUE on success, or FALSE on error 110 * 111 * Since: 1.6 112 */ 113 public bool dropStruct(uint idx, void* pStruct) 114 { 115 return gst_queue_array_drop_struct(gstQueueArray, idx, pStruct) != 0; 116 } 117 118 /** 119 * Finds an element in the queue @array, either by comparing every element 120 * with @func or by looking up @data if no compare function @func is provided, 121 * and returning the index of the found element. 122 * 123 * Params: 124 * func = comparison function, or %NULL to find @data by value 125 * data = data for comparison function 126 * 127 * Returns: Index of the found element or -1 if nothing was found. 128 * 129 * Since: 1.2 130 */ 131 public uint find(GCompareFunc func, void* data) 132 { 133 return gst_queue_array_find(gstQueueArray, func, data); 134 } 135 136 /** 137 * Frees queue @array and all memory associated to it. 138 * 139 * Since: 1.2 140 */ 141 public void free() 142 { 143 gst_queue_array_free(gstQueueArray); 144 ownedRef = false; 145 } 146 147 /** 148 * Returns the length of the queue @array 149 * 150 * Returns: the length of the queue @array. 151 * 152 * Since: 1.2 153 */ 154 public uint getLength() 155 { 156 return gst_queue_array_get_length(gstQueueArray); 157 } 158 159 /** 160 * Checks if the queue @array is empty. 161 * 162 * Returns: %TRUE if the queue @array is empty 163 * 164 * Since: 1.2 165 */ 166 public bool isEmpty() 167 { 168 return gst_queue_array_is_empty(gstQueueArray) != 0; 169 } 170 171 /** 172 * Returns the head of the queue @array and does not 173 * remove it from the queue. 174 * 175 * Returns: The head of the queue 176 * 177 * Since: 1.2 178 */ 179 public void* peekHead() 180 { 181 return gst_queue_array_peek_head(gstQueueArray); 182 } 183 184 /** 185 * Returns the head of the queue @array without removing it from the queue. 186 * 187 * Returns: pointer to element or struct, or NULL if @array was empty. The 188 * data pointed to by the returned pointer stays valid only as long as 189 * the queue array is not modified further! 190 * 191 * Since: 1.6 192 */ 193 public void* peekHeadStruct() 194 { 195 return gst_queue_array_peek_head_struct(gstQueueArray); 196 } 197 198 /** 199 * Returns the item at @idx in @array, but does not remove it from the queue. 200 * 201 * Returns: The item, or %NULL if @idx was out of bounds 202 * 203 * Since: 1.16 204 */ 205 public void* peekNth(uint idx) 206 { 207 return gst_queue_array_peek_nth(gstQueueArray, idx); 208 } 209 210 /** 211 * Returns the item at @idx in @array, but does not remove it from the queue. 212 * 213 * Returns: The item, or %NULL if @idx was out of bounds 214 * 215 * Since: 1.16 216 */ 217 public void* peekNthStruct(uint idx) 218 { 219 return gst_queue_array_peek_nth_struct(gstQueueArray, idx); 220 } 221 222 /** 223 * Returns the tail of the queue @array, but does not remove it from the queue. 224 * 225 * Returns: The tail of the queue 226 * 227 * Since: 1.14 228 */ 229 public void* peekTail() 230 { 231 return gst_queue_array_peek_tail(gstQueueArray); 232 } 233 234 /** 235 * Returns the tail of the queue @array, but does not remove it from the queue. 236 * 237 * Returns: The tail of the queue 238 * 239 * Since: 1.14 240 */ 241 public void* peekTailStruct() 242 { 243 return gst_queue_array_peek_tail_struct(gstQueueArray); 244 } 245 246 /** 247 * Returns and head of the queue @array and removes 248 * it from the queue. 249 * 250 * Returns: The head of the queue 251 * 252 * Since: 1.2 253 */ 254 public void* popHead() 255 { 256 return gst_queue_array_pop_head(gstQueueArray); 257 } 258 259 /** 260 * Returns the head of the queue @array and removes it from the queue. 261 * 262 * Returns: pointer to element or struct, or NULL if @array was empty. The 263 * data pointed to by the returned pointer stays valid only as long as 264 * the queue array is not modified further! 265 * 266 * Since: 1.6 267 */ 268 public void* popHeadStruct() 269 { 270 return gst_queue_array_pop_head_struct(gstQueueArray); 271 } 272 273 /** 274 * Returns the tail of the queue @array and removes 275 * it from the queue. 276 * 277 * Returns: The tail of the queue 278 * 279 * Since: 1.14 280 */ 281 public void* popTail() 282 { 283 return gst_queue_array_pop_tail(gstQueueArray); 284 } 285 286 /** 287 * Returns the tail of the queue @array and removes 288 * it from the queue. 289 * 290 * Returns: The tail of the queue 291 * 292 * Since: 1.14 293 */ 294 public void* popTailStruct() 295 { 296 return gst_queue_array_pop_tail_struct(gstQueueArray); 297 } 298 299 /** 300 * Pushes @data to the tail of the queue @array. 301 * 302 * Params: 303 * data = object to push 304 * 305 * Since: 1.2 306 */ 307 public void pushTail(void* data) 308 { 309 gst_queue_array_push_tail(gstQueueArray, data); 310 } 311 312 /** */ 313 public void pushTailStruct(void* pStruct) 314 { 315 gst_queue_array_push_tail_struct(gstQueueArray, pStruct); 316 } 317 318 /** 319 * Sets a function to clear an element of @array. 320 * 321 * The @clear_func will be called when an element in the array 322 * data segment is removed and when the array is freed and data 323 * segment is deallocated as well. @clear_func will be passed a 324 * pointer to the element to clear, rather than the element itself. 325 * 326 * Note that in contrast with other uses of #GDestroyNotify 327 * functions, @clear_func is expected to clear the contents of 328 * the array element it is given, but not free the element itself. 329 * 330 * Params: 331 * clearFunc = a function to clear an element of @array 332 * 333 * Since: 1.16 334 */ 335 public void setClearFunc(GDestroyNotify clearFunc) 336 { 337 gst_queue_array_set_clear_func(gstQueueArray, clearFunc); 338 } 339 340 /** 341 * Allocates a new #GstQueueArray object with an initial 342 * queue size of @initial_size. 343 * 344 * Params: 345 * initialSize = Initial size of the new queue 346 * 347 * Returns: a new #GstQueueArray object 348 * 349 * Since: 1.2 350 * 351 * Throws: ConstructionException GTK+ fails to create the object. 352 */ 353 public this(uint initialSize) 354 { 355 auto p = gst_queue_array_new(initialSize); 356 357 if(p is null) 358 { 359 throw new ConstructionException("null returned by new"); 360 } 361 362 this(cast(GstQueueArray*) p); 363 } 364 365 /** 366 * Allocates a new #GstQueueArray object for elements (e.g. structures) 367 * of size @struct_size, with an initial queue size of @initial_size. 368 * 369 * Params: 370 * structSize = Size of each element (e.g. structure) in the array 371 * initialSize = Initial size of the new queue 372 * 373 * Returns: a new #GstQueueArray object 374 * 375 * Since: 1.6 376 * 377 * Throws: ConstructionException GTK+ fails to create the object. 378 */ 379 public this(size_t structSize, uint initialSize) 380 { 381 auto p = gst_queue_array_new_for_struct(structSize, initialSize); 382 383 if(p is null) 384 { 385 throw new ConstructionException("null returned by new_for_struct"); 386 } 387 388 this(cast(GstQueueArray*) p); 389 } 390 }