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.BufferedOutputStream; 26 27 private import gio.FilterOutputStream; 28 private import gio.OutputStream; 29 private import gio.SeekableIF; 30 private import gio.SeekableT; 31 private import gio.c.functions; 32 public import gio.c.types; 33 private import glib.ConstructionException; 34 private import gobject.ObjectG; 35 36 37 /** 38 * Buffered output stream implements #GFilterOutputStream and provides 39 * for buffered writes. 40 * 41 * By default, #GBufferedOutputStream's buffer size is set at 4 kilobytes. 42 * 43 * To create a buffered output stream, use g_buffered_output_stream_new(), 44 * or g_buffered_output_stream_new_sized() to specify the buffer's size 45 * at construction. 46 * 47 * To get the size of a buffer within a buffered input stream, use 48 * g_buffered_output_stream_get_buffer_size(). To change the size of a 49 * buffered output stream's buffer, use 50 * g_buffered_output_stream_set_buffer_size(). Note that the buffer's 51 * size cannot be reduced below the size of the data within the buffer. 52 */ 53 public class BufferedOutputStream : FilterOutputStream, SeekableIF 54 { 55 /** the main Gtk struct */ 56 protected GBufferedOutputStream* gBufferedOutputStream; 57 58 /** Get the main Gtk struct */ 59 public GBufferedOutputStream* getBufferedOutputStreamStruct(bool transferOwnership = false) 60 { 61 if (transferOwnership) 62 ownedRef = false; 63 return gBufferedOutputStream; 64 } 65 66 /** the main Gtk struct as a void* */ 67 protected override void* getStruct() 68 { 69 return cast(void*)gBufferedOutputStream; 70 } 71 72 /** 73 * Sets our main struct and passes it to the parent class. 74 */ 75 public this (GBufferedOutputStream* gBufferedOutputStream, bool ownedRef = false) 76 { 77 this.gBufferedOutputStream = gBufferedOutputStream; 78 super(cast(GFilterOutputStream*)gBufferedOutputStream, ownedRef); 79 } 80 81 // add the Seekable capabilities 82 mixin SeekableT!(GBufferedOutputStream); 83 84 85 /** */ 86 public static GType getType() 87 { 88 return g_buffered_output_stream_get_type(); 89 } 90 91 /** 92 * Creates a new buffered output stream for a base stream. 93 * 94 * Params: 95 * baseStream = a #GOutputStream. 96 * 97 * Returns: a #GOutputStream for the given @base_stream. 98 * 99 * Throws: ConstructionException GTK+ fails to create the object. 100 */ 101 public this(OutputStream baseStream) 102 { 103 auto __p = g_buffered_output_stream_new((baseStream is null) ? null : baseStream.getOutputStreamStruct()); 104 105 if(__p is null) 106 { 107 throw new ConstructionException("null returned by new"); 108 } 109 110 this(cast(GBufferedOutputStream*) __p, true); 111 } 112 113 /** 114 * Creates a new buffered output stream with a given buffer size. 115 * 116 * Params: 117 * baseStream = a #GOutputStream. 118 * size = a #gsize. 119 * 120 * Returns: a #GOutputStream with an internal buffer set to @size. 121 * 122 * Throws: ConstructionException GTK+ fails to create the object. 123 */ 124 public this(OutputStream baseStream, size_t size) 125 { 126 auto __p = g_buffered_output_stream_new_sized((baseStream is null) ? null : baseStream.getOutputStreamStruct(), size); 127 128 if(__p is null) 129 { 130 throw new ConstructionException("null returned by new_sized"); 131 } 132 133 this(cast(GBufferedOutputStream*) __p, true); 134 } 135 136 /** 137 * Checks if the buffer automatically grows as data is added. 138 * 139 * Returns: %TRUE if the @stream's buffer automatically grows, 140 * %FALSE otherwise. 141 */ 142 public bool getAutoGrow() 143 { 144 return g_buffered_output_stream_get_auto_grow(gBufferedOutputStream) != 0; 145 } 146 147 /** 148 * Gets the size of the buffer in the @stream. 149 * 150 * Returns: the current size of the buffer. 151 */ 152 public size_t getBufferSize() 153 { 154 return g_buffered_output_stream_get_buffer_size(gBufferedOutputStream); 155 } 156 157 /** 158 * Sets whether or not the @stream's buffer should automatically grow. 159 * If @auto_grow is true, then each write will just make the buffer 160 * larger, and you must manually flush the buffer to actually write out 161 * the data to the underlying stream. 162 * 163 * Params: 164 * autoGrow = a #gboolean. 165 */ 166 public void setAutoGrow(bool autoGrow) 167 { 168 g_buffered_output_stream_set_auto_grow(gBufferedOutputStream, autoGrow); 169 } 170 171 /** 172 * Sets the size of the internal buffer to @size. 173 * 174 * Params: 175 * size = a #gsize. 176 */ 177 public void setBufferSize(size_t size) 178 { 179 g_buffered_output_stream_set_buffer_size(gBufferedOutputStream, size); 180 } 181 }