1    <refentry id="refbufdest">
2
3      <refmeta>
4	<refentrytitle>ne_buffer_destroy</refentrytitle>
5	<manvolnum>3</manvolnum>
6      </refmeta>
7
8      <refnamediv>
9	<refname id="ne_buffer_destroy">ne_buffer_destroy</refname>
10	<refname id="ne_buffer_finish">ne_buffer_finish</refname>
11	<refpurpose>destroy a buffer object</refpurpose>
12      </refnamediv>
13      
14      <refsynopsisdiv>
15	
16	<funcsynopsis>
17
18	  <funcsynopsisinfo>#include &lt;ne_string.h&gt;</funcsynopsisinfo>
19
20	  <funcprototype>
21	    <funcdef>void <function>ne_buffer_destroy</function></funcdef>
22	    <paramdef>ne_buffer *<parameter>buf</parameter></paramdef>
23	  </funcprototype>
24
25	  <funcprototype>
26	    <funcdef>char *<function>ne_buffer_finish</function></funcdef>
27	    <paramdef>ne_buffer *<parameter>buf</parameter></paramdef>
28	  </funcprototype>
29
30	</funcsynopsis>
31	
32      </refsynopsisdiv>
33
34      <refsect1>
35	<title>Description</title>
36
37	<para><function>ne_buffer_destroy</function> frees all memory
38associated with the buffer.  <function>ne_buffer_finish</function>
39frees the buffer structure, but not the actual string stored in the
40buffer, which is returned and must be <function>free</function>()d by
41the caller.</para>
42
43	<para>Any use of the buffer object after calling either of these
44functions gives undefined behaviour.</para>
45
46      </refsect1>
47
48      <refsect1>
49	<title>Return value</title>
50
51	<para><function>ne_buffer_finish</function> returns the
52<function>malloc</function>-allocated string stored in the buffer.</para>
53
54      </refsect1>
55
56      <refsect1>
57	<title>Examples</title>
58
59	<para>An example use of <function>ne_buffer_finish</function>;
60the <function>duplicate</function> function returns a string made up of 
61<parameter>n</parameter> copies of <parameter>str</parameter>:</para>
62
63	<programlisting>static char *duplicate(int n, const char *str)
64{
65  ne_buffer *buf = ne_buffer_create();
66  while (n--) {
67    ne_buffer_zappend(buf, str);
68  }
69  return ne_buffer_finish(buf);
70}</programlisting>
71
72      </refsect1>
73
74      <refsect1>
75	<title>See also</title>
76
77	<para><xref linkend="ne_buffer"/>, <xref linkend="ne_buffer_create"/>,
78<xref linkend="ne_buffer_zappend"/></para>
79      </refsect1>
80
81    </refentry>
82