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 }