<!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/frame.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/frame.cpp</h1><a href="frame_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// $Id: frame.cpp,v 1.32 2000/10/24 07:00:08 eldamitri 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">#if defined HAVE_CONFIG_H</font> 00028 <font class="preprocessor"></font><font class="preprocessor">#include <config.h></font> 00029 <font class="preprocessor">#endif</font> 00030 <font class="preprocessor"></font> 00031 <font class="preprocessor">#include "<a class="code" href="frame_8h.html">frame.h</a>"</font> 00032 <font class="preprocessor">#include "<a class="code" href="readers_8h.html">readers.h</a>"</font> 00033 <font class="preprocessor">#include "<a class="code" href="frame__impl_8h.html">frame_impl.h</a>"</font> 00034 <a name="l00061"></a><a class="code" href="class_i_d3___frame.html#a0">00061</a> <a class="code" href="class_i_d3___frame.html#a0">ID3_Frame::ID3_Frame</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00062 : _impl(new <a class="code" href="class_i_d3___frame_impl.html">ID3_FrameImpl</a>(id)) 00063 { 00064 } 00065 <a name="l00066"></a><a class="code" href="class_i_d3___frame.html#a1">00066</a> <a class="code" href="class_i_d3___frame.html#a0">ID3_Frame::ID3_Frame</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>& frame) 00067 : _impl(new <a class="code" href="class_i_d3___frame_impl.html">ID3_FrameImpl</a>(frame)) 00068 { 00069 } 00070 <a name="l00071"></a><a class="code" href="class_i_d3___frame.html#a2">00071</a> <a class="code" href="class_i_d3___frame.html#a2">ID3_Frame::~ID3_Frame</a>() 00072 { 00073 <font class="keyword">delete</font> _impl; 00074 } 00075 <a name="l00081"></a><a class="code" href="class_i_d3___frame.html#a3">00081</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___frame.html#a3">ID3_Frame::Clear</a>() 00082 { 00083 _impl-><a class="code" href="class_i_d3___frame_impl.html#a4">Clear</a>(); 00084 } 00085 <a name="l00093"></a><a class="code" href="class_i_d3___frame.html#a5">00093</a> <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> <a class="code" href="class_i_d3___frame.html#a5">ID3_Frame::GetID</a>()<font class="keyword"> const</font> 00094 <font class="keyword"></font>{ 00095 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a6">GetID</a>(); 00096 } 00097 <a name="l00115"></a><a class="code" href="class_i_d3___frame.html#a4">00115</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a4">ID3_Frame::SetID</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00116 { 00117 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a5">SetID</a>(id); 00118 } 00119 <a name="l00120"></a><a class="code" href="class_i_d3___frame.html#a16">00120</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a16">ID3_Frame::SetSpec</a>(<a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> spec) 00121 { 00122 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a17">SetSpec</a>(spec); 00123 } 00124 <a name="l00125"></a><a class="code" href="class_i_d3___frame.html#a17">00125</a> <a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> <a class="code" href="class_i_d3___frame.html#a17">ID3_Frame::GetSpec</a>()<font class="keyword"> const</font> 00126 <font class="keyword"></font>{ 00127 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a18">GetSpec</a>(); 00128 } 00129 <a name="l00141"></a><a class="code" href="class_i_d3___frame.html#a27">00141</a> <a class="code" href="class_i_d3___field.html">ID3_Field</a>& <a class="code" href="class_i_d3___frame.html#a27">ID3_Frame::Field</a>(<a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fieldName)<font class="keyword"> const</font> 00142 <font class="keyword"></font>{ 00143 <font class="keywordflow">return</font> *this-><a class="code" href="class_i_d3___frame.html#a6">GetField</a>(fieldName); 00144 } 00145 <a name="l00146"></a><a class="code" href="class_i_d3___frame.html#a6">00146</a> <a class="code" href="class_i_d3___field.html">ID3_Field</a>* <a class="code" href="class_i_d3___frame.html#a6">ID3_Frame::GetField</a>(<a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fieldName)<font class="keyword"> const</font> 00147 <font class="keyword"></font>{ 00148 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a7">GetField</a>(fieldName); 00149 } 00150 <a name="l00151"></a><a class="code" href="class_i_d3___frame.html#a7">00151</a> size_t <a class="code" href="class_i_d3___frame.html#a7">ID3_Frame::NumFields</a>()<font class="keyword"> const</font> 00152 <font class="keyword"></font>{ 00153 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a8">NumFields</a>(); 00154 } 00155 00156 <font class="comment">/*</font> 00157 <font class="comment">ID3_Field* ID3_Frame::GetFieldNum(index_t index) const</font> 00158 <font class="comment">{</font> 00159 <font class="comment"> return _impl->GetFieldNum(index);</font> 00160 <font class="comment">}</font> 00161 <font class="comment">*/</font> 00162 <a name="l00163"></a><a class="code" href="class_i_d3___frame.html#a14">00163</a> size_t <a class="code" href="class_i_d3___frame.html#a14">ID3_Frame::Size</a>() 00164 { 00165 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a15">Size</a>(); 00166 } 00167 00168 <a name="l00169"></a><a class="code" href="class_i_d3___frame.html#a11">00169</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a11">ID3_Frame::HasChanged</a>()<font class="keyword"> const</font> 00170 <font class="keyword"></font>{ 00171 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a12">HasChanged</a>(); 00172 } 00173 <a name="l00174"></a><a class="code" href="class_i_d3___frame.html#a10">00174</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>& <a class="code" href="class_i_d3___frame.html#a10">ID3_Frame::operator=</a>( <font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> &rFrame ) 00175 { 00176 <font class="keywordflow">if</font> (<font class="keyword">this</font> != &rFrame) 00177 { 00178 *_impl = rFrame; 00179 } 00180 <font class="keywordflow">return</font> *<font class="keyword">this</font>; 00181 } 00182 <a name="l00183"></a><a class="code" href="class_i_d3___frame.html#d0">00183</a> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___frame.html#a8">ID3_Frame::GetDescription</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id) 00184 { 00185 <font class="keywordflow">return</font> <a class="code" href="class_i_d3___frame_impl.html#a9">ID3_FrameImpl::GetDescription</a>(id); 00186 } 00187 <a name="l00188"></a><a class="code" href="class_i_d3___frame.html#a8">00188</a> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___frame.html#a8">ID3_Frame::GetDescription</a>()<font class="keyword"> const</font> 00189 <font class="keyword"></font>{ 00190 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a9">GetDescription</a>(); 00191 } 00192 <a name="l00193"></a><a class="code" href="class_i_d3___frame.html#a9">00193</a> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___frame.html#a9">ID3_Frame::GetTextID</a>()<font class="keyword"> const</font> 00194 <font class="keyword"></font>{ 00195 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a10">GetTextID</a>(); 00196 } 00197 <a name="l00198"></a><a class="code" href="class_i_d3___frame.html#a12">00198</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a12">ID3_Frame::Parse</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>& reader) 00199 { 00200 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a13">Parse</a>(reader); 00201 } 00202 <a name="l00203"></a><a class="code" href="class_i_d3___frame.html#a13">00203</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___frame.html#a13">ID3_Frame::Render</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>& writer)<font class="keyword"> const</font> 00204 <font class="keyword"></font>{ 00205 _impl-><a class="code" href="class_i_d3___frame_impl.html#a14">Render</a>(writer); 00206 } 00207 <a name="l00208"></a><a class="code" href="class_i_d3___frame.html#a15">00208</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a15">ID3_Frame::Contains</a>(<a class="code" href="globals_8h.html#a218">ID3_FieldID</a> id)<font class="keyword"> const</font> 00209 <font class="keyword"></font>{ 00210 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a16">Contains</a>(id); 00211 } 00212 <a name="l00218"></a><a class="code" href="class_i_d3___frame.html#a18">00218</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a18">ID3_Frame::SetCompression</a>(<font class="keywordtype">bool</font> b) 00219 { 00220 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a19">SetCompression</a>(b); 00221 } 00222 <a name="l00231"></a><a class="code" href="class_i_d3___frame.html#a19">00231</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a19">ID3_Frame::GetCompression</a>()<font class="keyword"> const</font> 00232 <font class="keyword"></font>{ 00233 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a20">GetCompression</a>(); 00234 } 00235 <a name="l00236"></a><a class="code" href="class_i_d3___frame.html#a20">00236</a> size_t <a class="code" href="class_i_d3___frame.html#a20">ID3_Frame::GetDataSize</a>()<font class="keyword"> const</font> 00237 <font class="keyword"></font>{ 00238 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a21">GetDataSize</a>(); 00239 } 00240 <a name="l00241"></a><a class="code" href="class_i_d3___frame.html#a21">00241</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a21">ID3_Frame::SetEncryptionID</a>(<a class="code" href="globals_8h.html#a33">uchar</a> id) 00242 { 00243 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a22">SetEncryptionID</a>(id); 00244 } 00245 <a name="l00246"></a><a class="code" href="class_i_d3___frame.html#a22">00246</a> <a class="code" href="globals_8h.html#a33">uchar</a> <a class="code" href="class_i_d3___frame.html#a22">ID3_Frame::GetEncryptionID</a>()<font class="keyword"> const</font> 00247 <font class="keyword"></font>{ 00248 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a23">GetEncryptionID</a>(); 00249 } 00250 <a name="l00251"></a><a class="code" href="class_i_d3___frame.html#a23">00251</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___frame.html#a23">ID3_Frame::SetGroupingID</a>(<a class="code" href="globals_8h.html#a33">uchar</a> id) 00252 { 00253 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a24">SetGroupingID</a>(id); 00254 } 00255 <a name="l00256"></a><a class="code" href="class_i_d3___frame.html#a24">00256</a> <a class="code" href="globals_8h.html#a33">uchar</a> <a class="code" href="class_i_d3___frame.html#a24">ID3_Frame::GetGroupingID</a>()<font class="keyword"> const</font> 00257 <font class="keyword"></font>{ 00258 <font class="keywordflow">return</font> _impl-><a class="code" href="class_i_d3___frame_impl.html#a25">GetGroupingID</a>(); 00259 } 00260 00261 <font class="keyword">namespace</font> 00262 <font class="keyword"></font>{ 00263 <font class="keyword">class </font>IteratorImpl : <font class="keyword">public</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>::Iterator 00264 { 00265 <a class="code" href="class_i_d3___frame_impl.html#s0">ID3_FrameImpl::iterator</a> _cur; 00266 <a class="code" href="class_i_d3___frame_impl.html#s0">ID3_FrameImpl::iterator</a> _end; 00267 <font class="keyword">public</font>: 00268 IteratorImpl(<a class="code" href="class_i_d3___frame_impl.html">ID3_FrameImpl</a>& frame) 00269 : _cur(frame.begin()), _end(frame.end()) 00270 { 00271 } 00272 00273 <a class="code" href="class_i_d3___field.html">ID3_Field</a>* GetNext() 00274 { 00275 <a class="code" href="class_i_d3___field.html">ID3_Field</a>* next = <a class="code" href="globals_8h.html#a24">NULL</a>; 00276 <font class="keywordflow">while</font> (next == NULL && _cur != _end) 00277 { 00278 next = *_cur; 00279 ++_cur; 00280 } 00281 <font class="keywordflow">return</font> next; 00282 } 00283 }; 00284 00285 00286 <font class="keyword">class </font>ConstIteratorImpl : <font class="keyword">public</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>::ConstIterator 00287 { 00288 <a class="code" href="class_i_d3___frame_impl.html#s1">ID3_FrameImpl::const_iterator</a> _cur; 00289 <a class="code" href="class_i_d3___frame_impl.html#s1">ID3_FrameImpl::const_iterator</a> _end; 00290 <font class="keyword">public</font>: 00291 ConstIteratorImpl(<a class="code" href="class_i_d3___frame_impl.html">ID3_FrameImpl</a>& frame) 00292 : _cur(frame.begin()), _end(frame.end()) 00293 { 00294 } 00295 <font class="keyword">const</font> <a class="code" href="class_i_d3___field.html">ID3_Field</a>* GetNext() 00296 { 00297 <a class="code" href="class_i_d3___field.html">ID3_Field</a>* next = <a class="code" href="globals_8h.html#a24">NULL</a>; 00298 <font class="keywordflow">while</font> (next == NULL && _cur != _end) 00299 { 00300 next = *_cur; 00301 ++_cur; 00302 } 00303 <font class="keywordflow">return</font> next; 00304 } 00305 }; 00306 } 00307 00308 <a class="code" href="class_i_d3___frame_1_1_iterator.html">ID3_Frame::Iterator</a>* <a name="l00309"></a><a class="code" href="class_i_d3___frame.html#a25">00309</a> <a class="code" href="class_i_d3___frame.html#a25">ID3_Frame::CreateIterator</a>() 00310 { 00311 <font class="keywordflow">return</font> <font class="keyword">new</font> IteratorImpl(*_impl); 00312 } 00313 00314 <a class="code" href="class_i_d3___frame_1_1_const_iterator.html">ID3_Frame::ConstIterator</a>* <a name="l00315"></a><a class="code" href="class_i_d3___frame.html#a26">00315</a> <a class="code" href="class_i_d3___frame.html#a25">ID3_Frame::CreateIterator</a>()<font class="keyword"> const</font> 00316 <font class="keyword"></font>{ 00317 <font class="keywordflow">return</font> <font class="keyword">new</font> ConstIteratorImpl(*_impl); 00318 } </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>