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 gio.DataInputStream;
26 
27 private import gio.AsyncResultIF;
28 private import gio.BufferedInputStream;
29 private import gio.Cancellable;
30 private import gio.InputStream;
31 private import gio.c.functions;
32 public  import gio.c.types;
33 private import glib.ConstructionException;
34 private import glib.ErrorG;
35 private import glib.GException;
36 private import glib.Str;
37 private import gobject.ObjectG;
38 public  import gtkc.giotypes;
39 
40 
41 /**
42  * Data input stream implements #GInputStream and includes functions for
43  * reading structured data directly from a binary input stream.
44  */
45 public class DataInputStream : BufferedInputStream
46 {
47 	/** the main Gtk struct */
48 	protected GDataInputStream* gDataInputStream;
49 
50 	/** Get the main Gtk struct */
51 	public GDataInputStream* getDataInputStreamStruct(bool transferOwnership = false)
52 	{
53 		if (transferOwnership)
54 			ownedRef = false;
55 		return gDataInputStream;
56 	}
57 
58 	/** the main Gtk struct as a void* */
59 	protected override void* getStruct()
60 	{
61 		return cast(void*)gDataInputStream;
62 	}
63 
64 	/**
65 	 * Sets our main struct and passes it to the parent class.
66 	 */
67 	public this (GDataInputStream* gDataInputStream, bool ownedRef = false)
68 	{
69 		this.gDataInputStream = gDataInputStream;
70 		super(cast(GBufferedInputStream*)gDataInputStream, ownedRef);
71 	}
72 
73 
74 	/** */
75 	public static GType getType()
76 	{
77 		return g_data_input_stream_get_type();
78 	}
79 
80 	/**
81 	 * Creates a new data input stream for the @base_stream.
82 	 *
83 	 * Params:
84 	 *     baseStream = a #GInputStream.
85 	 *
86 	 * Returns: a new #GDataInputStream.
87 	 *
88 	 * Throws: ConstructionException GTK+ fails to create the object.
89 	 */
90 	public this(InputStream baseStream)
91 	{
92 		auto __p = g_data_input_stream_new((baseStream is null) ? null : baseStream.getInputStreamStruct());
93 
94 		if(__p is null)
95 		{
96 			throw new ConstructionException("null returned by new");
97 		}
98 
99 		this(cast(GDataInputStream*) __p, true);
100 	}
101 
102 	/**
103 	 * Gets the byte order for the data input stream.
104 	 *
105 	 * Returns: the @stream's current #GDataStreamByteOrder.
106 	 */
107 	public GDataStreamByteOrder getByteOrder()
108 	{
109 		return g_data_input_stream_get_byte_order(gDataInputStream);
110 	}
111 
112 	/**
113 	 * Gets the current newline type for the @stream.
114 	 *
115 	 * Returns: #GDataStreamNewlineType for the given @stream.
116 	 */
117 	public GDataStreamNewlineType getNewlineType()
118 	{
119 		return g_data_input_stream_get_newline_type(gDataInputStream);
120 	}
121 
122 	/**
123 	 * Reads a 16-bit/2-byte value from @stream.
124 	 *
125 	 * In order to get the correct byte order for this read operation,
126 	 * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
127 	 *
128 	 * Params:
129 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
130 	 *
131 	 * Returns: a signed 16-bit/2-byte value read from @stream or `0` if
132 	 *     an error occurred.
133 	 *
134 	 * Throws: GException on failure.
135 	 */
136 	public short readInt16(Cancellable cancellable)
137 	{
138 		GError* err = null;
139 
140 		auto __p = g_data_input_stream_read_int16(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
141 
142 		if (err !is null)
143 		{
144 			throw new GException( new ErrorG(err) );
145 		}
146 
147 		return __p;
148 	}
149 
150 	/**
151 	 * Reads a signed 32-bit/4-byte value from @stream.
152 	 *
153 	 * In order to get the correct byte order for this read operation,
154 	 * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
155 	 *
156 	 * If @cancellable is not %NULL, then the operation can be cancelled by
157 	 * triggering the cancellable object from another thread. If the operation
158 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
159 	 *
160 	 * Params:
161 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
162 	 *
163 	 * Returns: a signed 32-bit/4-byte value read from the @stream or `0` if
164 	 *     an error occurred.
165 	 *
166 	 * Throws: GException on failure.
167 	 */
168 	public int readInt32(Cancellable cancellable)
169 	{
170 		GError* err = null;
171 
172 		auto __p = g_data_input_stream_read_int32(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
173 
174 		if (err !is null)
175 		{
176 			throw new GException( new ErrorG(err) );
177 		}
178 
179 		return __p;
180 	}
181 
182 	/**
183 	 * Reads a 64-bit/8-byte value from @stream.
184 	 *
185 	 * In order to get the correct byte order for this read operation,
186 	 * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
187 	 *
188 	 * If @cancellable is not %NULL, then the operation can be cancelled by
189 	 * triggering the cancellable object from another thread. If the operation
190 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
191 	 *
192 	 * Params:
193 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
194 	 *
195 	 * Returns: a signed 64-bit/8-byte value read from @stream or `0` if
196 	 *     an error occurred.
197 	 *
198 	 * Throws: GException on failure.
199 	 */
200 	public long readInt64(Cancellable cancellable)
201 	{
202 		GError* err = null;
203 
204 		auto __p = g_data_input_stream_read_int64(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
205 
206 		if (err !is null)
207 		{
208 			throw new GException( new ErrorG(err) );
209 		}
210 
211 		return __p;
212 	}
213 
214 	/**
215 	 * Reads a line from the data input stream.  Note that no encoding
216 	 * checks or conversion is performed; the input is not guaranteed to
217 	 * be UTF-8, and may in fact have embedded NUL characters.
218 	 *
219 	 * If @cancellable is not %NULL, then the operation can be cancelled by
220 	 * triggering the cancellable object from another thread. If the operation
221 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
222 	 *
223 	 * Params:
224 	 *     length = a #gsize to get the length of the data read in.
225 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
226 	 *
227 	 * Returns: a NUL terminated byte array with the line that was read in
228 	 *     (without the newlines).  Set @length to a #gsize to get the length
229 	 *     of the read line.  On an error, it will return %NULL and @error
230 	 *     will be set. If there's no content to read, it will still return
231 	 *     %NULL, but @error won't be set.
232 	 *
233 	 * Throws: GException on failure.
234 	 */
235 	public string readLine(out size_t length, Cancellable cancellable)
236 	{
237 		GError* err = null;
238 
239 		auto retStr = g_data_input_stream_read_line(gDataInputStream, &length, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
240 
241 		if (err !is null)
242 		{
243 			throw new GException( new ErrorG(err) );
244 		}
245 
246 		scope(exit) Str.freeString(retStr);
247 		return Str.toString(retStr);
248 	}
249 
250 	/**
251 	 * The asynchronous version of g_data_input_stream_read_line().  It is
252 	 * an error to have two outstanding calls to this function.
253 	 *
254 	 * When the operation is finished, @callback will be called. You
255 	 * can then call g_data_input_stream_read_line_finish() to get
256 	 * the result of the operation.
257 	 *
258 	 * Params:
259 	 *     ioPriority = the [I/O priority][io-priority] of the request
260 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
261 	 *     callback = callback to call when the request is satisfied.
262 	 *     userData = the data to pass to callback function.
263 	 *
264 	 * Since: 2.20
265 	 */
266 	public void readLineAsync(int ioPriority, Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
267 	{
268 		g_data_input_stream_read_line_async(gDataInputStream, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
269 	}
270 
271 	/**
272 	 * Finish an asynchronous call started by
273 	 * g_data_input_stream_read_line_async().  Note the warning about
274 	 * string encoding in g_data_input_stream_read_line() applies here as
275 	 * well.
276 	 *
277 	 * Params:
278 	 *     result = the #GAsyncResult that was provided to the callback.
279 	 *     length = a #gsize to get the length of the data read in.
280 	 *
281 	 * Returns: a NUL-terminated byte array with the line that was read in
282 	 *     (without the newlines).  Set @length to a #gsize to get the length
283 	 *     of the read line.  On an error, it will return %NULL and @error
284 	 *     will be set. If there's no content to read, it will still return
285 	 *     %NULL, but @error won't be set.
286 	 *
287 	 * Since: 2.20
288 	 *
289 	 * Throws: GException on failure.
290 	 */
291 	public string readLineFinish(AsyncResultIF result, out size_t length)
292 	{
293 		GError* err = null;
294 
295 		auto retStr = g_data_input_stream_read_line_finish(gDataInputStream, (result is null) ? null : result.getAsyncResultStruct(), &length, &err);
296 
297 		if (err !is null)
298 		{
299 			throw new GException( new ErrorG(err) );
300 		}
301 
302 		scope(exit) Str.freeString(retStr);
303 		return Str.toString(retStr);
304 	}
305 
306 	/**
307 	 * Finish an asynchronous call started by
308 	 * g_data_input_stream_read_line_async().
309 	 *
310 	 * Params:
311 	 *     result = the #GAsyncResult that was provided to the callback.
312 	 *     length = a #gsize to get the length of the data read in.
313 	 *
314 	 * Returns: a string with the line that
315 	 *     was read in (without the newlines).  Set @length to a #gsize to
316 	 *     get the length of the read line.  On an error, it will return
317 	 *     %NULL and @error will be set. For UTF-8 conversion errors, the set
318 	 *     error domain is %G_CONVERT_ERROR.  If there's no content to read,
319 	 *     it will still return %NULL, but @error won't be set.
320 	 *
321 	 * Since: 2.30
322 	 *
323 	 * Throws: GException on failure.
324 	 */
325 	public string readLineFinishUtf8(AsyncResultIF result, out size_t length)
326 	{
327 		GError* err = null;
328 
329 		auto retStr = g_data_input_stream_read_line_finish_utf8(gDataInputStream, (result is null) ? null : result.getAsyncResultStruct(), &length, &err);
330 
331 		if (err !is null)
332 		{
333 			throw new GException( new ErrorG(err) );
334 		}
335 
336 		scope(exit) Str.freeString(retStr);
337 		return Str.toString(retStr);
338 	}
339 
340 	/**
341 	 * Reads a UTF-8 encoded line from the data input stream.
342 	 *
343 	 * If @cancellable is not %NULL, then the operation can be cancelled by
344 	 * triggering the cancellable object from another thread. If the operation
345 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
346 	 *
347 	 * Params:
348 	 *     length = a #gsize to get the length of the data read in.
349 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
350 	 *
351 	 * Returns: a NUL terminated UTF-8 string
352 	 *     with the line that was read in (without the newlines).  Set
353 	 *     @length to a #gsize to get the length of the read line.  On an
354 	 *     error, it will return %NULL and @error will be set.  For UTF-8
355 	 *     conversion errors, the set error domain is %G_CONVERT_ERROR.  If
356 	 *     there's no content to read, it will still return %NULL, but @error
357 	 *     won't be set.
358 	 *
359 	 * Since: 2.30
360 	 *
361 	 * Throws: GException on failure.
362 	 */
363 	public string readLineUtf8(out size_t length, Cancellable cancellable)
364 	{
365 		GError* err = null;
366 
367 		auto retStr = g_data_input_stream_read_line_utf8(gDataInputStream, &length, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
368 
369 		if (err !is null)
370 		{
371 			throw new GException( new ErrorG(err) );
372 		}
373 
374 		scope(exit) Str.freeString(retStr);
375 		return Str.toString(retStr);
376 	}
377 
378 	/**
379 	 * Reads an unsigned 16-bit/2-byte value from @stream.
380 	 *
381 	 * In order to get the correct byte order for this read operation,
382 	 * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
383 	 *
384 	 * Params:
385 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
386 	 *
387 	 * Returns: an unsigned 16-bit/2-byte value read from the @stream or `0` if
388 	 *     an error occurred.
389 	 *
390 	 * Throws: GException on failure.
391 	 */
392 	public ushort readUint16(Cancellable cancellable)
393 	{
394 		GError* err = null;
395 
396 		auto __p = g_data_input_stream_read_uint16(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
397 
398 		if (err !is null)
399 		{
400 			throw new GException( new ErrorG(err) );
401 		}
402 
403 		return __p;
404 	}
405 
406 	/**
407 	 * Reads an unsigned 32-bit/4-byte value from @stream.
408 	 *
409 	 * In order to get the correct byte order for this read operation,
410 	 * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
411 	 *
412 	 * If @cancellable is not %NULL, then the operation can be cancelled by
413 	 * triggering the cancellable object from another thread. If the operation
414 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
415 	 *
416 	 * Params:
417 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
418 	 *
419 	 * Returns: an unsigned 32-bit/4-byte value read from the @stream or `0` if
420 	 *     an error occurred.
421 	 *
422 	 * Throws: GException on failure.
423 	 */
424 	public uint readUint32(Cancellable cancellable)
425 	{
426 		GError* err = null;
427 
428 		auto __p = g_data_input_stream_read_uint32(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
429 
430 		if (err !is null)
431 		{
432 			throw new GException( new ErrorG(err) );
433 		}
434 
435 		return __p;
436 	}
437 
438 	/**
439 	 * Reads an unsigned 64-bit/8-byte value from @stream.
440 	 *
441 	 * In order to get the correct byte order for this read operation,
442 	 * see g_data_input_stream_get_byte_order().
443 	 *
444 	 * If @cancellable is not %NULL, then the operation can be cancelled by
445 	 * triggering the cancellable object from another thread. If the operation
446 	 * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
447 	 *
448 	 * Params:
449 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
450 	 *
451 	 * Returns: an unsigned 64-bit/8-byte read from @stream or `0` if
452 	 *     an error occurred.
453 	 *
454 	 * Throws: GException on failure.
455 	 */
456 	public ulong readUint64(Cancellable cancellable)
457 	{
458 		GError* err = null;
459 
460 		auto __p = g_data_input_stream_read_uint64(gDataInputStream, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
461 
462 		if (err !is null)
463 		{
464 			throw new GException( new ErrorG(err) );
465 		}
466 
467 		return __p;
468 	}
469 
470 	/**
471 	 * Reads a string from the data input stream, up to the first
472 	 * occurrence of any of the stop characters.
473 	 *
474 	 * Note that, in contrast to g_data_input_stream_read_until_async(),
475 	 * this function consumes the stop character that it finds.
476 	 *
477 	 * Don't use this function in new code.  Its functionality is
478 	 * inconsistent with g_data_input_stream_read_until_async().  Both
479 	 * functions will be marked as deprecated in a future release.  Use
480 	 * g_data_input_stream_read_upto() instead, but note that that function
481 	 * does not consume the stop character.
482 	 *
483 	 * Deprecated: Use g_data_input_stream_read_upto() instead, which has more
484 	 * consistent behaviour regarding the stop character.
485 	 *
486 	 * Params:
487 	 *     stopChars = characters to terminate the read.
488 	 *     length = a #gsize to get the length of the data read in.
489 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
490 	 *
491 	 * Returns: a string with the data that was read
492 	 *     before encountering any of the stop characters. Set @length to
493 	 *     a #gsize to get the length of the string. This function will
494 	 *     return %NULL on an error.
495 	 *
496 	 * Throws: GException on failure.
497 	 */
498 	public string readUntil(string stopChars, out size_t length, Cancellable cancellable)
499 	{
500 		GError* err = null;
501 
502 		auto retStr = g_data_input_stream_read_until(gDataInputStream, Str.toStringz(stopChars), &length, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
503 
504 		if (err !is null)
505 		{
506 			throw new GException( new ErrorG(err) );
507 		}
508 
509 		scope(exit) Str.freeString(retStr);
510 		return Str.toString(retStr);
511 	}
512 
513 	/**
514 	 * The asynchronous version of g_data_input_stream_read_until().
515 	 * It is an error to have two outstanding calls to this function.
516 	 *
517 	 * Note that, in contrast to g_data_input_stream_read_until(),
518 	 * this function does not consume the stop character that it finds.  You
519 	 * must read it for yourself.
520 	 *
521 	 * When the operation is finished, @callback will be called. You
522 	 * can then call g_data_input_stream_read_until_finish() to get
523 	 * the result of the operation.
524 	 *
525 	 * Don't use this function in new code.  Its functionality is
526 	 * inconsistent with g_data_input_stream_read_until().  Both functions
527 	 * will be marked as deprecated in a future release.  Use
528 	 * g_data_input_stream_read_upto_async() instead.
529 	 *
530 	 * Deprecated: Use g_data_input_stream_read_upto_async() instead, which
531 	 * has more consistent behaviour regarding the stop character.
532 	 *
533 	 * Params:
534 	 *     stopChars = characters to terminate the read.
535 	 *     ioPriority = the [I/O priority][io-priority] of the request
536 	 *     cancellable = optional #GCancellable object, %NULL to ignore.
537 	 *     callback = callback to call when the request is satisfied.
538 	 *     userData = the data to pass to callback function.
539 	 *
540 	 * Since: 2.20
541 	 */
542 	public void readUntilAsync(string stopChars, int ioPriority, Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
543 	{
544 		g_data_input_stream_read_until_async(gDataInputStream, Str.toStringz(stopChars), ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
545 	}
546 
547 	/**
548 	 * Finish an asynchronous call started by
549 	 * g_data_input_stream_read_until_async().
550 	 *
551 	 * Deprecated: Use g_data_input_stream_read_upto_finish() instead, which
552 	 * has more consistent behaviour regarding the stop character.
553 	 *
554 	 * Params:
555 	 *     result = the #GAsyncResult that was provided to the callback.
556 	 *     length = a #gsize to get the length of the data read in.
557 	 *
558 	 * Returns: a string with the data that was read
559 	 *     before encountering any of the stop characters. Set @length to
560 	 *     a #gsize to get the length of the string. This function will
561 	 *     return %NULL on an error.
562 	 *
563 	 * Since: 2.20
564 	 *
565 	 * Throws: GException on failure.
566 	 */
567 	public string readUntilFinish(AsyncResultIF result, out size_t length)
568 	{
569 		GError* err = null;
570 
571 		auto retStr = g_data_input_stream_read_until_finish(gDataInputStream, (result is null) ? null : result.getAsyncResultStruct(), &length, &err);
572 
573 		if (err !is null)
574 		{
575 			throw new GException( new ErrorG(err) );
576 		}
577 
578 		scope(exit) Str.freeString(retStr);
579 		return Str.toString(retStr);
580 	}
581 
582 	/**
583 	 * Reads a string from the data input stream, up to the first
584 	 * occurrence of any of the stop characters.
585 	 *
586 	 * In contrast to g_data_input_stream_read_until(), this function
587 	 * does not consume the stop character. You have to use
588 	 * g_data_input_stream_read_byte() to get it before calling
589 	 * g_data_input_stream_read_upto() again.
590 	 *
591 	 * Note that @stop_chars may contain '\0' if @stop_chars_len is
592 	 * specified.
593 	 *
594 	 * The returned string will always be nul-terminated on success.
595 	 *
596 	 * Params:
597 	 *     stopChars = characters to terminate the read
598 	 *     stopCharsLen = length of @stop_chars. May be -1 if @stop_chars is
599 	 *         nul-terminated
600 	 *     length = a #gsize to get the length of the data read in
601 	 *     cancellable = optional #GCancellable object, %NULL to ignore
602 	 *
603 	 * Returns: a string with the data that was read
604 	 *     before encountering any of the stop characters. Set @length to
605 	 *     a #gsize to get the length of the string. This function will
606 	 *     return %NULL on an error
607 	 *
608 	 * Since: 2.26
609 	 *
610 	 * Throws: GException on failure.
611 	 */
612 	public string readUpto(string stopChars, ptrdiff_t stopCharsLen, out size_t length, Cancellable cancellable)
613 	{
614 		GError* err = null;
615 
616 		auto retStr = g_data_input_stream_read_upto(gDataInputStream, Str.toStringz(stopChars), stopCharsLen, &length, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
617 
618 		if (err !is null)
619 		{
620 			throw new GException( new ErrorG(err) );
621 		}
622 
623 		scope(exit) Str.freeString(retStr);
624 		return Str.toString(retStr);
625 	}
626 
627 	/**
628 	 * The asynchronous version of g_data_input_stream_read_upto().
629 	 * It is an error to have two outstanding calls to this function.
630 	 *
631 	 * In contrast to g_data_input_stream_read_until(), this function
632 	 * does not consume the stop character. You have to use
633 	 * g_data_input_stream_read_byte() to get it before calling
634 	 * g_data_input_stream_read_upto() again.
635 	 *
636 	 * Note that @stop_chars may contain '\0' if @stop_chars_len is
637 	 * specified.
638 	 *
639 	 * When the operation is finished, @callback will be called. You
640 	 * can then call g_data_input_stream_read_upto_finish() to get
641 	 * the result of the operation.
642 	 *
643 	 * Params:
644 	 *     stopChars = characters to terminate the read
645 	 *     stopCharsLen = length of @stop_chars. May be -1 if @stop_chars is
646 	 *         nul-terminated
647 	 *     ioPriority = the [I/O priority][io-priority] of the request
648 	 *     cancellable = optional #GCancellable object, %NULL to ignore
649 	 *     callback = callback to call when the request is satisfied
650 	 *     userData = the data to pass to callback function
651 	 *
652 	 * Since: 2.26
653 	 */
654 	public void readUptoAsync(string stopChars, ptrdiff_t stopCharsLen, int ioPriority, Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
655 	{
656 		g_data_input_stream_read_upto_async(gDataInputStream, Str.toStringz(stopChars), stopCharsLen, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
657 	}
658 
659 	/**
660 	 * Finish an asynchronous call started by
661 	 * g_data_input_stream_read_upto_async().
662 	 *
663 	 * Note that this function does not consume the stop character. You
664 	 * have to use g_data_input_stream_read_byte() to get it before calling
665 	 * g_data_input_stream_read_upto_async() again.
666 	 *
667 	 * The returned string will always be nul-terminated on success.
668 	 *
669 	 * Params:
670 	 *     result = the #GAsyncResult that was provided to the callback
671 	 *     length = a #gsize to get the length of the data read in
672 	 *
673 	 * Returns: a string with the data that was read
674 	 *     before encountering any of the stop characters. Set @length to
675 	 *     a #gsize to get the length of the string. This function will
676 	 *     return %NULL on an error.
677 	 *
678 	 * Since: 2.24
679 	 *
680 	 * Throws: GException on failure.
681 	 */
682 	public string readUptoFinish(AsyncResultIF result, out size_t length)
683 	{
684 		GError* err = null;
685 
686 		auto retStr = g_data_input_stream_read_upto_finish(gDataInputStream, (result is null) ? null : result.getAsyncResultStruct(), &length, &err);
687 
688 		if (err !is null)
689 		{
690 			throw new GException( new ErrorG(err) );
691 		}
692 
693 		scope(exit) Str.freeString(retStr);
694 		return Str.toString(retStr);
695 	}
696 
697 	/**
698 	 * This function sets the byte order for the given @stream. All subsequent
699 	 * reads from the @stream will be read in the given @order.
700 	 *
701 	 * Params:
702 	 *     order = a #GDataStreamByteOrder to set.
703 	 */
704 	public void setByteOrder(GDataStreamByteOrder order)
705 	{
706 		g_data_input_stream_set_byte_order(gDataInputStream, order);
707 	}
708 
709 	/**
710 	 * Sets the newline type for the @stream.
711 	 *
712 	 * Note that using G_DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a read
713 	 * chunk ends in "CR" we must read an additional byte to know if this is "CR" or
714 	 * "CR LF", and this might block if there is no more data available.
715 	 *
716 	 * Params:
717 	 *     type = the type of new line return as #GDataStreamNewlineType.
718 	 */
719 	public void setNewlineType(GDataStreamNewlineType type)
720 	{
721 		g_data_input_stream_set_newline_type(gDataInputStream, type);
722 	}
723 }