1 module soup.MessageHeadersIter; 2 3 private import glib.MemorySlice; 4 private import glib.Str; 5 private import gobject.ObjectG; 6 private import soup.MessageHeaders; 7 private import soup.c.functions; 8 public import soup.c.types; 9 10 11 /** 12 * An opaque type used to iterate over a %SoupMessageHeaders 13 * structure. 14 * 15 * After intializing the iterator with 16 * soup_message_headers_iter_init(), call 17 * soup_message_headers_iter_next() to fetch data from it. 18 * 19 * You may not modify the headers while iterating over them. 20 */ 21 public class MessageHeadersIter 22 { 23 /** the main Gtk struct */ 24 protected SoupMessageHeadersIter* soupMessageHeadersIter; 25 protected bool ownedRef; 26 27 /** Get the main Gtk struct */ 28 public SoupMessageHeadersIter* getMessageHeadersIterStruct(bool transferOwnership = false) 29 { 30 if (transferOwnership) 31 ownedRef = false; 32 return soupMessageHeadersIter; 33 } 34 35 /** the main Gtk struct as a void* */ 36 protected void* getStruct() 37 { 38 return cast(void*)soupMessageHeadersIter; 39 } 40 41 /** 42 * Sets our main struct and passes it to the parent class. 43 */ 44 public this (SoupMessageHeadersIter* soupMessageHeadersIter, bool ownedRef = false) 45 { 46 this.soupMessageHeadersIter = soupMessageHeadersIter; 47 this.ownedRef = ownedRef; 48 } 49 50 51 /** 52 * Yields the next name/value pair in the %SoupMessageHeaders being 53 * iterated by @iter. If @iter has already yielded the last header, 54 * then soup_message_headers_iter_next() will return %FALSE and @name 55 * and @value will be unchanged. 56 * 57 * Params: 58 * name = pointer to a variable to return 59 * the header name in 60 * value = pointer to a variable to return 61 * the header value in 62 * 63 * Returns: %TRUE if another name and value were returned, %FALSE 64 * if the end of the headers has been reached. 65 */ 66 public bool next(out string name, out string value) 67 { 68 char* outname = null; 69 char* outvalue = null; 70 71 auto __p = soup_message_headers_iter_next(soupMessageHeadersIter, &outname, &outvalue) != 0; 72 73 name = Str.toString(outname); 74 value = Str.toString(outvalue); 75 76 return __p; 77 } 78 79 /** 80 * Initializes @iter for iterating @hdrs. 81 * 82 * Params: 83 * iter = a pointer to a %SoupMessageHeadersIter 84 * structure 85 * hdrs = a %SoupMessageHeaders 86 */ 87 public static void init(out MessageHeadersIter iter, MessageHeaders hdrs) 88 { 89 SoupMessageHeadersIter* outiter = sliceNew!SoupMessageHeadersIter(); 90 91 soup_message_headers_iter_init(outiter, (hdrs is null) ? null : hdrs.getMessageHeadersStruct()); 92 93 iter = ObjectG.getDObject!(MessageHeadersIter)(outiter, true); 94 } 95 }