1
<refentry id="libbonobo-bonobo-stream-memory">
3
<refentrytitle>BonoboStreamMem</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>LIBBONOBO Library</refmiscinfo>
9
<refname>BonoboStreamMem</refname><refpurpose>
10
In-memory implementation of Bonobo::Stream interface.</refpurpose>
13
<refsynopsisdiv><title>Synopsis</title>
18
struct <link linkend="BonoboStreamMem">BonoboStreamMem</link>;
19
struct <link linkend="BonoboStreamMemPrivate">BonoboStreamMemPrivate</link>;
20
#define <link linkend="BONOBO-STREAM-MEM-TYPE-CAPS">BONOBO_STREAM_MEM_TYPE</link>
21
typedef <link linkend="BonoboStreamMemClass">BonoboStreamMemClass</link>;
22
<link linkend="BonoboStreamMem">BonoboStreamMem</link>* <link linkend="bonobo-stream-mem-construct">bonobo_stream_mem_construct</link>
23
(<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem,
25
<link linkend="size-t">size_t</link> size,
26
<link linkend="gboolean">gboolean</link> read_only,
27
<link linkend="gboolean">gboolean</link> resizable);
28
<link linkend="BonoboObject">BonoboObject</link>* <link linkend="bonobo-stream-mem-create">bonobo_stream_mem_create</link> (const char *buffer,
29
<link linkend="size-t">size_t</link> size,
30
<link linkend="gboolean">gboolean</link> read_only,
31
<link linkend="gboolean">gboolean</link> resizable);
32
const char* <link linkend="bonobo-stream-mem-get-buffer">bonobo_stream_mem_get_buffer</link> (<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem);
33
<link linkend="size-t">size_t</link> <link linkend="bonobo-stream-mem-get-size">bonobo_stream_mem_get_size</link> (<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem);
43
<title>Description</title>
45
The BonoboStreamMem is an implementation of the
46
IDL:Bonobo/Stream:1.0 interface. This implementation allows an
47
in-memory buffer to be exposed as a IDL:Bonobo/Stream:1.0 to
52
Here is a sample way of exposing a C string as an
53
IDL:Bonobo/Stream:1.0:
56
<title>Sample BonoboStreamMem usage</title>
59
BonoboStream *make_bonobo_stream_on_string (char *string)
61
return bonobo_stream_mem_create (string, strlen (string), TRUE, FALSE);
66
This example will make the string argument be exposed as a CORBA
71
<title>Details</title>
73
<title><anchor id="BonoboStreamMem">struct BonoboStreamMem</title>
74
<programlisting>struct BonoboStreamMem {
85
BonoboStreamMemPrivate *priv;
92
<title><anchor id="BonoboStreamMemPrivate">struct BonoboStreamMemPrivate</title>
93
<programlisting>struct BonoboStreamMemPrivate;</programlisting>
98
<title><anchor id="BONOBO-STREAM-MEM-TYPE-CAPS">BONOBO_STREAM_MEM_TYPE</title>
99
<programlisting>#define BONOBO_STREAM_MEM_TYPE BONOBO_TYPE_STREAM_MEM /* deprecated, you should use BONOBO_TYPE_STREAM_MEM */
105
<title><anchor id="BonoboStreamMemClass">BonoboStreamMemClass</title>
106
<programlisting>typedef struct {
107
BonoboObjectClass parent_class;
109
POA_Bonobo_Stream__epv epv;
111
char *(*get_buffer) (BonoboStreamMem *stream_mem);
112
size_t (*get_size) (BonoboStreamMem *stream_mem);
113
} BonoboStreamMemClass;
119
<title><anchor id="bonobo-stream-mem-construct">bonobo_stream_mem_construct ()</title>
120
<programlisting><link linkend="BonoboStreamMem">BonoboStreamMem</link>* bonobo_stream_mem_construct
121
(<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem,
123
<link linkend="size-t">size_t</link> size,
124
<link linkend="gboolean">gboolean</link> read_only,
125
<link linkend="gboolean">gboolean</link> resizable);</programlisting>
128
</para><informaltable pgwide="1" frame="none" role="params">
130
<colspec colwidth="2*">
131
<colspec colwidth="8*">
133
<row><entry align="right"><parameter>stream_mem</parameter> :</entry>
136
<row><entry align="right"><parameter>buffer</parameter> :</entry>
139
<row><entry align="right"><parameter>size</parameter> :</entry>
142
<row><entry align="right"><parameter>read_only</parameter> :</entry>
145
<row><entry align="right"><parameter>resizable</parameter> :</entry>
148
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>
150
</tbody></tgroup></informaltable></refsect2>
152
<title><anchor id="bonobo-stream-mem-create">bonobo_stream_mem_create ()</title>
153
<programlisting><link linkend="BonoboObject">BonoboObject</link>* bonobo_stream_mem_create (const char *buffer,
154
<link linkend="size-t">size_t</link> size,
155
<link linkend="gboolean">gboolean</link> read_only,
156
<link linkend="gboolean">gboolean</link> resizable);</programlisting>
158
Creates a new BonoboStreamMem object.
161
If <parameter>buffer</parameter> is non-<literal>NULL</literal>, <parameter>size</parameter> bytes are copied from it into a new
162
buffer. If <parameter>buffer</parameter> is <literal>NULL</literal>, a new buffer of size <parameter>size</parameter> is created
163
and filled with zero bytes.
166
When data is read out of or (if <parameter>read_only</parameter> is FALSE) written into
167
the returned BonoboStream object, the <link linkend="read">read</link>() and <link linkend="write">write</link>() operations
168
operate on the new buffer. If <parameter>resizable</parameter> is TRUE, writing or seeking
169
past the end of the buffer will cause the buffer to be expanded (with
170
the new space zero-filled for a seek).</para>
173
</para><informaltable pgwide="1" frame="none" role="params">
175
<colspec colwidth="2*">
176
<colspec colwidth="8*">
178
<row><entry align="right"><parameter>buffer</parameter> :</entry>
179
<entry> The data for which a BonoboStreamMem object is to be created.
181
<row><entry align="right"><parameter>size</parameter> :</entry>
182
<entry> The size in bytes of <parameter>buffer</parameter>.
184
<row><entry align="right"><parameter>read_only</parameter> :</entry>
185
<entry> Specifies whether or not the returned BonoboStreamMem
186
object should allow <link linkend="write">write</link>() operations.
188
<row><entry align="right"><parameter>resizable</parameter> :</entry>
189
<entry> Whether or not the buffer should be resized as needed.
191
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the constructed BonoboStream object
193
</tbody></tgroup></informaltable></refsect2>
195
<title><anchor id="bonobo-stream-mem-get-buffer">bonobo_stream_mem_get_buffer ()</title>
196
<programlisting>const char* bonobo_stream_mem_get_buffer (<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem);</programlisting>
198
Returns the buffer associated with a BonoboStreamMem. If the stream
199
is set to automatically resize itself, this buffer is only guaranteed
200
to stay valid until the next write operation on the stream.</para>
203
</para><informaltable pgwide="1" frame="none" role="params">
205
<colspec colwidth="2*">
206
<colspec colwidth="8*">
208
<row><entry align="right"><parameter>stream_mem</parameter> :</entry>
209
<entry> a BonoboStreamMem
211
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> a buffer containing the data written to the stream (or
212
the data the stream was initialized with if nothing has been written).
214
</tbody></tgroup></informaltable></refsect2>
216
<title><anchor id="bonobo-stream-mem-get-size">bonobo_stream_mem_get_size ()</title>
217
<programlisting><link linkend="size-t">size_t</link> bonobo_stream_mem_get_size (<link linkend="BonoboStreamMem">BonoboStreamMem</link> *stream_mem);</programlisting>
219
Returns the size of the data associated with a BonoboStreamMem
220
see bonobo_stream_mem_get_buffer</para>
223
</para><informaltable pgwide="1" frame="none" role="params">
225
<colspec colwidth="2*">
226
<colspec colwidth="8*">
228
<row><entry align="right"><parameter>stream_mem</parameter> :</entry>
229
<entry> a BonoboStreamMem
231
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> the size.
233
</tbody></tgroup></informaltable></refsect2>
240
<title>See Also</title>
244
<term><link linkend="BonoboStream">BonoboStream</link></term>
245
<listitem><para>An abstract class to implement
246
IDL:Bonobo/Streams.</para></listitem>
249
<term>IDL:Bonobo/Stream:1.0</term>
250
<listitem><para>The CORBA interface implemented .</para></listitem>