Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 2c9d30f3cf217a6cae41860ebc0d6704 > files > 183

libid3lib3.8_0-devel-3.8.0-0.pre2.1.1mdk.i586.rpm

<!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/tag.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> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</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="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>src/tag.cpp</h1><a href="tag_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// $Id: tag.cpp,v 1.42 2001/12/16 09:25:32 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">#if defined HAVE_CONFIG_H</font>
00028 <font class="preprocessor"></font><font class="preprocessor">#include &lt;config.h&gt;</font>
00029 <font class="preprocessor">#endif</font>
00030 <font class="preprocessor"></font>
00031 <font class="preprocessor">#include "<a class="code" href="tag_8h.html">tag.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="writers_8h.html">writers.h</a>"</font>
00034 <font class="preprocessor">#include "<a class="code" href="tag__impl_8h.html">tag_impl.h</a>"</font>
00035 <font class="preprocessor">#include "strings.h"</font>
00036 <font class="preprocessor">#include "utils.h"</font>
00037 
00038 <font class="keyword">using</font> <font class="keyword">namespace </font>dami;
00039 
<a name="l00295"></a><a class="code" href="class_i_d3___tag.html#a0">00295</a> <a class="code" href="class_i_d3___tag.html#a0">ID3_Tag::ID3_Tag</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name)
00296   : _impl(new <a class="code" href="class_i_d3___tag_impl.html">ID3_TagImpl</a>(name))
00297 {
00298 }
00299 
<a name="l00304"></a><a class="code" href="class_i_d3___tag.html#a1">00304</a> <a class="code" href="class_i_d3___tag.html#a0">ID3_Tag::ID3_Tag</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a> &amp;tag)
00305   : _impl(new <a class="code" href="class_i_d3___tag_impl.html">ID3_TagImpl</a>(tag))
00306 {
00307 }
00308 
<a name="l00309"></a><a class="code" href="class_i_d3___tag.html#a2">00309</a> <a class="code" href="class_i_d3___tag.html#a2">ID3_Tag::~ID3_Tag</a>()
00310 {
00311   <font class="keyword">delete</font> _impl;
00312 }
00313 
<a name="l00320"></a><a class="code" href="class_i_d3___tag.html#a3">00320</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a3">ID3_Tag::Clear</a>()
00321 {
00322   _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a3">Clear</a>();
00323 }
00324 
00325 
<a name="l00349"></a><a class="code" href="class_i_d3___tag.html#a4">00349</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a4">ID3_Tag::HasChanged</a>()<font class="keyword"> const</font>
00350 <font class="keyword"></font>{
00351   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a4">HasChanged</a>();
00352 }
00353 
<a name="l00384"></a><a class="code" href="class_i_d3___tag.html#a5">00384</a> size_t <a class="code" href="class_i_d3___tag.html#a5">ID3_Tag::Size</a>()<font class="keyword"> const</font>
00385 <font class="keyword"></font>{
00386   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a6">Size</a>();
00387 }
00388 
<a name="l00406"></a><a class="code" href="class_i_d3___tag.html#a6">00406</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a6">ID3_Tag::SetUnsync</a>(<font class="keywordtype">bool</font> b)
00407 {
00408   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a7">SetUnsync</a>(b);
00409 }
00410 
00411 
<a name="l00425"></a><a class="code" href="class_i_d3___tag.html#a7">00425</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a7">ID3_Tag::SetExtendedHeader</a>(<font class="keywordtype">bool</font> ext)
00426 {
00427   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a8">SetExtended</a>(ext);
00428 }
00429 
<a name="l00459"></a><a class="code" href="class_i_d3___tag.html#a12">00459</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a12">ID3_Tag::SetPadding</a>(<font class="keywordtype">bool</font> pad)
00460 {
00461   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a10">SetPadding</a>(pad);
00462 }
00463 
<a name="l00464"></a><a class="code" href="class_i_d3___tag.html#a8">00464</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a8">ID3_Tag::SetExperimental</a>(<font class="keywordtype">bool</font> exp)
00465 {
00466   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a9">SetExperimental</a>(exp);
00467 }
00468 
<a name="l00469"></a><a class="code" href="class_i_d3___tag.html#a9">00469</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a9">ID3_Tag::GetUnsync</a>()<font class="keyword"> const</font>
00470 <font class="keyword"></font>{
00471   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a11">GetUnsync</a>();
00472 }
00473 
<a name="l00474"></a><a class="code" href="class_i_d3___tag.html#a10">00474</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a10">ID3_Tag::GetExtendedHeader</a>()<font class="keyword"> const</font>
00475 <font class="keyword"></font>{
00476   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a12">GetExtended</a>();
00477 }
00478 
<a name="l00479"></a><a class="code" href="class_i_d3___tag.html#a11">00479</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a11">ID3_Tag::GetExperimental</a>()<font class="keyword"> const</font>
00480 <font class="keyword"></font>{
00481   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a13">GetExperimental</a>();
00482 }
00483 
<a name="l00484"></a><a class="code" href="class_i_d3___tag.html#a13">00484</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a13">ID3_Tag::AddFrame</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>&amp; frame)
00485 {
00486   _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a14">AddFrame</a>(frame);
00487 }
00488 
<a name="l00508"></a><a class="code" href="class_i_d3___tag.html#a14">00508</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a13">ID3_Tag::AddFrame</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame)
00509 {
00510   _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a14">AddFrame</a>(frame);
00511 }
00512 
<a name="l00527"></a><a class="code" href="class_i_d3___tag.html#a15">00527</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a15">ID3_Tag::AttachFrame</a>(<a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame)
00528 {
00529   _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a16">AttachFrame</a>(frame);
00530 }
00531 
00532 
<a name="l00553"></a><a class="code" href="class_i_d3___tag.html#a16">00553</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* <a class="code" href="class_i_d3___tag.html#a16">ID3_Tag::RemoveFrame</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frame)
00554 {
00555   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a17">RemoveFrame</a>(frame);
00556 }
00557 
<a name="l00558"></a><a class="code" href="class_i_d3___tag.html#a18">00558</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a17">ID3_Tag::Parse</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&amp; reader)
00559 {
00560   <font class="keywordflow">return</font> id3::v2::parse(*_impl, reader);
00561 }
00562 
<a name="l00563"></a><a class="code" href="class_i_d3___tag.html#a17">00563</a> size_t <a class="code" href="class_i_d3___tag.html#a17">ID3_Tag::Parse</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a>* buffer, size_t bytes)
00564 {
00565   <a class="code" href="class_i_d3___memory_reader.html">ID3_MemoryReader</a> mr(buffer, bytes);
00566   <a class="code" href="class_i_d3___reader.html#s2">ID3_Reader::pos_type</a> beg = mr.<a class="code" href="class_i_d3___memory_reader.html#a8">getCur</a>();
00567   id3::v2::parse(*_impl, mr);
00568   <font class="keywordflow">return</font> mr.<a class="code" href="class_i_d3___memory_reader.html#a10">getEnd</a>() - beg;
00569 }
00570 
<a name="l00610"></a><a class="code" href="class_i_d3___tag.html#a46">00610</a> size_t <a class="code" href="class_i_d3___tag.html#a17">ID3_Tag::Parse</a>(<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>],
00611                       <font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a> *buffer)
00612 {
00613   size_t size = <a class="code" href="class_i_d3___tag.html#d0">ID3_Tag::IsV2Tag</a>(header);
00614   <font class="keywordflow">if</font> (0 == size)
00615   {
00616     <font class="keywordflow">return</font> 0;
00617   }
00618   BString buf;
00619   buf.reserve(<a class="code" href="class_i_d3___tag_header.html#s10s8">ID3_TagHeader::SIZE</a> + size);
00620   buf.append(reinterpret_cast&lt;const BString::value_type *&gt;(header), 
00621              <a class="code" href="class_i_d3___tag_header.html#s10s8">ID3_TagHeader::SIZE</a>);
00622   buf.append(reinterpret_cast&lt;const BString::value_type *&gt;(buffer), size);
00623   <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_i_d3___tag.html#a17">Parse</a>(buf.data(), buf.size());
00624 }
00625 
<a name="l00654"></a><a class="code" href="class_i_d3___tag.html#a19">00654</a> size_t <a class="code" href="class_i_d3___tag.html#a19">ID3_Tag::Render</a>(<a class="code" href="globals_8h.html#a33">uchar</a>* buffer, <a class="code" href="globals_8h.html#a217">ID3_TagType</a> tt)<font class="keyword"> const</font>
00655 <font class="keyword"></font>{
00656   <a class="code" href="class_i_d3___memory_writer.html">ID3_MemoryWriter</a> mw(buffer, -1);
00657   <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_i_d3___tag.html#a19">Render</a>(mw, tt);
00658 }
00659 
<a name="l00660"></a><a class="code" href="class_i_d3___tag.html#a20">00660</a> size_t <a class="code" href="class_i_d3___tag.html#a19">ID3_Tag::Render</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>&amp; writer, <a class="code" href="globals_8h.html#a217">ID3_TagType</a> tt)<font class="keyword"> const</font>
00661 <font class="keyword"></font>{
00662   <a class="code" href="class_i_d3___writer.html#s2">ID3_Writer::pos_type</a> beg = writer.<a class="code" href="class_i_d3___writer.html#a4">getCur</a>();
00663   <font class="keywordflow">if</font> (<a class="code" href="globals_8h.html#a217a61">ID3TT_ID3V2</a> &amp; tt)
00664   {
00665     id3::v2::render(writer, *<font class="keyword">this</font>);
00666   }
00667   <font class="keywordflow">else</font> <font class="keywordflow">if</font> (<a class="code" href="globals_8h.html#a217a60">ID3TT_ID3V1</a> &amp; tt)
00668   {
00669     id3::v1::render(writer, *<font class="keyword">this</font>);
00670   }
00671   <font class="keywordflow">return</font> writer.<a class="code" href="class_i_d3___writer.html#a4">getCur</a>() - beg;
00672 }
00673 
00674 
<a name="l00711"></a><a class="code" href="class_i_d3___tag.html#a21">00711</a> size_t <a class="code" href="class_i_d3___tag.html#a21">ID3_Tag::Link</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fileInfo, <a class="code" href="globals_8h.html#a40">flags_t</a> flags)
00712 {
00713   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a18">Link</a>(fileInfo, flags);
00714 }
00715 
<a name="l00716"></a><a class="code" href="class_i_d3___tag.html#a22">00716</a> <a class="code" href="globals_8h.html#a40">flags_t</a> <a class="code" href="class_i_d3___tag.html#a22">ID3_Tag::Update</a>(<a class="code" href="globals_8h.html#a40">flags_t</a> flags)
00717 {
00718   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a19">Update</a>(flags);
00719 }
00720 
<a name="l00727"></a><a class="code" href="class_i_d3___tag.html#a23">00727</a> <a class="code" href="globals_8h.html#a40">flags_t</a> <a class="code" href="class_i_d3___tag.html#a23">ID3_Tag::Strip</a>(<a class="code" href="globals_8h.html#a40">flags_t</a> flags)
00728 {
00729   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a20">Strip</a>(flags);
00730 }
00731   
<a name="l00732"></a><a class="code" href="class_i_d3___tag.html#a24">00732</a> size_t <a class="code" href="class_i_d3___tag.html#a24">ID3_Tag::GetPrependedBytes</a>()<font class="keyword"> const </font>
00733 <font class="keyword"></font>{
00734   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a21">GetPrependedBytes</a>();
00735 }
00736 
<a name="l00737"></a><a class="code" href="class_i_d3___tag.html#a25">00737</a> size_t <a class="code" href="class_i_d3___tag.html#a25">ID3_Tag::GetAppendedBytes</a>()<font class="keyword"> const </font>
00738 <font class="keyword"></font>{ 
00739   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a22">GetAppendedBytes</a>();
00740 }
00741 
<a name="l00742"></a><a class="code" href="class_i_d3___tag.html#a26">00742</a> size_t <a class="code" href="class_i_d3___tag.html#a26">ID3_Tag::GetFileSize</a>()<font class="keyword"> const </font>
00743 <font class="keyword"></font>{ 
00744   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a23">GetFileSize</a>();
00745 }
00746 
<a name="l00747"></a><a class="code" href="class_i_d3___tag.html#a27">00747</a> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___tag.html#a27">ID3_Tag::GetFileName</a>()<font class="keyword"> const </font>
00748 <font class="keyword"></font>{ 
00749   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a24">GetFileName</a>().c_str();
00750 }
00751 
00753 
<a name="l00816"></a><a class="code" href="class_i_d3___tag.html#a28">00816</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* <a class="code" href="class_i_d3___tag.html#a28">ID3_Tag::Find</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id)<font class="keyword"> const</font>
00817 <font class="keyword"></font>{
00818   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a25">Find</a>(id);
00819 }
00820 
<a name="l00822"></a><a class="code" href="class_i_d3___tag.html#a29">00822</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* <a class="code" href="class_i_d3___tag.html#a28">ID3_Tag::Find</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fld, <a class="code" href="sized__types_8h.html#a4">uint32</a> data)<font class="keyword"> const</font>
00823 <font class="keyword"></font>{
00824   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a25">Find</a>(id, fld, data);
00825 }
00826 
<a name="l00828"></a><a class="code" href="class_i_d3___tag.html#a30">00828</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* <a class="code" href="class_i_d3___tag.html#a28">ID3_Tag::Find</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> fld, <font class="keyword">const</font> <font class="keywordtype">char</font>* data)<font class="keyword"> const</font>
00829 <font class="keyword"></font>{
00830   String str(data);
00831   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a25">Find</a>(id, fld, str);
00832 }
00833 
<a name="l00835"></a><a class="code" href="class_i_d3___tag.html#a31">00835</a> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* <a class="code" href="class_i_d3___tag.html#a28">ID3_Tag::Find</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id, <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)<font class="keyword"> const</font>
00836 <font class="keyword"></font>{
00837   WString str = toWString(data, ucslen(data));
00838   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a25">Find</a>(id, fld, str);
00839 }
00840 
<a name="l00848"></a><a class="code" href="class_i_d3___tag.html#a32">00848</a> size_t <a class="code" href="class_i_d3___tag.html#a32">ID3_Tag::NumFrames</a>()<font class="keyword"> const</font>
00849 <font class="keyword"></font>{
00850   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a29">NumFrames</a>();
00851 }
00852 
00867 <font class="comment">/*</font>
00868 <font class="comment">ID3_Frame* ID3_Tag::GetFrameNum(index_t num) const</font>
00869 <font class="comment">{</font>
00870 <font class="comment">  const size_t numFrames = this-&gt;NumFrames();</font>
00871 <font class="comment">  if (num &gt;= numFrames)</font>
00872 <font class="comment">  {</font>
00873 <font class="comment">    return NULL;</font>
00874 <font class="comment">  }</font>
00875 <font class="comment"></font>
00876 <font class="comment">  ID3_Frame* frame = NULL;</font>
00877 <font class="comment">  index_t curNum = 0;</font>
00878 <font class="comment">  // search from the cursor to the end</font>
00879 <font class="comment">  for (ID3_TagImpl::const_iterator cur = _impl-&gt;begin(); cur != _impl-&gt;end(); ++cur)</font>
00880 <font class="comment">  {</font>
00881 <font class="comment">    if (curNum++ == num)</font>
00882 <font class="comment">    {</font>
00883 <font class="comment">      frame = *cur;</font>
00884 <font class="comment">      break;</font>
00885 <font class="comment">    }</font>
00886 <font class="comment">  }</font>
00887 <font class="comment">  </font>
00888 <font class="comment">  return frame;</font>
00889 <font class="comment">}</font>
00890 <font class="comment">*/</font>
00891 
00900 <font class="comment">/*</font>
00901 <font class="comment">ID3_Frame* ID3_Tag::operator[](index_t index) const</font>
00902 <font class="comment">{</font>
00903 <font class="comment">  return this-&gt;GetFrameNum(index);</font>
00904 <font class="comment">}</font>
00905 <font class="comment">*/</font>
00906 
<a name="l00907"></a><a class="code" href="class_i_d3___tag.html#a35">00907</a> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>&amp; <a class="code" href="class_i_d3___tag.html#a35">ID3_Tag::operator=</a>( <font class="keyword">const</font> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a> &amp;rTag )
00908 {
00909   <font class="keywordflow">if</font> (<font class="keyword">this</font> != &amp;rTag)
00910   {
00911     *_impl = rTag;
00912   }
00913   <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00914 }
00915 
<a name="l00916"></a><a class="code" href="class_i_d3___tag.html#a36">00916</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a36">ID3_Tag::HasTagType</a>(<a class="code" href="sized__types_8h.html#a2">uint16</a> tt)<font class="keyword"> const</font>
00917 <font class="keyword"></font>{
00918   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a31">HasTagType</a>(tt);
00919 }
00920 
<a name="l00921"></a><a class="code" href="class_i_d3___tag.html#a37">00921</a> <a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> <a class="code" href="class_i_d3___tag.html#a37">ID3_Tag::GetSpec</a>()<font class="keyword"> const</font>
00922 <font class="keyword"></font>{
00923   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a32">GetSpec</a>();
00924 }
00925 
<a name="l00926"></a><a class="code" href="class_i_d3___tag.html#a38">00926</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a38">ID3_Tag::SetSpec</a>(<a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> spec)
00927 {
00928   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a33">SetSpec</a>(spec);
00929 }
00930 
00935 size_t <a class="code" href="class_i_d3___tag.html#d0">ID3_Tag::IsV2Tag</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a>* <font class="keyword">const</font> data)
00936 {
00937   <a class="code" href="class_i_d3___memory_reader.html">ID3_MemoryReader</a> mr(data, <a class="code" href="class_i_d3___tag_header.html#s10s8">ID3_TagHeader::SIZE</a>);
00938   <font class="keywordflow">return</font> <a class="code" href="class_i_d3___tag_impl.html#d0">ID3_TagImpl::IsV2Tag</a>(mr);
00939 }
00940 
<a name="l00941"></a><a class="code" href="class_i_d3___tag.html#d1">00941</a> size_t <a class="code" href="class_i_d3___tag.html#d0">ID3_Tag::IsV2Tag</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&amp; reader)
00942 {
00943   <font class="keywordflow">return</font> <a class="code" href="class_i_d3___tag_impl.html#d0">ID3_TagImpl::IsV2Tag</a>(reader);
00944 }
00945 
<a name="l00947"></a><a class="code" href="class_i_d3___tag.html#a39">00947</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a39">ID3_Tag::AddNewFrame</a>(<a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* f) 
00948 { 
00949   _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a16">AttachFrame</a>(f);
00950 }
00951 
<a name="l00968"></a><a class="code" href="class_i_d3___tag.html#a42">00968</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a42">ID3_Tag::AddFrames</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a> *frames, size_t numFrames)
00969 {
00970   <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = numFrames - 1; i &gt;= 0; i--)
00971   {
00972     this-&gt;<a class="code" href="class_i_d3___tag.html#a13">AddFrame</a>(frames[i]);
00973   }
00974 }
00975 
<a name="l00976"></a><a class="code" href="class_i_d3___tag.html#a40">00976</a> size_t <a class="code" href="class_i_d3___tag.html#a21">ID3_Tag::Link</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fileInfo, <font class="keywordtype">bool</font> parseID3v1, <font class="keywordtype">bool</font> parseLyrics3)
00977 {
00978   <font class="keywordflow">return</font> _impl-&gt;<a class="code" href="class_i_d3___tag_impl.html#a18">Link</a>(fileInfo, parseID3v1, parseLyrics3);
00979 }
00980 
<a name="l00981"></a><a class="code" href="class_i_d3___tag.html#a41">00981</a> <font class="keywordtype">void</font> <a class="code" href="class_i_d3___tag.html#a41">ID3_Tag::SetCompression</a>(<font class="keywordtype">bool</font> b) 
00982 { 
00983   ; 
00984 }
00985 
<a name="l00986"></a><a class="code" href="class_i_d3___tag.html#a43">00986</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a43">ID3_Tag::HasLyrics</a>()<font class="keyword"> const </font>
00987 <font class="keyword"></font>{ 
00988   <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_i_d3___tag.html#a36">HasTagType</a>(<a class="code" href="globals_8h.html#a217a65">ID3TT_LYRICS</a>);
00989 }
<a name="l00990"></a><a class="code" href="class_i_d3___tag.html#a44">00990</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a44">ID3_Tag::HasV2Tag</a>()  <font class="keyword">const</font> 
00991 { 
00992   <font class="keywordflow">return</font> this-&gt;HasTagType(<a class="code" href="globals_8h.html#a217a61">ID3TT_ID3V2</a>); 
00993 }
<a name="l00994"></a><a class="code" href="class_i_d3___tag.html#a45">00994</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___tag.html#a45">ID3_Tag::HasV1Tag</a>()  <font class="keyword">const</font> 
00995 { 
00996   <font class="keywordflow">return</font> this-&gt;HasTagType(<a class="code" href="globals_8h.html#a217a60">ID3TT_ID3V1</a>); 
00997 }
00998 
<a name="l01018"></a><a class="code" href="class_i_d3___tag.html#a47">01018</a> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>&amp; <a class="code" href="class_i_d3___tag.html#a47">ID3_Tag::operator&lt;&lt;</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>&amp; frame)
01019 {
01020   this-&gt;<a class="code" href="class_i_d3___tag.html#a13">AddFrame</a>(frame);
01021   <font class="keywordflow">return</font> *<font class="keyword">this</font>;
01022 }
01023 
01024 
<a name="l01025"></a><a class="code" href="class_i_d3___tag.html#a48">01025</a> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>&amp; <a class="code" href="class_i_d3___tag.html#a47">ID3_Tag::operator&lt;&lt;</a>(<font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* frame)
01026 {
01027   <font class="keywordflow">if</font> (frame)
01028   {
01029     this-&gt;<a class="code" href="class_i_d3___tag.html#a13">AddFrame</a>(frame);
01030   }
01031   <font class="keywordflow">return</font> *<font class="keyword">this</font>;
01032 }
01033 
<a name="l01034"></a><a class="code" href="tag_8cpp.html#a0">01034</a> <a class="code" href="sized__types_8h.html#a5">int32</a> <a class="code" href="tag_8h.html#a0">ID3_IsTagHeader</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a> data[<a class="code" href="globals_8h.html#a5">ID3_TAGHEADERSIZE</a>])
01035 {
01036   size_t size = <a class="code" href="class_i_d3___tag.html#d0">ID3_Tag::IsV2Tag</a>(data);
01037   
01038   <font class="keywordflow">if</font> (!size)
01039   {
01040     <font class="keywordflow">return</font> -1;
01041   }
01042   
01043   <font class="keywordflow">return</font> size - <a class="code" href="class_i_d3___tag_header.html#s10s8">ID3_TagHeader::SIZE</a>;
01044 }
01045 
01046 
01047 <font class="keyword">namespace</font>
01048 <font class="keyword"></font>{
01049   <font class="keyword">class </font>IteratorImpl : <font class="keyword">public</font> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>::Iterator
01050   {
01051     <a class="code" href="class_i_d3___tag_impl.html#s0">ID3_TagImpl::iterator</a> _cur;
01052     <a class="code" href="class_i_d3___tag_impl.html#s0">ID3_TagImpl::iterator</a> _end;
01053   <font class="keyword">public</font>:
01054     IteratorImpl(<a class="code" href="class_i_d3___tag_impl.html">ID3_TagImpl</a>&amp; tag)
01055       : _cur(tag.begin()), _end(tag.end())
01056     {
01057     }
01058 
01059     <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* GetNext() 
01060     { 
01061       <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* next = <a class="code" href="globals_8h.html#a24">NULL</a>;
01062       <font class="keywordflow">while</font> (next == NULL &amp;&amp; _cur != _end)
01063       {
01064         next = *_cur;
01065         ++_cur;
01066       }
01067       <font class="keywordflow">return</font> next;
01068     }
01069   };
01070 
01071   
01072   <font class="keyword">class </font>ConstIteratorImpl : <font class="keyword">public</font> <a class="code" href="class_i_d3___tag.html">ID3_Tag</a>::ConstIterator
01073   {
01074     <a class="code" href="class_i_d3___tag_impl.html#s1">ID3_TagImpl::const_iterator</a> _cur;
01075     <a class="code" href="class_i_d3___tag_impl.html#s1">ID3_TagImpl::const_iterator</a> _end;
01076   <font class="keyword">public</font>:
01077     ConstIteratorImpl(<a class="code" href="class_i_d3___tag_impl.html">ID3_TagImpl</a>&amp; tag)
01078       : _cur(tag.begin()), _end(tag.end())
01079     {
01080     }
01081     <font class="keyword">const</font> <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* GetNext() 
01082     { 
01083       <a class="code" href="class_i_d3___frame.html">ID3_Frame</a>* next = <a class="code" href="globals_8h.html#a24">NULL</a>;
01084       <font class="keywordflow">while</font> (next == NULL &amp;&amp; _cur != _end)
01085       {
01086         next = *_cur;
01087         ++_cur;
01088       }
01089       <font class="keywordflow">return</font> next;
01090     }
01091   };
01092 }
01093 
01094 <a class="code" href="class_i_d3___tag_1_1_iterator.html">ID3_Tag::Iterator</a>* 
<a name="l01095"></a><a class="code" href="class_i_d3___tag.html#a33">01095</a> <a class="code" href="class_i_d3___tag.html#a33">ID3_Tag::CreateIterator</a>()
01096 {
01097   <font class="keywordflow">return</font> <font class="keyword">new</font> IteratorImpl(*_impl);
01098 }
01099 
01100 <a class="code" href="class_i_d3___tag_1_1_const_iterator.html">ID3_Tag::ConstIterator</a>* 
<a name="l01101"></a><a class="code" href="class_i_d3___tag.html#a34">01101</a> <a class="code" href="class_i_d3___tag.html#a33">ID3_Tag::CreateIterator</a>()<font class="keyword"> const</font>
01102 <font class="keyword"></font>{
01103   <font class="keywordflow">return</font> <font class="keyword">new</font> ConstIteratorImpl(*_impl);
01104 }
</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>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>