<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>src/c_wrapper.cpp Source File</title> <link href="id3lib.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.12 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> <hr><h1>src/c_wrapper.cpp</h1><a href="c__wrapper_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// $Id: c_wrapper.cpp,v 1.17 2001/09/08 02:33:41 shadrack Exp $</font> 00002 00003 <font class="comment">// id3lib: a C++ library for creating and manipulating id3v1/v2 tags</font> 00004 <font class="comment">// Copyright 1999, 2000 Scott Thomas Haug</font> 00005 00006 <font class="comment">// This library is free software; you can redistribute it and/or modify it</font> 00007 <font class="comment">// under the terms of the GNU Library General Public License as published by</font> 00008 <font class="comment">// the Free Software Foundation; either version 2 of the License, or (at your</font> 00009 <font class="comment">// option) any later version.</font> 00010 <font class="comment">//</font> 00011 <font class="comment">// This library is distributed in the hope that it will be useful, but WITHOUT</font> 00012 <font class="comment">// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</font> 00013 <font class="comment">// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public</font> 00014 <font class="comment">// License for more details.</font> 00015 <font class="comment">//</font> 00016 <font class="comment">// You should have received a copy of the GNU Library General Public License</font> 00017 <font class="comment">// along with this library; if not, write to the Free Software Foundation,</font> 00018 <font class="comment">// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</font> 00019 00020 <font class="comment">// The id3lib authors encourage improvements and optimisations to be sent to</font> 00021 <font class="comment">// the id3lib coordinator. Please see the README file for details on where to</font> 00022 <font class="comment">// send such submissions. See the AUTHORS file for a list of people who have</font> 00023 <font class="comment">// contributed to id3lib. See the ChangeLog file for a list of changes to</font> 00024 <font class="comment">// id3lib. These files are distributed with id3lib at</font> 00025 <font class="comment">// http://download.sourceforge.net/id3lib/</font> 00026 00027 <font class="preprocessor">#include <string.h></font> 00028 <font class="preprocessor">#include "id3.h"</font> 00029 <font class="preprocessor">#include "<a class="code" href="tag_8h.html">tag.h</a>"</font> 00030 <font class="preprocessor">#include "<a class="code" href="frame_8h.html">frame.h</a>"</font> 00031 <font class="preprocessor">#include "<a class="code" href="field_8h.html">field.h</a>"</font> 00032 00033 <font class="preprocessor">#if defined HAVE_CONFIG_H</font> 00034 <font class="preprocessor"></font><font class="preprocessor">#include <config.h></font> 00035 <font class="preprocessor">#endif</font> 00036 <font class="preprocessor"></font> 00037 <font class="preprocessor">#ifdef __cplusplus</font> 00038 <font class="preprocessor"></font><font class="keyword">extern</font> <font class="stringliteral">"C"</font> 00039 { 00040 <font class="preprocessor">#endif </font><font class="comment">/* __cplusplus */</font> 00041 00042 <font class="comment">// tag wrappers</font> 00043 <a name="l00044"></a><a class="code" href="c__wrapper_8cpp.html#a0">00044</a> <font class="preprocessor">#define ID3_CATCH(code) try { code; } catch (...) { }</font> 00045 <font class="preprocessor"></font> 00046 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Tag* <a name="l00047"></a><a class="code" href="c__wrapper_8cpp.html#a1">00047</a> <a class="code" href="c__wrapper_8cpp.html#a1">ID3Tag_New</a>(<font class="keywordtype">void</font>) 00048 { 00049 <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>* tag = <a class="code" href="globals_8h.html#a24">NULL</a>; 00050 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(tag = <font class="keyword">new</font> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>); 00051 <font class="keywordflow">return</font> reinterpret_cast<ID3Tag *>(tag); 00052 } 00053 00054 00055 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00056"></a><a class="code" href="c__wrapper_8cpp.html#a2">00056</a> <a class="code" href="c__wrapper_8cpp.html#a2">ID3Tag_Delete</a>(ID3Tag *tag) 00057 { 00058 <font class="keywordflow">if</font> (tag) 00059 { 00060 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(<font class="keyword">delete</font> reinterpret_cast<ID3_Tag*>(tag)); 00061 } 00062 } 00063 00064 00065 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00066"></a><a class="code" href="c__wrapper_8cpp.html#a3">00066</a> <a class="code" href="c__wrapper_8cpp.html#a3">ID3Tag_Clear</a>(ID3Tag *tag) 00067 { 00068 <font class="keywordflow">if</font> (tag) 00069 { 00070 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag*>(tag)->Clear()); 00071 } 00072 } 00073 00074 00075 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">bool</font> <a name="l00076"></a><a class="code" href="c__wrapper_8cpp.html#a4">00076</a> <a class="code" href="c__wrapper_8cpp.html#a4">ID3Tag_HasChanged</a>(<font class="keyword">const</font> ID3Tag *tag) 00077 { 00078 <font class="keywordtype">bool</font> changed = <font class="keyword">false</font>; 00079 00080 <font class="keywordflow">if</font> (tag) 00081 { 00082 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(changed = reinterpret_cast<const ID3_Tag * >(tag)->HasChanged()); 00083 } 00084 00085 <font class="keywordflow">return</font> changed; 00086 } 00087 00088 00089 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00090"></a><a class="code" href="c__wrapper_8cpp.html#a5">00090</a> <a class="code" href="c__wrapper_8cpp.html#a5">ID3Tag_SetUnsync</a>(ID3Tag *tag, <font class="keywordtype">bool</font> unsync) 00091 { 00092 <font class="keywordflow">if</font> (tag) 00093 { 00094 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->SetUnsync(unsync)); 00095 } 00096 } 00097 00098 00099 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00100"></a><a class="code" href="c__wrapper_8cpp.html#a6">00100</a> <a class="code" href="c__wrapper_8cpp.html#a6">ID3Tag_SetExtendedHeader</a>(ID3Tag *tag, <font class="keywordtype">bool</font> ext) 00101 { 00102 <font class="keywordflow">if</font> (tag) 00103 { 00104 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->SetExtendedHeader(ext)); 00105 } 00106 } 00107 00108 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00109"></a><a class="code" href="c__wrapper_8cpp.html#a7">00109</a> <a class="code" href="c__wrapper_8cpp.html#a7">ID3Tag_SetPadding</a>(ID3Tag *tag, <font class="keywordtype">bool</font> pad) 00110 { 00111 <font class="keywordflow">if</font> (tag) 00112 { 00113 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->SetPadding(pad)); 00114 } 00115 } 00116 00117 00118 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00119"></a><a class="code" href="c__wrapper_8cpp.html#a8">00119</a> <a class="code" href="c__wrapper_8cpp.html#a8">ID3Tag_AddFrame</a>(ID3Tag *tag, <font class="keyword">const</font> ID3Frame *frame) 00120 { 00121 <font class="keywordflow">if</font> (tag) 00122 { 00123 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->AddFrame(reinterpret_cast<const ID3_Frame *>(frame))); 00124 } 00125 } 00126 00127 00128 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00129"></a><a class="code" href="c__wrapper_8cpp.html#a9">00129</a> <a class="code" href="c__wrapper_8cpp.html#a9">ID3Tag_AttachFrame</a>(ID3Tag *tag, ID3Frame *frame) 00130 { 00131 <font class="keywordflow">if</font> (tag) 00132 { 00133 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->AttachFrame(reinterpret_cast<ID3_Frame *>(frame))); 00134 } 00135 } 00136 00137 00138 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00139"></a><a class="code" href="c__wrapper_8cpp.html#a10">00139</a> <a class="code" href="c__wrapper_8cpp.html#a10">ID3Tag_AddFrames</a>(ID3Tag *tag, <font class="keyword">const</font> ID3Frame *frames, size_t num) 00140 { 00141 <font class="keywordflow">if</font> (tag) 00142 { 00143 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->AddFrames(reinterpret_cast<const ID3_Frame *>(frames), num)); 00144 } 00145 } 00146 00147 00148 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00149"></a><a class="code" href="c__wrapper_8cpp.html#a11">00149</a> <a class="code" href="c__wrapper_8cpp.html#a11">ID3Tag_RemoveFrame</a>(ID3Tag *tag, <font class="keyword">const</font> ID3Frame *frame) 00150 { 00151 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* rem_frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00152 <font class="keywordflow">if</font> (tag) 00153 { 00154 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(rem_frame = reinterpret_cast<ID3_Tag *>(tag)->RemoveFrame(reinterpret_cast<const ID3_Frame *>(frame))); 00155 } 00156 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame*>(rem_frame); 00157 } 00158 00159 00160 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a class="code" href="globals_8h.html#a223">ID3_Err</a> <a name="l00161"></a><a class="code" href="c__wrapper_8cpp.html#a12">00161</a> <a class="code" href="c__wrapper_8cpp.html#a12">ID3Tag_Parse</a>(ID3Tag *tag, <font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a> header[ <a class="code" href="globals_8h.html#a5">ID3_TAGHEADERSIZE</a> ], 00162 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a> *buffer) 00163 { 00164 size_t size = 0; 00165 <font class="keywordflow">if</font> (tag) 00166 { 00167 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(size = reinterpret_cast<ID3_Tag *>(tag)->Parse(header, buffer)); 00168 } 00169 <font class="keywordflow">return</font> <a class="code" href="globals_8h.html#a223a191">ID3E_NoError</a>; 00170 } 00171 00172 00173 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00174"></a><a class="code" href="c__wrapper_8cpp.html#a13">00174</a> <a class="code" href="c__wrapper_8cpp.html#a13">ID3Tag_Link</a>(ID3Tag *tag, <font class="keyword">const</font> <font class="keywordtype">char</font> *fileName) 00175 { 00176 size_t offset = 0; 00177 <font class="keywordflow">if</font> (tag) 00178 { 00179 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(offset = reinterpret_cast<ID3_Tag *>(tag)->Link(fileName)); 00180 } 00181 <font class="keywordflow">return</font> offset; 00182 } 00183 00184 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00185"></a><a class="code" href="c__wrapper_8cpp.html#a14">00185</a> <a class="code" href="c__wrapper_8cpp.html#a14">ID3Tag_LinkWithFlags</a>(ID3Tag *tag, <font class="keyword">const</font> <font class="keywordtype">char</font> *fileName, <a class="code" href="globals_8h.html#a40">flags_t</a> flags) 00186 { 00187 size_t offset = 0; 00188 <font class="keywordflow">if</font> (tag) 00189 { 00190 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(offset = reinterpret_cast<ID3_Tag *>(tag)->Link(fileName,flags)); 00191 } 00192 <font class="keywordflow">return</font> offset; 00193 } 00194 00195 00196 00197 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a class="code" href="globals_8h.html#a223">ID3_Err</a> <a name="l00198"></a><a class="code" href="c__wrapper_8cpp.html#a15">00198</a> <a class="code" href="c__wrapper_8cpp.html#a15">ID3Tag_Update</a>(ID3Tag *tag) 00199 { 00200 <a class="code" href="globals_8h.html#a40">flags_t</a> flags = 0; 00201 <font class="keywordflow">if</font> (tag) 00202 { 00203 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(flags = reinterpret_cast<ID3_Tag *>(tag)->Update()); 00204 } 00205 <font class="keywordflow">return</font> <a class="code" href="globals_8h.html#a223a191">ID3E_NoError</a>; 00206 } 00207 00208 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a class="code" href="globals_8h.html#a223">ID3_Err</a> <a name="l00209"></a><a class="code" href="c__wrapper_8cpp.html#a16">00209</a> <a class="code" href="c__wrapper_8cpp.html#a16">ID3Tag_UpdateByTagType</a>(ID3Tag *tag, <a class="code" href="globals_8h.html#a40">flags_t</a> tag_type) 00210 { 00211 <a class="code" href="globals_8h.html#a40">flags_t</a> flags = 0; 00212 <font class="keywordflow">if</font> (tag) 00213 { 00214 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(flags = reinterpret_cast<ID3_Tag *>(tag)->Update(tag_type)); 00215 } 00216 <font class="keywordflow">return</font> <a class="code" href="globals_8h.html#a223a191">ID3E_NoError</a>; 00217 } 00218 00219 00220 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a class="code" href="globals_8h.html#a223">ID3_Err</a> <a name="l00221"></a><a class="code" href="c__wrapper_8cpp.html#a17">00221</a> <a class="code" href="c__wrapper_8cpp.html#a17">ID3Tag_Strip</a>(ID3Tag *tag, <a class="code" href="globals_8h.html#a40">flags_t</a> ulTagFlags) 00222 { 00223 <font class="keywordflow">if</font> (tag) 00224 { 00225 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Tag *>(tag)->Strip(ulTagFlags)); 00226 } 00227 <font class="keywordflow">return</font> <a class="code" href="globals_8h.html#a223a191">ID3E_NoError</a>; 00228 } 00229 00230 00231 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00232"></a><a class="code" href="c__wrapper_8cpp.html#a18">00232</a> <a class="code" href="c__wrapper_8cpp.html#a18">ID3Tag_FindFrameWithID</a>(<font class="keyword">const</font> ID3Tag *tag, <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00233 { 00234 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00235 00236 <font class="keywordflow">if</font> (tag) 00237 { 00238 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id)); 00239 } 00240 00241 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00242 } 00243 00244 00245 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00246"></a><a class="code" href="c__wrapper_8cpp.html#a19">00246</a> <a class="code" href="c__wrapper_8cpp.html#a19">ID3Tag_FindFrameWithINT</a>(<font class="keyword">const</font> ID3Tag *tag, <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, 00247 <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fld, <a class="code" href="sized__types_8h.html#a4">uint32</a> data) 00248 { 00249 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00250 00251 <font class="keywordflow">if</font> (tag) 00252 { 00253 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data)); 00254 } 00255 00256 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00257 } 00258 00259 00260 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00261"></a><a class="code" href="c__wrapper_8cpp.html#a20">00261</a> <a class="code" href="c__wrapper_8cpp.html#a20">ID3Tag_FindFrameWithASCII</a>(<font class="keyword">const</font> ID3Tag *tag, <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, 00262 <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fld, <font class="keyword">const</font> <font class="keywordtype">char</font> *data) 00263 { 00264 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00265 00266 <font class="keywordflow">if</font> (tag) 00267 { 00268 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data)); 00269 } 00270 00271 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00272 } 00273 00274 00275 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00276"></a><a class="code" href="c__wrapper_8cpp.html#a21">00276</a> <a class="code" href="c__wrapper_8cpp.html#a21">ID3Tag_FindFrameWithUNICODE</a>(<font class="keyword">const</font> ID3Tag *tag, <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, 00277 <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fld, <font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a> *data) 00278 { 00279 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00280 00281 <font class="keywordflow">if</font> (tag) 00282 { 00283 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data)); 00284 } 00285 00286 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00287 } 00288 00289 00290 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00291"></a><a class="code" href="c__wrapper_8cpp.html#a22">00291</a> <a class="code" href="c__wrapper_8cpp.html#a22">ID3Tag_NumFrames</a>(<font class="keyword">const</font> ID3Tag *tag) 00292 { 00293 size_t num = 0; 00294 00295 <font class="keywordflow">if</font> (tag) 00296 { 00297 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(num = reinterpret_cast<const ID3_Tag *>(tag)->NumFrames()); 00298 } 00299 00300 <font class="keywordflow">return</font> num; 00301 } 00302 00303 00304 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">bool</font> <a name="l00305"></a><a class="code" href="c__wrapper_8cpp.html#a23">00305</a> <a class="code" href="c__wrapper_8cpp.html#a23">ID3Tag_HasTagType</a>(<font class="keyword">const</font> ID3Tag *tag, <a class="code" href="globals_8h.html#a217">ID3_TagType</a> tt) 00306 { 00307 <font class="keywordtype">bool</font> has_tt = <font class="keyword">false</font>; 00308 00309 <font class="keywordflow">if</font> (tag) 00310 { 00311 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(has_tt = reinterpret_cast<const ID3_Tag *>(tag)->HasTagType(tt)); 00312 } 00313 00314 <font class="keywordflow">return</font> has_tt; 00315 } 00316 00317 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3TagIterator* <a name="l00318"></a><a class="code" href="c__wrapper_8cpp.html#a24">00318</a> <a class="code" href="c__wrapper_8cpp.html#a24">ID3Tag_CreateIterator</a>(ID3Tag* tag) 00319 { 00320 <a class="code" href="class_i_d3___tag_1_1_iterator.html">ID3_Tag::Iterator</a>* iter = <a class="code" href="globals_8h.html#a24">NULL</a>; 00321 00322 <font class="keywordflow">if</font> (tag) 00323 { 00324 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(iter = reinterpret_cast<ID3_Tag*>(tag)->CreateIterator()); 00325 } 00326 00327 <font class="keywordflow">return</font> reinterpret_cast<ID3TagIterator*>(iter); 00328 } 00329 00330 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3TagConstIterator* <a name="l00331"></a><a class="code" href="c__wrapper_8cpp.html#a25">00331</a> <a class="code" href="c__wrapper_8cpp.html#a25">ID3Tag_CreateConstIterator</a>(<font class="keyword">const</font> ID3Tag* tag) 00332 { 00333 <a class="code" href="class_i_d3___tag_1_1_const_iterator.html">ID3_Tag::ConstIterator</a>* iter = <a class="code" href="globals_8h.html#a24">NULL</a>; 00334 00335 <font class="keywordflow">if</font> (tag) 00336 { 00337 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(iter = reinterpret_cast<const ID3_Tag*>(tag)->CreateIterator()); 00338 } 00339 00340 <font class="keywordflow">return</font> reinterpret_cast<ID3TagConstIterator*>(iter); 00341 } 00342 00343 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00344"></a><a class="code" href="c__wrapper_8cpp.html#a26">00344</a> <a class="code" href="c__wrapper_8cpp.html#a26">ID3TagIterator_Delete</a>(ID3TagIterator *iter) 00345 { 00346 <font class="keywordflow">if</font> (iter) 00347 { 00348 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(<font class="keyword">delete</font> reinterpret_cast<ID3_Tag::Iterator*>(iter)); 00349 } 00350 } 00351 00352 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00353"></a><a class="code" href="c__wrapper_8cpp.html#a27">00353</a> <a class="code" href="c__wrapper_8cpp.html#a27">ID3TagIterator_GetNext</a>(ID3TagIterator *iter) 00354 { 00355 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00356 <font class="keywordflow">if</font> (iter) 00357 { 00358 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<ID3_Tag::Iterator*>(iter)->GetNext()); 00359 } 00360 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame*>(frame); 00361 } 00362 00363 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00364"></a><a class="code" href="c__wrapper_8cpp.html#a28">00364</a> <a class="code" href="c__wrapper_8cpp.html#a28">ID3TagConstIterator_Delete</a>(ID3TagConstIterator *iter) 00365 { 00366 <font class="keywordflow">if</font> (iter) 00367 { 00368 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(<font class="keyword">delete</font> reinterpret_cast<ID3_Tag::ConstIterator*>(iter)); 00369 } 00370 } 00371 00372 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keyword">const</font> ID3Frame* <a name="l00373"></a><a class="code" href="c__wrapper_8cpp.html#a29">00373</a> <a class="code" href="c__wrapper_8cpp.html#a29">ID3TagConstIterator_GetNext</a>(ID3TagConstIterator *iter) 00374 { 00375 <font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00376 <font class="keywordflow">if</font> (iter) 00377 { 00378 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = reinterpret_cast<ID3_Tag::ConstIterator*>(iter)->GetNext()); 00379 } 00380 <font class="keywordflow">return</font> reinterpret_cast<const ID3Frame*>(frame); 00381 } 00382 00383 <font class="comment">// frame wrappers</font> 00384 00385 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00386"></a><a class="code" href="c__wrapper_8cpp.html#a30">00386</a> <a class="code" href="c__wrapper_8cpp.html#a30">ID3Frame_New</a>(<font class="keywordtype">void</font>) 00387 { 00388 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00389 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = <font class="keyword">new</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>); 00390 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00391 } 00392 00393 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Frame* <a name="l00394"></a><a class="code" href="c__wrapper_8cpp.html#a31">00394</a> <a class="code" href="c__wrapper_8cpp.html#a31">ID3Frame_NewID</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00395 { 00396 <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame = <a class="code" href="globals_8h.html#a24">NULL</a>; 00397 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(frame = <font class="keyword">new</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>(id)); 00398 <font class="keywordflow">return</font> reinterpret_cast<ID3Frame *>(frame); 00399 } 00400 00401 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00402"></a><a class="code" href="c__wrapper_8cpp.html#a32">00402</a> <a class="code" href="c__wrapper_8cpp.html#a32">ID3Frame_Delete</a>(ID3Frame *frame) 00403 { 00404 <font class="keywordflow">if</font> (frame) 00405 { 00406 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(<font class="keyword">delete</font> reinterpret_cast<ID3_Frame *>(frame)); 00407 } 00408 } 00409 00410 00411 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00412"></a><a class="code" href="c__wrapper_8cpp.html#a33">00412</a> <a class="code" href="c__wrapper_8cpp.html#a33">ID3Frame_Clear</a>(ID3Frame *frame) 00413 { 00414 <font class="keywordflow">if</font> (frame) 00415 { 00416 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Frame *>(frame)->Clear()); 00417 } 00418 } 00419 00420 00421 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00422"></a><a class="code" href="c__wrapper_8cpp.html#a34">00422</a> <a class="code" href="c__wrapper_8cpp.html#a34">ID3Frame_SetID</a>(ID3Frame *frame, <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00423 { 00424 <font class="keywordflow">if</font> (frame) 00425 { 00426 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Frame *>(frame)->SetID(id)); 00427 } 00428 } 00429 00430 00431 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a name="l00432"></a><a class="code" href="c__wrapper_8cpp.html#a35">00432</a> <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> <a class="code" href="c__wrapper_8cpp.html#a35">ID3Frame_GetID</a>(<font class="keyword">const</font> ID3Frame *frame) 00433 { 00434 <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id = <a class="code" href="globals_8h.html#a219a95">ID3FID_NOFRAME</a>; 00435 00436 <font class="keywordflow">if</font> (frame) 00437 { 00438 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(id = reinterpret_cast<const ID3_Frame *>(frame)->GetID()); 00439 } 00440 00441 <font class="keywordflow">return</font> id; 00442 } 00443 00444 00445 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> ID3Field* <a name="l00446"></a><a class="code" href="c__wrapper_8cpp.html#a36">00446</a> <a class="code" href="c__wrapper_8cpp.html#a36">ID3Frame_GetField</a>(<font class="keyword">const</font> ID3Frame *frame, <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> name) 00447 { 00448 <a class="code" href="class_i_d3___field.html">ID3_Field</a> *field = <a class="code" href="globals_8h.html#a24">NULL</a>; 00449 00450 <font class="keywordflow">if</font> (frame) 00451 { 00452 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(field = reinterpret_cast<const ID3_Frame *>(frame)->GetField(name)); 00453 } 00454 00455 <font class="keywordflow">return</font> reinterpret_cast<ID3Field *>(field); 00456 } 00457 00458 00459 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00460"></a><a class="code" href="c__wrapper_8cpp.html#a37">00460</a> <a class="code" href="c__wrapper_8cpp.html#a37">ID3Frame_SetCompression</a>(ID3Frame *frame, <font class="keywordtype">bool</font> comp) 00461 { 00462 <font class="keywordflow">if</font> (frame) 00463 { 00464 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Frame *>(frame)->SetCompression(comp)); 00465 } 00466 } 00467 00468 00469 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">bool</font> <a name="l00470"></a><a class="code" href="c__wrapper_8cpp.html#a38">00470</a> <a class="code" href="c__wrapper_8cpp.html#a38">ID3Frame_GetCompression</a>(<font class="keyword">const</font> ID3Frame *frame) 00471 { 00472 <font class="keywordtype">bool</font> compressed = <font class="keyword">false</font>; 00473 <font class="keywordflow">if</font> (frame) 00474 { 00475 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(compressed = reinterpret_cast<const ID3_Frame *>(frame)->GetCompression()); 00476 } 00477 <font class="keywordflow">return</font> compressed; 00478 } 00479 00480 00481 <font class="comment">// field wrappers</font> 00482 00483 00484 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00485"></a><a class="code" href="c__wrapper_8cpp.html#a39">00485</a> <a class="code" href="c__wrapper_8cpp.html#a39">ID3Field_Clear</a>(ID3Field *field) 00486 { 00487 <font class="keywordflow">if</font> (field) 00488 { 00489 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Clear()); 00490 } 00491 } 00492 00493 00494 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00495"></a><a class="code" href="c__wrapper_8cpp.html#a40">00495</a> <a class="code" href="c__wrapper_8cpp.html#a40">ID3Field_Size</a>(<font class="keyword">const</font> ID3Field *field) 00496 { 00497 size_t size = 0; 00498 00499 <font class="keywordflow">if</font> (field) 00500 { 00501 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(size = reinterpret_cast<const ID3_Field *>(field)->Size()); 00502 } 00503 00504 <font class="keywordflow">return</font> size; 00505 } 00506 00507 00508 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00509"></a><a class="code" href="c__wrapper_8cpp.html#a41">00509</a> <a class="code" href="c__wrapper_8cpp.html#a41">ID3Field_GetNumTextItems</a>(<font class="keyword">const</font> ID3Field *field) 00510 { 00511 size_t items = 0; 00512 00513 <font class="keywordflow">if</font> (field) 00514 { 00515 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(items = reinterpret_cast<const ID3_Field *>(field)->GetNumTextItems()); 00516 } 00517 00518 <font class="keywordflow">return</font> items; 00519 } 00520 00521 00522 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00523"></a><a class="code" href="c__wrapper_8cpp.html#a42">00523</a> <a class="code" href="c__wrapper_8cpp.html#a42">ID3Field_SetINT</a>(ID3Field *field, <a class="code" href="sized__types_8h.html#a4">uint32</a> data) 00524 { 00525 <font class="keywordflow">if</font> (field) 00526 { 00527 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Set(data)); 00528 } 00529 } 00530 00531 00532 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <a class="code" href="sized__types_8h.html#a4">uint32</a> <a name="l00533"></a><a class="code" href="c__wrapper_8cpp.html#a43">00533</a> <a class="code" href="c__wrapper_8cpp.html#a43">ID3Field_GetINT</a>(<font class="keyword">const</font> ID3Field *field) 00534 { 00535 <a class="code" href="sized__types_8h.html#a4">uint32</a> value = 0; 00536 00537 <font class="keywordflow">if</font> (field) 00538 { 00539 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(value = reinterpret_cast<const ID3_Field *>(field)->Get()); 00540 } 00541 00542 <font class="keywordflow">return</font> value; 00543 } 00544 00545 00546 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00547"></a><a class="code" href="c__wrapper_8cpp.html#a44">00547</a> <a class="code" href="c__wrapper_8cpp.html#a44">ID3Field_SetUNICODE</a>(ID3Field *field, <font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a> *string) 00548 { 00549 <font class="keywordflow">if</font> (field) 00550 { 00551 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Set(string)); 00552 } 00553 } 00554 00555 00556 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00557"></a><a class="code" href="c__wrapper_8cpp.html#a45">00557</a> <a class="code" href="c__wrapper_8cpp.html#a45">ID3Field_GetUNICODE</a>(<font class="keyword">const</font> ID3Field *field, <a class="code" href="globals_8h.html#a39">unicode_t</a> *buffer, size_t maxChars) 00558 { 00559 size_t numChars = 0; 00560 00561 <font class="keywordflow">if</font> (field) 00562 { 00563 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars)); 00564 } 00565 00566 <font class="keywordflow">return</font> numChars; 00567 } 00568 00569 00570 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00571"></a><a class="code" href="c__wrapper_8cpp.html#a46">00571</a> <a class="code" href="c__wrapper_8cpp.html#a46">ID3Field_GetUNICODEItem</a>(<font class="keyword">const</font> ID3Field *field, <a class="code" href="globals_8h.html#a39">unicode_t</a> *buffer, 00572 size_t maxChars, <a class="code" href="globals_8h.html#a7">index_t</a> itemNum) 00573 { 00574 size_t numChars = 0; 00575 00576 <font class="keywordflow">if</font> (field) 00577 { 00578 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars, itemNum)); 00579 } 00580 00581 <font class="keywordflow">return</font> numChars; 00582 } 00583 00584 00585 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00586"></a><a class="code" href="c__wrapper_8cpp.html#a47">00586</a> <a class="code" href="c__wrapper_8cpp.html#a47">ID3Field_AddUNICODE</a>(ID3Field *field, <font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a> *string) 00587 { 00588 <font class="keywordflow">if</font> (field) 00589 { 00590 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Add(string)); 00591 } 00592 } 00593 00594 00595 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00596"></a><a class="code" href="c__wrapper_8cpp.html#a48">00596</a> <a class="code" href="c__wrapper_8cpp.html#a48">ID3Field_SetASCII</a>(ID3Field *field, <font class="keyword">const</font> <font class="keywordtype">char</font> *string) 00597 { 00598 <font class="keywordflow">if</font> (field) 00599 { 00600 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Set(string)); 00601 } 00602 } 00603 00604 00605 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00606"></a><a class="code" href="c__wrapper_8cpp.html#a49">00606</a> <a class="code" href="c__wrapper_8cpp.html#a49">ID3Field_GetASCII</a>(<font class="keyword">const</font> ID3Field *field, <font class="keywordtype">char</font> *buffer, size_t maxChars) 00607 { 00608 size_t numChars = 0; 00609 00610 <font class="keywordflow">if</font> (field) 00611 { 00612 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars)); 00613 } 00614 00615 <font class="keywordflow">return</font> numChars; 00616 } 00617 00618 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> size_t <a name="l00619"></a><a class="code" href="c__wrapper_8cpp.html#a50">00619</a> <a class="code" href="c__wrapper_8cpp.html#a50">ID3Field_GetASCIIItem</a>(<font class="keyword">const</font> ID3Field *field, <font class="keywordtype">char</font> *buffer, 00620 size_t maxChars, <a class="code" href="globals_8h.html#a7">index_t</a> itemNum) 00621 { 00622 size_t numChars = 0; 00623 00624 <font class="keywordflow">if</font> (field) 00625 { 00626 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars, itemNum)); 00627 } 00628 00629 <font class="keywordflow">return</font> numChars; 00630 } 00631 00632 00633 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00634"></a><a class="code" href="c__wrapper_8cpp.html#a51">00634</a> <a class="code" href="c__wrapper_8cpp.html#a51">ID3Field_AddASCII</a>(ID3Field *field, <font class="keyword">const</font> <font class="keywordtype">char</font> *string) 00635 { 00636 <font class="keywordflow">if</font> (field) 00637 { 00638 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Add(string)); 00639 } 00640 } 00641 00642 00643 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00644"></a><a class="code" href="c__wrapper_8cpp.html#a52">00644</a> <a class="code" href="c__wrapper_8cpp.html#a52">ID3Field_SetBINARY</a>(ID3Field *field, <font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a> *data, size_t size) 00645 { 00646 <font class="keywordflow">if</font> (field) 00647 { 00648 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->Set(data, size)); 00649 } 00650 } 00651 00652 00653 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00654"></a><a class="code" href="c__wrapper_8cpp.html#a53">00654</a> <a class="code" href="c__wrapper_8cpp.html#a53">ID3Field_GetBINARY</a>(<font class="keyword">const</font> ID3Field *field, <a class="code" href="globals_8h.html#a33">uchar</a> *buffer, size_t buffLength) 00655 { 00656 <font class="keywordflow">if</font> (field) 00657 { 00658 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<const ID3_Field *>(field)->Get(buffer, buffLength)); 00659 } 00660 } 00661 00662 00663 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00664"></a><a class="code" href="c__wrapper_8cpp.html#a54">00664</a> <a class="code" href="c__wrapper_8cpp.html#a54">ID3Field_FromFile</a>(ID3Field *field, <font class="keyword">const</font> <font class="keywordtype">char</font> *fileName) 00665 { 00666 <font class="keywordflow">if</font> (field) 00667 { 00668 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<ID3_Field *>(field)->FromFile(fileName)); 00669 } 00670 } 00671 00672 00673 <a class="code" href="globals_8h.html#a0">ID3_C_EXPORT</a> <font class="keywordtype">void</font> <a name="l00674"></a><a class="code" href="c__wrapper_8cpp.html#a55">00674</a> <a class="code" href="c__wrapper_8cpp.html#a55">ID3Field_ToFile</a>(<font class="keyword">const</font> ID3Field *field, <font class="keyword">const</font> <font class="keywordtype">char</font> *fileName) 00675 { 00676 <font class="keywordflow">if</font> (field) 00677 { 00678 <a class="code" href="c__wrapper_8cpp.html#a0">ID3_CATCH</a>(reinterpret_cast<const ID3_Field *>(field)->ToFile(fileName)); 00679 } 00680 } 00681 00682 <font class="preprocessor">#ifdef __cplusplus</font> 00683 <font class="preprocessor"></font>} 00684 <font class="preprocessor">#endif </font><font class="comment">/* __cplusplus */</font> </pre></div><hr><address><small>Generated on Thu Jan 3 07:35:55 2002 for id3lib by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.gif" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.12 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2001</small></address> </body> </html>