~ubuntu-branches/ubuntu/hoary/flac/hoary

« back to all changes in this revision

Viewing changes to doc/html/api/group__flac__metadata__level2.html

  • Committer: Bazaar Package Importer
  • Author(s): Matt Zimmerman
  • Date: 2004-04-16 15:14:31 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040416151431-eyloggqxpwbwpogz
Tags: 1.1.0-11
Ensure that libFLAC is linked with -lm on all architectures, and
regardless of whether nasm is present

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
 
3
<title>FLAC/metadata.h: metadata level 2 interface</title>
 
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
 
5
</head><body>
 
6
<!-- Generated by Doxygen 1.2.14 -->
 
7
<center>
 
8
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
 
9
<hr><h1>FLAC/metadata.h: metadata level 2 interface<br>
 
10
<small>
 
11
[<a class="el" href="group__flac__metadata.html">FLAC/metadata.h: metadata interfaces</a>]</small>
 
12
</h1>The level 2 interface provides read-write access to FLAC file metadata; all metadata is read into memory, operated on in memory, and then written to file, which is more efficient than level 1 when editing multiple blocks. 
 
13
<a href="#_details">More...</a><table border=0 cellpadding=0 cellspacing=0>
 
14
<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
 
15
<tr><td nowrap align=right valign=top>typedef FLAC__Metadata_Chain&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a></td></tr>
 
16
<tr><td nowrap align=right valign=top>typedef FLAC__Metadata_Iterator&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a></td></tr>
 
17
<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
 
18
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a21">FLAC__Metadata_ChainStatus</a> { <br>
 
19
&nbsp;&nbsp;<a class="el" href="group__flac__metadata__level2.html#a21a18">FLAC__METADATA_CHAIN_STATUS_OK</a> =  0, 
 
20
<a class="el" href="group__flac__metadata__level2.html#a21a19">FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT</a>, 
 
21
<a class="el" href="group__flac__metadata__level2.html#a21a20">FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE</a>, 
 
22
<a class="el" href="group__flac__metadata__level2.html#a21a21">FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE</a>, 
 
23
<br>
 
24
&nbsp;&nbsp;<a class="el" href="group__flac__metadata__level2.html#a21a22">FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE</a>, 
 
25
<a class="el" href="group__flac__metadata__level2.html#a21a23">FLAC__METADATA_CHAIN_STATUS_BAD_METADATA</a>, 
 
26
<a class="el" href="group__flac__metadata__level2.html#a21a24">FLAC__METADATA_CHAIN_STATUS_READ_ERROR</a>, 
 
27
<a class="el" href="group__flac__metadata__level2.html#a21a25">FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR</a>, 
 
28
<br>
 
29
&nbsp;&nbsp;<a class="el" href="group__flac__metadata__level2.html#a21a26">FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR</a>, 
 
30
<a class="el" href="group__flac__metadata__level2.html#a21a27">FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR</a>, 
 
31
<a class="el" href="group__flac__metadata__level2.html#a21a28">FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR</a>, 
 
32
<a class="el" href="group__flac__metadata__level2.html#a21a29">FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR</a>, 
 
33
<br>
 
34
&nbsp;&nbsp;<a class="el" href="group__flac__metadata__level2.html#a21a30">FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR</a>
 
35
<br>
 
36
 }</td></tr>
 
37
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
 
38
<tr><td nowrap align=right valign=top><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a3">FLAC__metadata_chain_new</a> ()</td></tr>
 
39
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a4">FLAC__metadata_chain_delete</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain)</td></tr>
 
40
<tr><td nowrap align=right valign=top><a class="el" href="group__flac__metadata__level2.html#a21">FLAC__Metadata_ChainStatus</a>&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a5">FLAC__metadata_chain_status</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain)</td></tr>
 
41
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a6">FLAC__metadata_chain_read</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain, const char *filename)</td></tr>
 
42
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a7">FLAC__metadata_chain_write</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats)</td></tr>
 
43
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a8">FLAC__metadata_chain_merge_padding</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain)</td></tr>
 
44
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a9">FLAC__metadata_chain_sort_padding</a> (<a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain)</td></tr>
 
45
<tr><td nowrap align=right valign=top><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a10">FLAC__metadata_iterator_new</a> ()</td></tr>
 
46
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a11">FLAC__metadata_iterator_delete</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator)</td></tr>
 
47
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator, <a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *chain)</td></tr>
 
48
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a13">FLAC__metadata_iterator_next</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator)</td></tr>
 
49
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a14">FLAC__metadata_iterator_prev</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator)</td></tr>
 
50
<tr><td nowrap align=right valign=top><a class="el" href="group__flac__format.html#a93">FLAC__MetadataType</a>&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a15">FLAC__metadata_iterator_get_block_type</a> (const <a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator)</td></tr>
 
51
<tr><td nowrap align=right valign=top><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a16">FLAC__metadata_iterator_get_block</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator)</td></tr>
 
52
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a17">FLAC__metadata_iterator_set_block</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator, <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *block)</td></tr>
 
53
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a18">FLAC__metadata_iterator_delete_block</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator, FLAC__bool replace_with_padding)</td></tr>
 
54
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a19">FLAC__metadata_iterator_insert_block_before</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator, <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *block)</td></tr>
 
55
<tr><td nowrap align=right valign=top>FLAC__bool&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a20">FLAC__metadata_iterator_insert_block_after</a> (<a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *iterator, <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *block)</td></tr>
 
56
<tr><td colspan=2><br><h2>Variables</h2></td></tr>
 
57
<tr><td nowrap align=right valign=top>const char *const&nbsp;</td><td valign=bottom><a class="el" href="group__flac__metadata__level2.html#a2">FLAC__Metadata_ChainStatusString</a> []</td></tr>
 
58
</table>
 
59
<hr><a name="_details"></a><h2>Detailed Description</h2>
 
60
The level 2 interface provides read-write access to FLAC file metadata; all metadata is read into memory, operated on in memory, and then written to file, which is more efficient than level 1 when editing multiple blocks.
 
61
<p>
 
62
 
 
63
<p>
 
64
 The general usage of this interface is:
 
65
<p>
 
66
<ul>
 
67
<li>Create a new chain using <a class="el" href="group__flac__metadata__level2.html#a3">FLAC__metadata_chain_new</a>(). A chain is a linked list of FLAC metadata blocks.<li>Read all metadata into the the chain from a FLAC file using <a class="el" href="group__flac__metadata__level2.html#a6">FLAC__metadata_chain_read</a>() and check the status.<li>Optionally, consolidate the padding using <a class="el" href="group__flac__metadata__level2.html#a8">FLAC__metadata_chain_merge_padding</a>() or <a class="el" href="group__flac__metadata__level2.html#a9">FLAC__metadata_chain_sort_padding</a>().<li>Create a new iterator using <a class="el" href="group__flac__metadata__level2.html#a10">FLAC__metadata_iterator_new</a>()<li>Initialize the iterator to point to the first element in the chain using <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>()<li>Traverse the chain using FLAC__metadata_iterator_next and <a class="el" href="group__flac__metadata__level2.html#a14">FLAC__metadata_iterator_prev</a>().<li>Get a block for reading or modification using <a class="el" href="group__flac__metadata__level2.html#a16">FLAC__metadata_iterator_get_block</a>(). The pointer to the object inside the chain is returned, so the block is yours to modify. Changes will be reflected in the FLAC file when you write the chain. You can also add and delete blocks (see functions below).<li>When done, write out the chain using <a class="el" href="group__flac__metadata__level2.html#a7">FLAC__metadata_chain_write</a>(). Make sure to read the whole comment to the function below.<li>Delete the chain using <a class="el" href="group__flac__metadata__level2.html#a4">FLAC__metadata_chain_delete</a>().</ul>
 
68
<dl compact><dt><b>
 
69
Note: </b><dd>
 
70
 Even though the FLAC file is not open while the chain is being manipulated, you must not alter the file externally during this time. The chain assumes the FLAC file will not change between the time of <a class="el" href="group__flac__metadata__level2.html#a6">FLAC__metadata_chain_read</a>() and <a class="el" href="group__flac__metadata__level2.html#a7">FLAC__metadata_chain_write</a>().</dl><dl compact><dt><b>
 
71
Note: </b><dd>
 
72
 Do not modify the is_last, length, or type fields of returned FLAC__MetadataType objects. These are managed automatically.</dl><dl compact><dt><b>
 
73
Note: </b><dd>
 
74
 The metadata objects returned by <a class="el" href="group__flac__metadata__level2.html#a16">FLAC__metadata_iterator_get_block</a>() are owned by the chain; do not <a class="el" href="group__flac__metadata__object.html#a2">FLAC__metadata_object_delete</a>() them. In the same way, blocks passed to <a class="el" href="group__flac__metadata__level2.html#a17">FLAC__metadata_iterator_set_block</a>() become owned by the chain and they will be deleted when the chain is deleted. </dl><hr><h2>Typedef Documentation</h2>
 
75
<a name="a0" doxytag="metadata.h::FLAC__Metadata_Chain"></a><p>
 
76
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
77
  <tr>
 
78
    <td class="md">
 
79
      <table cellpadding="0" cellspacing="0" border="0">
 
80
        <tr>
 
81
          <td class="md" nowrap valign="top"> typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain
 
82
      </table>
 
83
    </td>
 
84
  </tr>
 
85
</table>
 
86
<table cellspacing=5 cellpadding=0 border=0>
 
87
  <tr>
 
88
    <td>
 
89
      &nbsp;
 
90
    </td>
 
91
    <td>
 
92
 
 
93
<p>
 
94
The opaque structure definition for the level 2 chain type.     </td>
 
95
  </tr>
 
96
</table>
 
97
<a name="a1" doxytag="metadata.h::FLAC__Metadata_Iterator"></a><p>
 
98
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
99
  <tr>
 
100
    <td class="md">
 
101
      <table cellpadding="0" cellspacing="0" border="0">
 
102
        <tr>
 
103
          <td class="md" nowrap valign="top"> typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator
 
104
      </table>
 
105
    </td>
 
106
  </tr>
 
107
</table>
 
108
<table cellspacing=5 cellpadding=0 border=0>
 
109
  <tr>
 
110
    <td>
 
111
      &nbsp;
 
112
    </td>
 
113
    <td>
 
114
 
 
115
<p>
 
116
The opaque structure definition for the level 2 iterator type.     </td>
 
117
  </tr>
 
118
</table>
 
119
<hr><h2>Enumeration Type Documentation</h2>
 
120
<a name="a21" doxytag="metadata.h::FLAC__Metadata_ChainStatus"></a><p>
 
121
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
122
  <tr>
 
123
    <td class="md">
 
124
      <table cellpadding="0" cellspacing="0" border="0">
 
125
        <tr>
 
126
          <td class="md" nowrap valign="top"> enum FLAC__Metadata_ChainStatus
 
127
      </table>
 
128
    </td>
 
129
  </tr>
 
130
</table>
 
131
<table cellspacing=5 cellpadding=0 border=0>
 
132
  <tr>
 
133
    <td>
 
134
      &nbsp;
 
135
    </td>
 
136
    <td>
 
137
 
 
138
<p>
 
139
<dl compact><dt><b>
 
140
Enumeration values:</b><dd>
 
141
<table border=0 cellspacing=2 cellpadding=0>
 
142
<tr><td valign=top><em><a name="a21a18" doxytag="FLAC__METADATA_CHAIN_STATUS_OK"></a><em>FLAC__METADATA_CHAIN_STATUS_OK</em></em>&nbsp;</td><td>
 
143
The chain is in the normal OK state </td></tr>
 
144
<tr><td valign=top><em><a name="a21a19" doxytag="FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT"></a><em>FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT</em></em>&nbsp;</td><td>
 
145
The data passed into a function violated the function's usage criteria </td></tr>
 
146
<tr><td valign=top><em><a name="a21a20" doxytag="FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"></a><em>FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE</em></em>&nbsp;</td><td>
 
147
The chain could not open the target file </td></tr>
 
148
<tr><td valign=top><em><a name="a21a21" doxytag="FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE"></a><em>FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE</em></em>&nbsp;</td><td>
 
149
The chain could not find the FLAC signature at the start of the file </td></tr>
 
150
<tr><td valign=top><em><a name="a21a22" doxytag="FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE"></a><em>FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE</em></em>&nbsp;</td><td>
 
151
The chain tried to write to a file that was not writable </td></tr>
 
152
<tr><td valign=top><em><a name="a21a23" doxytag="FLAC__METADATA_CHAIN_STATUS_BAD_METADATA"></a><em>FLAC__METADATA_CHAIN_STATUS_BAD_METADATA</em></em>&nbsp;</td><td>
 
153
The chain encountered input that does not conform to the FLAC metadata specification </td></tr>
 
154
<tr><td valign=top><em><a name="a21a24" doxytag="FLAC__METADATA_CHAIN_STATUS_READ_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_READ_ERROR</em></em>&nbsp;</td><td>
 
155
The chain encountered an error while reading the FLAC file </td></tr>
 
156
<tr><td valign=top><em><a name="a21a25" doxytag="FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR</em></em>&nbsp;</td><td>
 
157
The chain encountered an error while seeking in the FLAC file </td></tr>
 
158
<tr><td valign=top><em><a name="a21a26" doxytag="FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR</em></em>&nbsp;</td><td>
 
159
The chain encountered an error while writing the FLAC file </td></tr>
 
160
<tr><td valign=top><em><a name="a21a27" doxytag="FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR</em></em>&nbsp;</td><td>
 
161
The chain encountered an error renaming the FLAC file </td></tr>
 
162
<tr><td valign=top><em><a name="a21a28" doxytag="FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR</em></em>&nbsp;</td><td>
 
163
The chain encountered an error removing the temporary file </td></tr>
 
164
<tr><td valign=top><em><a name="a21a29" doxytag="FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR</em></em>&nbsp;</td><td>
 
165
Memory allocation failed </td></tr>
 
166
<tr><td valign=top><em><a name="a21a30" doxytag="FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR"></a><em>FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR</em></em>&nbsp;</td><td>
 
167
The caller violated an assertion or an unexpected error occurred </td></tr>
 
168
</table>
 
169
</dl>
 
170
    </td>
 
171
  </tr>
 
172
</table>
 
173
<hr><h2>Function Documentation</h2>
 
174
<a name="a3" doxytag="metadata.h::FLAC__metadata_chain_new"></a><p>
 
175
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
176
  <tr>
 
177
    <td class="md">
 
178
      <table cellpadding="0" cellspacing="0" border="0">
 
179
        <tr>
 
180
          <td class="md" nowrap valign="top"> <a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a>* FLAC__metadata_chain_new </td>
 
181
          <td class="md" valign="top">(&nbsp;</td>
 
182
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
 
183
          <td class="md" valign="top">)&nbsp;</td>
 
184
          <td class="md" nowrap></td>
 
185
        </tr>
 
186
 
 
187
      </table>
 
188
    </td>
 
189
  </tr>
 
190
</table>
 
191
<table cellspacing=5 cellpadding=0 border=0>
 
192
  <tr>
 
193
    <td>
 
194
      &nbsp;
 
195
    </td>
 
196
    <td>
 
197
 
 
198
<p>
 
199
Create a new chain instance.<dl compact><dt><b>
 
200
Return values: </b><dd>
 
201
<table border=0 cellspacing=2 cellpadding=0>
 
202
<tr><td valign=top><em>FLAC__Metadata_Chain</em>&nbsp;</td><td>
 
203
* <code>NULL</code> if there was an error allocating memory, else the new instance. </td></tr>
 
204
</table>
 
205
</dl>    </td>
 
206
  </tr>
 
207
</table>
 
208
<a name="a4" doxytag="metadata.h::FLAC__metadata_chain_delete"></a><p>
 
209
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
210
  <tr>
 
211
    <td class="md">
 
212
      <table cellpadding="0" cellspacing="0" border="0">
 
213
        <tr>
 
214
          <td class="md" nowrap valign="top"> void FLAC__metadata_chain_delete </td>
 
215
          <td class="md" valign="top">(&nbsp;</td>
 
216
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
217
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>chain</em>          </td>
 
218
          <td class="md" valign="top">)&nbsp;</td>
 
219
          <td class="md" nowrap></td>
 
220
        </tr>
 
221
 
 
222
      </table>
 
223
    </td>
 
224
  </tr>
 
225
</table>
 
226
<table cellspacing=5 cellpadding=0 border=0>
 
227
  <tr>
 
228
    <td>
 
229
      &nbsp;
 
230
    </td>
 
231
    <td>
 
232
 
 
233
<p>
 
234
Free a chain instance. Deletes the object pointed to by <em>chain</em>.<dl compact><dt><b>
 
235
Parameters: </b><dd>
 
236
<table border=0 cellspacing=2 cellpadding=0>
 
237
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
238
A pointer to an existing chain. </td></tr>
 
239
</table>
 
240
</dl><dl compact><dt><b>
 
241
Assertions:</b><dd>
 
242
 <div class="fragment"><pre>chain != NULL 
 
243
</pre></div> </dl>    </td>
 
244
  </tr>
 
245
</table>
 
246
<a name="a5" doxytag="metadata.h::FLAC__metadata_chain_status"></a><p>
 
247
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
248
  <tr>
 
249
    <td class="md">
 
250
      <table cellpadding="0" cellspacing="0" border="0">
 
251
        <tr>
 
252
          <td class="md" nowrap valign="top"> <a class="el" href="group__flac__metadata__level2.html#a21">FLAC__Metadata_ChainStatus</a> FLAC__metadata_chain_status </td>
 
253
          <td class="md" valign="top">(&nbsp;</td>
 
254
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
255
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>chain</em>          </td>
 
256
          <td class="md" valign="top">)&nbsp;</td>
 
257
          <td class="md" nowrap></td>
 
258
        </tr>
 
259
 
 
260
      </table>
 
261
    </td>
 
262
  </tr>
 
263
</table>
 
264
<table cellspacing=5 cellpadding=0 border=0>
 
265
  <tr>
 
266
    <td>
 
267
      &nbsp;
 
268
    </td>
 
269
    <td>
 
270
 
 
271
<p>
 
272
Get the current status of the chain. Call this after a function returns <code>false</code> to get the reason for the error. Also resets the status to FLAC__METADATA_CHAIN_STATUS_OK.<dl compact><dt><b>
 
273
Parameters: </b><dd>
 
274
<table border=0 cellspacing=2 cellpadding=0>
 
275
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
276
A pointer to an existing chain. </td></tr>
 
277
</table>
 
278
</dl><dl compact><dt><b>
 
279
Assertions:</b><dd>
 
280
 <div class="fragment"><pre>chain != NULL 
 
281
</pre></div> </dl><dl compact><dt><b>
 
282
Return values: </b><dd>
 
283
<table border=0 cellspacing=2 cellpadding=0>
 
284
<tr><td valign=top><em>FLAC__Metadata_ChainStatus</em>&nbsp;</td><td>
 
285
The current status of the chain. </td></tr>
 
286
</table>
 
287
</dl>    </td>
 
288
  </tr>
 
289
</table>
 
290
<a name="a6" doxytag="metadata.h::FLAC__metadata_chain_read"></a><p>
 
291
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
292
  <tr>
 
293
    <td class="md">
 
294
      <table cellpadding="0" cellspacing="0" border="0">
 
295
        <tr>
 
296
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_chain_read </td>
 
297
          <td class="md" valign="top">(&nbsp;</td>
 
298
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
299
          <td class="mdname" nowrap>&nbsp; <em>chain</em>, </td>
 
300
        </tr>
 
301
        <tr>
 
302
          <td></td>
 
303
          <td></td>
 
304
          <td class="md" nowrap>const char *&nbsp;</td>
 
305
          <td class="mdname" nowrap>&nbsp; <em>filename</em></td>
 
306
        </tr>
 
307
        <tr>
 
308
          <td></td>
 
309
          <td class="md">)&nbsp;</td>
 
310
          <td class="md" colspan="2"></td>
 
311
        </tr>
 
312
 
 
313
      </table>
 
314
    </td>
 
315
  </tr>
 
316
</table>
 
317
<table cellspacing=5 cellpadding=0 border=0>
 
318
  <tr>
 
319
    <td>
 
320
      &nbsp;
 
321
    </td>
 
322
    <td>
 
323
 
 
324
<p>
 
325
Read all metadata from a FLAC file into the chain.<dl compact><dt><b>
 
326
Parameters: </b><dd>
 
327
<table border=0 cellspacing=2 cellpadding=0>
 
328
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
329
A pointer to an existing chain. </td></tr>
 
330
<tr><td valign=top><em>filename</em>&nbsp;</td><td>
 
331
The path to the FLAC file to read. </td></tr>
 
332
</table>
 
333
</dl><dl compact><dt><b>
 
334
Assertions:</b><dd>
 
335
 <div class="fragment"><pre>chain != NULL 
 
336
</pre></div> <div class="fragment"><pre>filename != NULL 
 
337
</pre></div> </dl><dl compact><dt><b>
 
338
Return values: </b><dd>
 
339
<table border=0 cellspacing=2 cellpadding=0>
 
340
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
341
<code>true</code> if a valid list of metadata blocks was read from <em>filename</em>, else <code>false</code>. On failure, check the status with <a class="el" href="group__flac__metadata__level2.html#a5">FLAC__metadata_chain_status</a>(). </td></tr>
 
342
</table>
 
343
</dl>    </td>
 
344
  </tr>
 
345
</table>
 
346
<a name="a7" doxytag="metadata.h::FLAC__metadata_chain_write"></a><p>
 
347
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
348
  <tr>
 
349
    <td class="md">
 
350
      <table cellpadding="0" cellspacing="0" border="0">
 
351
        <tr>
 
352
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_chain_write </td>
 
353
          <td class="md" valign="top">(&nbsp;</td>
 
354
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
355
          <td class="mdname" nowrap>&nbsp; <em>chain</em>, </td>
 
356
        </tr>
 
357
        <tr>
 
358
          <td></td>
 
359
          <td></td>
 
360
          <td class="md" nowrap>FLAC__bool&nbsp;</td>
 
361
          <td class="mdname" nowrap>&nbsp; <em>use_padding</em>, </td>
 
362
        </tr>
 
363
        <tr>
 
364
          <td></td>
 
365
          <td></td>
 
366
          <td class="md" nowrap>FLAC__bool&nbsp;</td>
 
367
          <td class="mdname" nowrap>&nbsp; <em>preserve_file_stats</em></td>
 
368
        </tr>
 
369
        <tr>
 
370
          <td></td>
 
371
          <td class="md">)&nbsp;</td>
 
372
          <td class="md" colspan="2"></td>
 
373
        </tr>
 
374
 
 
375
      </table>
 
376
    </td>
 
377
  </tr>
 
378
</table>
 
379
<table cellspacing=5 cellpadding=0 border=0>
 
380
  <tr>
 
381
    <td>
 
382
      &nbsp;
 
383
    </td>
 
384
    <td>
 
385
 
 
386
<p>
 
387
Write all metadata out to the FLAC file. This function tries to be as efficient as possible; how the metadata is actually written is shown by the following:
 
388
<p>
 
389
If the current chain is the same size as the existing metadata, the new data is written in place.
 
390
<p>
 
391
If the current chain is longer than the existing metadata, and <em>use_padding</em> is <code>true</code>, and the last block is a PADDING block of sufficient length, the function will truncate the final padding block so that the overall size of the metadata is the same as the existing metadata, and then just rewrite the metadata. Otherwise, if not all of the above conditions are met, the entire FLAC file must be rewritten. If you want to use padding this way it is a good idea to call <a class="el" href="group__flac__metadata__level2.html#a9">FLAC__metadata_chain_sort_padding</a>() first so that you have the maximum amount of padding to work with, unless you need to preserve ordering of the PADDING blocks for some reason.
 
392
<p>
 
393
If the current chain is shorter than the existing metadata, and <em>use_padding</em> is <code>true</code>, and the final block is a PADDING block, the padding is extended to make the overall size the same as the existing data. If <em>use_padding</em> is <code>true</code> and the last block is not a PADDING block, a new PADDING block is added to the end of the new data to make it the same size as the existing data (if possible, see the note to <a class="el" href="group__flac__metadata__level1.html#a11">FLAC__metadata_simple_iterator_set_block</a>() about the four byte limit) and the new data is written in place. If none of the above apply or <em>use_padding</em> is <code>false</code>, the entire FLAC file is rewritten.
 
394
<p>
 
395
If <em>preserve_file_stats</em> is <code>true</code>, the owner and modification time will be preserved even if the FLAC file is written.<dl compact><dt><b>
 
396
Parameters: </b><dd>
 
397
<table border=0 cellspacing=2 cellpadding=0>
 
398
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
399
A pointer to an existing chain. </td></tr>
 
400
<tr><td valign=top><em>use_padding</em>&nbsp;</td><td>
 
401
See above. </td></tr>
 
402
<tr><td valign=top><em>preserve_file_stats</em>&nbsp;</td><td>
 
403
See above. </td></tr>
 
404
</table>
 
405
</dl><dl compact><dt><b>
 
406
Assertions:</b><dd>
 
407
 <div class="fragment"><pre>chain != NULL 
 
408
</pre></div> </dl><dl compact><dt><b>
 
409
Return values: </b><dd>
 
410
<table border=0 cellspacing=2 cellpadding=0>
 
411
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
412
<code>true</code> if the write succeeded, else <code>false</code>. On failure, check the status with <a class="el" href="group__flac__metadata__level2.html#a5">FLAC__metadata_chain_status</a>(). </td></tr>
 
413
</table>
 
414
</dl>    </td>
 
415
  </tr>
 
416
</table>
 
417
<a name="a8" doxytag="metadata.h::FLAC__metadata_chain_merge_padding"></a><p>
 
418
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
419
  <tr>
 
420
    <td class="md">
 
421
      <table cellpadding="0" cellspacing="0" border="0">
 
422
        <tr>
 
423
          <td class="md" nowrap valign="top"> void FLAC__metadata_chain_merge_padding </td>
 
424
          <td class="md" valign="top">(&nbsp;</td>
 
425
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
426
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>chain</em>          </td>
 
427
          <td class="md" valign="top">)&nbsp;</td>
 
428
          <td class="md" nowrap></td>
 
429
        </tr>
 
430
 
 
431
      </table>
 
432
    </td>
 
433
  </tr>
 
434
</table>
 
435
<table cellspacing=5 cellpadding=0 border=0>
 
436
  <tr>
 
437
    <td>
 
438
      &nbsp;
 
439
    </td>
 
440
    <td>
 
441
 
 
442
<p>
 
443
Merge adjacent PADDING blocks into a single block.
 
444
<p>
 
445
<dl compact><dt><b>
 
446
Note: </b><dd>
 
447
This function does not write to the FLAC file, it only modifies the chain.</dl><dl compact><dt><b>
 
448
Warning: </b><dd>
 
449
Any iterator on the current chain will become invalid after this call. You should delete the iterator and get a new one.</dl><dl compact><dt><b>
 
450
Parameters: </b><dd>
 
451
<table border=0 cellspacing=2 cellpadding=0>
 
452
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
453
A pointer to an existing chain. </td></tr>
 
454
</table>
 
455
</dl><dl compact><dt><b>
 
456
Assertions:</b><dd>
 
457
 <div class="fragment"><pre>chain != NULL 
 
458
</pre></div> </dl>    </td>
 
459
  </tr>
 
460
</table>
 
461
<a name="a9" doxytag="metadata.h::FLAC__metadata_chain_sort_padding"></a><p>
 
462
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
463
  <tr>
 
464
    <td class="md">
 
465
      <table cellpadding="0" cellspacing="0" border="0">
 
466
        <tr>
 
467
          <td class="md" nowrap valign="top"> void FLAC__metadata_chain_sort_padding </td>
 
468
          <td class="md" valign="top">(&nbsp;</td>
 
469
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
470
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>chain</em>          </td>
 
471
          <td class="md" valign="top">)&nbsp;</td>
 
472
          <td class="md" nowrap></td>
 
473
        </tr>
 
474
 
 
475
      </table>
 
476
    </td>
 
477
  </tr>
 
478
</table>
 
479
<table cellspacing=5 cellpadding=0 border=0>
 
480
  <tr>
 
481
    <td>
 
482
      &nbsp;
 
483
    </td>
 
484
    <td>
 
485
 
 
486
<p>
 
487
This function will move all PADDING blocks to the end on the metadata, then merge them into a single block.
 
488
<p>
 
489
<dl compact><dt><b>
 
490
Note: </b><dd>
 
491
This function does not write to the FLAC file, it only modifies the chain.</dl><dl compact><dt><b>
 
492
Warning: </b><dd>
 
493
Any iterator on the current chain will become invalid after this call. You should delete the iterator and get a new one.</dl><dl compact><dt><b>
 
494
Parameters: </b><dd>
 
495
<table border=0 cellspacing=2 cellpadding=0>
 
496
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
497
A pointer to an existing chain. </td></tr>
 
498
</table>
 
499
</dl><dl compact><dt><b>
 
500
Assertions:</b><dd>
 
501
 <div class="fragment"><pre>chain != NULL 
 
502
</pre></div> </dl>    </td>
 
503
  </tr>
 
504
</table>
 
505
<a name="a10" doxytag="metadata.h::FLAC__metadata_iterator_new"></a><p>
 
506
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
507
  <tr>
 
508
    <td class="md">
 
509
      <table cellpadding="0" cellspacing="0" border="0">
 
510
        <tr>
 
511
          <td class="md" nowrap valign="top"> <a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a>* FLAC__metadata_iterator_new </td>
 
512
          <td class="md" valign="top">(&nbsp;</td>
 
513
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
 
514
          <td class="md" valign="top">)&nbsp;</td>
 
515
          <td class="md" nowrap></td>
 
516
        </tr>
 
517
 
 
518
      </table>
 
519
    </td>
 
520
  </tr>
 
521
</table>
 
522
<table cellspacing=5 cellpadding=0 border=0>
 
523
  <tr>
 
524
    <td>
 
525
      &nbsp;
 
526
    </td>
 
527
    <td>
 
528
 
 
529
<p>
 
530
Create a new iterator instance.<dl compact><dt><b>
 
531
Return values: </b><dd>
 
532
<table border=0 cellspacing=2 cellpadding=0>
 
533
<tr><td valign=top><em>FLAC__Metadata_Iterator</em>&nbsp;</td><td>
 
534
* <code>NULL</code> if there was an error allocating memory, else the new instance. </td></tr>
 
535
</table>
 
536
</dl>    </td>
 
537
  </tr>
 
538
</table>
 
539
<a name="a11" doxytag="metadata.h::FLAC__metadata_iterator_delete"></a><p>
 
540
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
541
  <tr>
 
542
    <td class="md">
 
543
      <table cellpadding="0" cellspacing="0" border="0">
 
544
        <tr>
 
545
          <td class="md" nowrap valign="top"> void FLAC__metadata_iterator_delete </td>
 
546
          <td class="md" valign="top">(&nbsp;</td>
 
547
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
548
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>iterator</em>          </td>
 
549
          <td class="md" valign="top">)&nbsp;</td>
 
550
          <td class="md" nowrap></td>
 
551
        </tr>
 
552
 
 
553
      </table>
 
554
    </td>
 
555
  </tr>
 
556
</table>
 
557
<table cellspacing=5 cellpadding=0 border=0>
 
558
  <tr>
 
559
    <td>
 
560
      &nbsp;
 
561
    </td>
 
562
    <td>
 
563
 
 
564
<p>
 
565
Free an iterator instance. Deletes the object pointed to by <em>iterator</em>.<dl compact><dt><b>
 
566
Parameters: </b><dd>
 
567
<table border=0 cellspacing=2 cellpadding=0>
 
568
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
569
A pointer to an existing iterator. </td></tr>
 
570
</table>
 
571
</dl><dl compact><dt><b>
 
572
Assertions:</b><dd>
 
573
 <div class="fragment"><pre>iterator != NULL 
 
574
</pre></div> </dl>    </td>
 
575
  </tr>
 
576
</table>
 
577
<a name="a12" doxytag="metadata.h::FLAC__metadata_iterator_init"></a><p>
 
578
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
579
  <tr>
 
580
    <td class="md">
 
581
      <table cellpadding="0" cellspacing="0" border="0">
 
582
        <tr>
 
583
          <td class="md" nowrap valign="top"> void FLAC__metadata_iterator_init </td>
 
584
          <td class="md" valign="top">(&nbsp;</td>
 
585
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
586
          <td class="mdname" nowrap>&nbsp; <em>iterator</em>, </td>
 
587
        </tr>
 
588
        <tr>
 
589
          <td></td>
 
590
          <td></td>
 
591
          <td class="md" nowrap><a class="el" href="group__flac__metadata__level2.html#a0">FLAC__Metadata_Chain</a> *&nbsp;</td>
 
592
          <td class="mdname" nowrap>&nbsp; <em>chain</em></td>
 
593
        </tr>
 
594
        <tr>
 
595
          <td></td>
 
596
          <td class="md">)&nbsp;</td>
 
597
          <td class="md" colspan="2"></td>
 
598
        </tr>
 
599
 
 
600
      </table>
 
601
    </td>
 
602
  </tr>
 
603
</table>
 
604
<table cellspacing=5 cellpadding=0 border=0>
 
605
  <tr>
 
606
    <td>
 
607
      &nbsp;
 
608
    </td>
 
609
    <td>
 
610
 
 
611
<p>
 
612
Initialize the iterator to point to the first metadata block in the given chain.<dl compact><dt><b>
 
613
Parameters: </b><dd>
 
614
<table border=0 cellspacing=2 cellpadding=0>
 
615
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
616
A pointer to an existing iterator. </td></tr>
 
617
<tr><td valign=top><em>chain</em>&nbsp;</td><td>
 
618
A pointer to an existing and initialized (read) chain. </td></tr>
 
619
</table>
 
620
</dl><dl compact><dt><b>
 
621
Assertions:</b><dd>
 
622
 <div class="fragment"><pre>iterator != NULL 
 
623
</pre></div> <div class="fragment"><pre>chain != NULL 
 
624
</pre></div> </dl>    </td>
 
625
  </tr>
 
626
</table>
 
627
<a name="a13" doxytag="metadata.h::FLAC__metadata_iterator_next"></a><p>
 
628
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
629
  <tr>
 
630
    <td class="md">
 
631
      <table cellpadding="0" cellspacing="0" border="0">
 
632
        <tr>
 
633
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_next </td>
 
634
          <td class="md" valign="top">(&nbsp;</td>
 
635
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
636
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>iterator</em>          </td>
 
637
          <td class="md" valign="top">)&nbsp;</td>
 
638
          <td class="md" nowrap></td>
 
639
        </tr>
 
640
 
 
641
      </table>
 
642
    </td>
 
643
  </tr>
 
644
</table>
 
645
<table cellspacing=5 cellpadding=0 border=0>
 
646
  <tr>
 
647
    <td>
 
648
      &nbsp;
 
649
    </td>
 
650
    <td>
 
651
 
 
652
<p>
 
653
Moves the iterator forward one metadata block, returning <code>false</code> if already at the end.<dl compact><dt><b>
 
654
Parameters: </b><dd>
 
655
<table border=0 cellspacing=2 cellpadding=0>
 
656
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
657
A pointer to an existing initialized iterator. </td></tr>
 
658
</table>
 
659
</dl><dl compact><dt><b>
 
660
Assertions:</b><dd>
 
661
 <div class="fragment"><pre>iterator != NULL 
 
662
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
663
Return values: </b><dd>
 
664
<table border=0 cellspacing=2 cellpadding=0>
 
665
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
666
<code>false</code> if already at the last metadata block of the chain, else <code>true</code>. </td></tr>
 
667
</table>
 
668
</dl>    </td>
 
669
  </tr>
 
670
</table>
 
671
<a name="a14" doxytag="metadata.h::FLAC__metadata_iterator_prev"></a><p>
 
672
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
673
  <tr>
 
674
    <td class="md">
 
675
      <table cellpadding="0" cellspacing="0" border="0">
 
676
        <tr>
 
677
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_prev </td>
 
678
          <td class="md" valign="top">(&nbsp;</td>
 
679
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
680
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>iterator</em>          </td>
 
681
          <td class="md" valign="top">)&nbsp;</td>
 
682
          <td class="md" nowrap></td>
 
683
        </tr>
 
684
 
 
685
      </table>
 
686
    </td>
 
687
  </tr>
 
688
</table>
 
689
<table cellspacing=5 cellpadding=0 border=0>
 
690
  <tr>
 
691
    <td>
 
692
      &nbsp;
 
693
    </td>
 
694
    <td>
 
695
 
 
696
<p>
 
697
Moves the iterator backward one metadata block, returning <code>false</code> if already at the beginning.<dl compact><dt><b>
 
698
Parameters: </b><dd>
 
699
<table border=0 cellspacing=2 cellpadding=0>
 
700
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
701
A pointer to an existing initialized iterator. </td></tr>
 
702
</table>
 
703
</dl><dl compact><dt><b>
 
704
Assertions:</b><dd>
 
705
 <div class="fragment"><pre>iterator != NULL 
 
706
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
707
Return values: </b><dd>
 
708
<table border=0 cellspacing=2 cellpadding=0>
 
709
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
710
<code>false</code> if already at the first metadata block of the chain, else <code>true</code>. </td></tr>
 
711
</table>
 
712
</dl>    </td>
 
713
  </tr>
 
714
</table>
 
715
<a name="a15" doxytag="metadata.h::FLAC__metadata_iterator_get_block_type"></a><p>
 
716
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
717
  <tr>
 
718
    <td class="md">
 
719
      <table cellpadding="0" cellspacing="0" border="0">
 
720
        <tr>
 
721
          <td class="md" nowrap valign="top"> <a class="el" href="group__flac__format.html#a93">FLAC__MetadataType</a> FLAC__metadata_iterator_get_block_type </td>
 
722
          <td class="md" valign="top">(&nbsp;</td>
 
723
          <td class="md" nowrap valign="top">const <a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
724
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>iterator</em>          </td>
 
725
          <td class="md" valign="top">)&nbsp;</td>
 
726
          <td class="md" nowrap></td>
 
727
        </tr>
 
728
 
 
729
      </table>
 
730
    </td>
 
731
  </tr>
 
732
</table>
 
733
<table cellspacing=5 cellpadding=0 border=0>
 
734
  <tr>
 
735
    <td>
 
736
      &nbsp;
 
737
    </td>
 
738
    <td>
 
739
 
 
740
<p>
 
741
Get the type of the metadata block at the current position.<dl compact><dt><b>
 
742
Parameters: </b><dd>
 
743
<table border=0 cellspacing=2 cellpadding=0>
 
744
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
745
A pointer to an existing initialized iterator. </td></tr>
 
746
</table>
 
747
</dl><dl compact><dt><b>
 
748
Assertions:</b><dd>
 
749
 <div class="fragment"><pre>iterator != NULL 
 
750
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
751
Return values: </b><dd>
 
752
<table border=0 cellspacing=2 cellpadding=0>
 
753
<tr><td valign=top><em>FLAC__MetadataType</em>&nbsp;</td><td>
 
754
The type of the metadata block at the current iterator position. </td></tr>
 
755
</table>
 
756
</dl>    </td>
 
757
  </tr>
 
758
</table>
 
759
<a name="a16" doxytag="metadata.h::FLAC__metadata_iterator_get_block"></a><p>
 
760
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
761
  <tr>
 
762
    <td class="md">
 
763
      <table cellpadding="0" cellspacing="0" border="0">
 
764
        <tr>
 
765
          <td class="md" nowrap valign="top"> <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a>* FLAC__metadata_iterator_get_block </td>
 
766
          <td class="md" valign="top">(&nbsp;</td>
 
767
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
768
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>iterator</em>          </td>
 
769
          <td class="md" valign="top">)&nbsp;</td>
 
770
          <td class="md" nowrap></td>
 
771
        </tr>
 
772
 
 
773
      </table>
 
774
    </td>
 
775
  </tr>
 
776
</table>
 
777
<table cellspacing=5 cellpadding=0 border=0>
 
778
  <tr>
 
779
    <td>
 
780
      &nbsp;
 
781
    </td>
 
782
    <td>
 
783
 
 
784
<p>
 
785
Get the metadata block at the current position. You can modify the block in place but must write the chain before the changes are reflected to the FLAC file. You do not need to call <a class="el" href="group__flac__metadata__level2.html#a17">FLAC__metadata_iterator_set_block</a>() to reflect the changes; the pointer returned by <a class="el" href="group__flac__metadata__level2.html#a16">FLAC__metadata_iterator_get_block</a>() points directly into the chain.
 
786
<p>
 
787
<dl compact><dt><b>
 
788
Warning: </b><dd>
 
789
 Do not call <a class="el" href="group__flac__metadata__object.html#a2">FLAC__metadata_object_delete</a>() on the returned object; to delete a block use <a class="el" href="group__flac__metadata__level2.html#a18">FLAC__metadata_iterator_delete_block</a>().</dl><dl compact><dt><b>
 
790
Parameters: </b><dd>
 
791
<table border=0 cellspacing=2 cellpadding=0>
 
792
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
793
A pointer to an existing initialized iterator. </td></tr>
 
794
</table>
 
795
</dl><dl compact><dt><b>
 
796
Assertions:</b><dd>
 
797
 <div class="fragment"><pre>iterator != NULL 
 
798
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
799
Return values: </b><dd>
 
800
<table border=0 cellspacing=2 cellpadding=0>
 
801
<tr><td valign=top><em><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a></em>&nbsp;</td><td>
 
802
* The current metadata block. </td></tr>
 
803
</table>
 
804
</dl>    </td>
 
805
  </tr>
 
806
</table>
 
807
<a name="a17" doxytag="metadata.h::FLAC__metadata_iterator_set_block"></a><p>
 
808
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
809
  <tr>
 
810
    <td class="md">
 
811
      <table cellpadding="0" cellspacing="0" border="0">
 
812
        <tr>
 
813
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_set_block </td>
 
814
          <td class="md" valign="top">(&nbsp;</td>
 
815
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
816
          <td class="mdname" nowrap>&nbsp; <em>iterator</em>, </td>
 
817
        </tr>
 
818
        <tr>
 
819
          <td></td>
 
820
          <td></td>
 
821
          <td class="md" nowrap><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&nbsp;</td>
 
822
          <td class="mdname" nowrap>&nbsp; <em>block</em></td>
 
823
        </tr>
 
824
        <tr>
 
825
          <td></td>
 
826
          <td class="md">)&nbsp;</td>
 
827
          <td class="md" colspan="2"></td>
 
828
        </tr>
 
829
 
 
830
      </table>
 
831
    </td>
 
832
  </tr>
 
833
</table>
 
834
<table cellspacing=5 cellpadding=0 border=0>
 
835
  <tr>
 
836
    <td>
 
837
      &nbsp;
 
838
    </td>
 
839
    <td>
 
840
 
 
841
<p>
 
842
Set the metadata block at the current position, replacing the existing block. The new block passed in becomes owned by the chain and it will be deleted when the chain is deleted.<dl compact><dt><b>
 
843
Parameters: </b><dd>
 
844
<table border=0 cellspacing=2 cellpadding=0>
 
845
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
846
A pointer to an existing initialized iterator. </td></tr>
 
847
<tr><td valign=top><em>block</em>&nbsp;</td><td>
 
848
A pointer to a metadata block. </td></tr>
 
849
</table>
 
850
</dl><dl compact><dt><b>
 
851
Assertions:</b><dd>
 
852
 <div class="fragment"><pre>iterator != NULL 
 
853
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() <div class="fragment"><pre>block != NULL 
 
854
</pre></div> </dl><dl compact><dt><b>
 
855
Return values: </b><dd>
 
856
<table border=0 cellspacing=2 cellpadding=0>
 
857
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
858
<code>false</code> if the conditions in the above description are not met, or a memory allocation error occurs, otherwise <code>true</code>. </td></tr>
 
859
</table>
 
860
</dl>    </td>
 
861
  </tr>
 
862
</table>
 
863
<a name="a18" doxytag="metadata.h::FLAC__metadata_iterator_delete_block"></a><p>
 
864
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
865
  <tr>
 
866
    <td class="md">
 
867
      <table cellpadding="0" cellspacing="0" border="0">
 
868
        <tr>
 
869
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_delete_block </td>
 
870
          <td class="md" valign="top">(&nbsp;</td>
 
871
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
872
          <td class="mdname" nowrap>&nbsp; <em>iterator</em>, </td>
 
873
        </tr>
 
874
        <tr>
 
875
          <td></td>
 
876
          <td></td>
 
877
          <td class="md" nowrap>FLAC__bool&nbsp;</td>
 
878
          <td class="mdname" nowrap>&nbsp; <em>replace_with_padding</em></td>
 
879
        </tr>
 
880
        <tr>
 
881
          <td></td>
 
882
          <td class="md">)&nbsp;</td>
 
883
          <td class="md" colspan="2"></td>
 
884
        </tr>
 
885
 
 
886
      </table>
 
887
    </td>
 
888
  </tr>
 
889
</table>
 
890
<table cellspacing=5 cellpadding=0 border=0>
 
891
  <tr>
 
892
    <td>
 
893
      &nbsp;
 
894
    </td>
 
895
    <td>
 
896
 
 
897
<p>
 
898
Removes the current block from the chain. If <em>replace_with_padding</em> is <code>true</code>, the block will instead be replaced with a padding block of equal size. You can not delete the STREAMINFO block. The iterator will be left pointing to the block before the one just "deleted", even if <em>replace_with_padding</em> is <code>true</code>.<dl compact><dt><b>
 
899
Parameters: </b><dd>
 
900
<table border=0 cellspacing=2 cellpadding=0>
 
901
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
902
A pointer to an existing initialized iterator. </td></tr>
 
903
<tr><td valign=top><em>replace_with_padding</em>&nbsp;</td><td>
 
904
See above. </td></tr>
 
905
</table>
 
906
</dl><dl compact><dt><b>
 
907
Assertions:</b><dd>
 
908
 <div class="fragment"><pre>iterator != NULL 
 
909
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
910
Return values: </b><dd>
 
911
<table border=0 cellspacing=2 cellpadding=0>
 
912
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
913
<code>false</code> if the conditions in the above description are not met, otherwise <code>true</code>. </td></tr>
 
914
</table>
 
915
</dl>    </td>
 
916
  </tr>
 
917
</table>
 
918
<a name="a19" doxytag="metadata.h::FLAC__metadata_iterator_insert_block_before"></a><p>
 
919
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
920
  <tr>
 
921
    <td class="md">
 
922
      <table cellpadding="0" cellspacing="0" border="0">
 
923
        <tr>
 
924
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_insert_block_before </td>
 
925
          <td class="md" valign="top">(&nbsp;</td>
 
926
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
927
          <td class="mdname" nowrap>&nbsp; <em>iterator</em>, </td>
 
928
        </tr>
 
929
        <tr>
 
930
          <td></td>
 
931
          <td></td>
 
932
          <td class="md" nowrap><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&nbsp;</td>
 
933
          <td class="mdname" nowrap>&nbsp; <em>block</em></td>
 
934
        </tr>
 
935
        <tr>
 
936
          <td></td>
 
937
          <td class="md">)&nbsp;</td>
 
938
          <td class="md" colspan="2"></td>
 
939
        </tr>
 
940
 
 
941
      </table>
 
942
    </td>
 
943
  </tr>
 
944
</table>
 
945
<table cellspacing=5 cellpadding=0 border=0>
 
946
  <tr>
 
947
    <td>
 
948
      &nbsp;
 
949
    </td>
 
950
    <td>
 
951
 
 
952
<p>
 
953
Insert a new block before the current block. You cannot insert a block before the first STREAMINFO block. You cannot insert a STREAMINFO block as there can be only one, the one that already exists at the head when you read in a chain. The chain takes ownership of the new block and it will be deleted when the chain is deleted. The iterator will be left pointing to the new block.<dl compact><dt><b>
 
954
Parameters: </b><dd>
 
955
<table border=0 cellspacing=2 cellpadding=0>
 
956
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
957
A pointer to an existing initialized iterator. </td></tr>
 
958
<tr><td valign=top><em>block</em>&nbsp;</td><td>
 
959
A pointer to a metadata block to insert. </td></tr>
 
960
</table>
 
961
</dl><dl compact><dt><b>
 
962
Assertions:</b><dd>
 
963
 <div class="fragment"><pre>iterator != NULL 
 
964
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
965
Return values: </b><dd>
 
966
<table border=0 cellspacing=2 cellpadding=0>
 
967
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
968
<code>false</code> if the conditions in the above description are not met, or a memory allocation error occurs, otherwise <code>true</code>. </td></tr>
 
969
</table>
 
970
</dl>    </td>
 
971
  </tr>
 
972
</table>
 
973
<a name="a20" doxytag="metadata.h::FLAC__metadata_iterator_insert_block_after"></a><p>
 
974
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
975
  <tr>
 
976
    <td class="md">
 
977
      <table cellpadding="0" cellspacing="0" border="0">
 
978
        <tr>
 
979
          <td class="md" nowrap valign="top"> FLAC__bool FLAC__metadata_iterator_insert_block_after </td>
 
980
          <td class="md" valign="top">(&nbsp;</td>
 
981
          <td class="md" nowrap valign="top"><a class="el" href="group__flac__metadata__level2.html#a1">FLAC__Metadata_Iterator</a> *&nbsp;</td>
 
982
          <td class="mdname" nowrap>&nbsp; <em>iterator</em>, </td>
 
983
        </tr>
 
984
        <tr>
 
985
          <td></td>
 
986
          <td></td>
 
987
          <td class="md" nowrap><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&nbsp;</td>
 
988
          <td class="mdname" nowrap>&nbsp; <em>block</em></td>
 
989
        </tr>
 
990
        <tr>
 
991
          <td></td>
 
992
          <td class="md">)&nbsp;</td>
 
993
          <td class="md" colspan="2"></td>
 
994
        </tr>
 
995
 
 
996
      </table>
 
997
    </td>
 
998
  </tr>
 
999
</table>
 
1000
<table cellspacing=5 cellpadding=0 border=0>
 
1001
  <tr>
 
1002
    <td>
 
1003
      &nbsp;
 
1004
    </td>
 
1005
    <td>
 
1006
 
 
1007
<p>
 
1008
Insert a new block after the current block. You cannot insert a STREAMINFO block as there can be only one, the one that already exists at the head when you read in a chain. The chain takes ownership of the new block and it will be deleted when the chain is deleted. The iterator will be left pointing to the new block.<dl compact><dt><b>
 
1009
Parameters: </b><dd>
 
1010
<table border=0 cellspacing=2 cellpadding=0>
 
1011
<tr><td valign=top><em>iterator</em>&nbsp;</td><td>
 
1012
A pointer to an existing initialized iterator. </td></tr>
 
1013
<tr><td valign=top><em>block</em>&nbsp;</td><td>
 
1014
A pointer to a metadata block to insert. </td></tr>
 
1015
</table>
 
1016
</dl><dl compact><dt><b>
 
1017
Assertions:</b><dd>
 
1018
 <div class="fragment"><pre>iterator != NULL 
 
1019
</pre></div> <em>iterator</em> has been successfully initialized with <a class="el" href="group__flac__metadata__level2.html#a12">FLAC__metadata_iterator_init</a>() </dl><dl compact><dt><b>
 
1020
Return values: </b><dd>
 
1021
<table border=0 cellspacing=2 cellpadding=0>
 
1022
<tr><td valign=top><em>FLAC__bool</em>&nbsp;</td><td>
 
1023
<code>false</code> if the conditions in the above description are not met, or a memory allocation error occurs, otherwise <code>true</code>. </td></tr>
 
1024
</table>
 
1025
</dl>    </td>
 
1026
  </tr>
 
1027
</table>
 
1028
<hr><h2>Variable Documentation</h2>
 
1029
<a name="a2" doxytag="metadata.h::FLAC__Metadata_ChainStatusString"></a><p>
 
1030
<table width="100%" cellpadding="2" cellspacing="0" border="0">
 
1031
  <tr>
 
1032
    <td class="md">
 
1033
      <table cellpadding="0" cellspacing="0" border="0">
 
1034
        <tr>
 
1035
          <td class="md" nowrap valign="top"> const char* const FLAC__Metadata_ChainStatusString[]
 
1036
      </table>
 
1037
    </td>
 
1038
  </tr>
 
1039
</table>
 
1040
<table cellspacing=5 cellpadding=0 border=0>
 
1041
  <tr>
 
1042
    <td>
 
1043
      &nbsp;
 
1044
    </td>
 
1045
    <td>
 
1046
 
 
1047
<p>
 
1048
Maps a FLAC__Metadata_ChainStatus to a C string.
 
1049
<p>
 
1050
Using a FLAC__Metadata_ChainStatus as the index to this array will give the string equivalent. The contents should not be modified.     </td>
 
1051
  </tr>
 
1052
</table>
 
1053
<hr><address><small>Generated on Sat Jan 25 10:44:54 2003 for FLAC by
 
1054
<a href="http://www.doxygen.org/index.html">
 
1055
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
 
1056
width=110 height=53></a>1.2.14 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 
1057
 &copy;&nbsp;1997-2002</small></address>
 
1058
</body>
 
1059
</html>