Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-release > by-pkgid > 1b812d1b0e765bcc0430721ff58676d2 > files > 72

libid3_3.8_3-devel-3.8.3-19.mga1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>id3lib: ID3_Tag Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="id3lib.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>ID3_Tag Class Reference</h1><!-- doxytag: class="ID3_Tag" -->
<p>The representative class of an id3 tag.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="tag_8h_source.html">id3/tag.h</a>&gt;</code></p>

<p><a href="class_i_d3___tag-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag_1_1_const_iterator.html">ConstIterator</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag_1_1_iterator.html">Iterator</a></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a0dc79f55e62b6ec643ed0006d1151074">ID3_Tag</a> (const char *name=((void *) 0))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor; it can accept an optional filename as a parameter.  <a href="#a0dc79f55e62b6ec643ed0006d1151074"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a08c1ee11b0daaad04ea0cc3dd2392419">ID3_Tag</a> (const <a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;tag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Standard copy constructor.  <a href="#a08c1ee11b0daaad04ea0cc3dd2392419"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a22029d144e0d5d3d543806e6ed212a61">~ID3_Tag</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a508bc38d003f1e08690174322531b5b1">Clear</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears the object and disassociates it from any files.  <a href="#a508bc38d003f1e08690174322531b5b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a08cde02eb3fff5b44f474ff531466fd0">HasChanged</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates whether the tag has been altered since the last parse, render, or update.  <a href="#a08cde02eb3fff5b44f474ff531466fd0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a8da50449a6e1012f497ef2c285fc3089">Size</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an over estimate of the number of bytes required to store a binary version of a tag.  <a href="#a8da50449a6e1012f497ef2c285fc3089"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a9018b800f8d0a59185d89c15077cec4c">SetUnsync</a> (bool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Turns unsynchronization on or off, dependant on the value of the boolean parameter.  <a href="#a9018b800f8d0a59185d89c15077cec4c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ab204dfa865279652a34a41c2171c69c5">SetExtendedHeader</a> (bool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Turns extended header rendering on or off, dependant on the value of the boolean parameter.  <a href="#ab204dfa865279652a34a41c2171c69c5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a10e2f553c2dd030622fd8f6b83b4934f">SetExperimental</a> (bool)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a220d08e1763ba1c2f222e5cebdcc91f2">GetUnsync</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a4635c3c7e1ab2d829d9b5c6e690e557a">GetExtendedHeader</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aa1b401965b163a7258356df071431153">GetExperimental</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a170e2dcfbb8bd217dfce1f33aecb4501">SetPadding</a> (bool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Turns padding on or off, dependant on the value of the boolean parameter.  <a href="#a170e2dcfbb8bd217dfce1f33aecb4501"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a03dce6ffdd08ee2683e6dab044388ebd">AddFrame</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a2066785f37d783a0fc9b78f2bc286724">AddFrame</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attaches a frame to the tag; the tag doesn't take responsibility for releasing the frame's memory when tag goes out of scope.  <a href="#a2066785f37d783a0fc9b78f2bc286724"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a8760bcb5321fc95ee0e91a2057b4eb9c">AttachFrame</a> (<a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attaches a frame to the tag; the tag takes responsibility for releasing the frame's memory when tag goes out of scope.  <a href="#a8760bcb5321fc95ee0e91a2057b4eb9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ae21522e16cb899c5cd1c42d8f7fdfad9">RemoveFrame</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a frame from the tag.  <a href="#ae21522e16cb899c5cd1c42d8f7fdfad9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a9c721743131858720f074401a6e07b0f">Parse</a> (const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *, size_t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a12e3366fdda75e8a144e20b243d38554">Parse</a> (<a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;reader)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aa0c457802a29e1cfca0518697041a684">Render</a> (<a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *, <a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a>=ID3TT_ID3V2) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Renders the tag and writes it to the attached file; the type of tag rendered can be specified as a parameter.  <a href="#aa0c457802a29e1cfca0518697041a684"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a3bbdeb56c5ac9da37f923345e944a188">Render</a> (<a class="el" href="class_i_d3___writer.html">ID3_Writer</a> &amp;, <a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a>=ID3TT_ID3V2) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#abd5f6a802f6fca6ec4687533de031bed">Link</a> (const char *fileInfo, <a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>=(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>) ID3TT_ALL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attaches a file to the tag, parses the file, and adds any tag information found in the file to the tag.  <a href="#abd5f6a802f6fca6ec4687533de031bed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a790a452e26506217bb13c5d49b60be14">Link</a> (<a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;reader, <a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>=(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>) ID3TT_ALL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Same as above, but takes a <a class="el" href="class_i_d3___reader.html">ID3_Reader</a> as argument.  <a href="#a790a452e26506217bb13c5d49b60be14"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a568548096a28d9cf05d1d772b97540a0">Update</a> (<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>=(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>) ID3TT_ALL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a19cfedd73d6859e911a45544f1eed35f">Strip</a> (<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>=(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>) ID3TT_ALL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Strips the tag(s) from the attached file.  <a href="#a19cfedd73d6859e911a45544f1eed35f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aa7a1b21d6e7dd1c162809d6cf566f790">GetPrependedBytes</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a3d099bdf39c01583c544f4eceabe324f">GetAppendedBytes</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a3fae6f2d9f25984dc505fe28ef3a60a2">GetFileSize</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a4b4888c48b2623b86c0e3a6d7b4080c4">GetFileName</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="struct_mp3___headerinfo.html">Mp3_Headerinfo</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#afc3f8630ba475b8769f25f260b6cda1f">GetMp3HeaderInfo</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get's the mp3 Info like bitrate, mpeg version, etc.  <a href="#afc3f8630ba475b8769f25f260b6cda1f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a7b6afcc149a7a49b52cf8435bd69bf13">Parse</a> (const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> header[(10)], const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *buffer)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Find</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp4cfa6c981549e990fe2344e4c805405e"></a>Finds frame with given frame id</p>
<p>Returns a pointer to the next <a class="el" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> with the given ID3_FrameID; returns NULL if no such frame found.</p>
<p>If there are multiple frames in the tag with the same ID (which, for some frames, is allowed), then subsequent calls to <a class="el" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">Find()</a> will return subsequent frame pointers, wrapping if necessary.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *myFrame;
   <span class="keywordflow">if</span> (myFrame = myTag.Find(<a class="code" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8aaf7e8a066a7c9debd6dfd742cfb5a080b" title="Title/songname/content description.">ID3FID_TITLE</a>))
   {
     <span class="comment">// do something with the frame, like copy</span>
     <span class="comment">// the contents into a buffer, display the</span>
     <span class="comment">// contents in a window, etc.</span>
     <span class="comment">// ...</span>
   }
</pre></div><p>You may optionally supply to more parameters ot this method, being an ID3_FieldID and a value of some sort. Depending on the field name/ID you supply, you may supply an integer, a char* or a unicode_t* as the third parameter. If you supply an ID3_FrameID, you must also supply a data value to compare against.</p>
<p>This method will then return the first frame that has a matching frame ID, and which has a field with the same name as that which you supplied in the second parameter, whose calue matches that which you supplied as the third parameter. For example:</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *myFrame;
   <span class="keywordflow">if</span> (myFrame = myTag.Find(<a class="code" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8aaf7e8a066a7c9debd6dfd742cfb5a080b" title="Title/songname/content description.">ID3FID_TITLE</a>, <a class="code" href="globals_8h.html#a23cab982426a968437cd731900cfeb2cab4a3b9cafedc2cede90380c79edca044" title="Text field.">ID3FN_TEXT</a>, <span class="stringliteral">&quot;Nirvana&quot;</span>))
   {
     <span class="comment">// found it, do something with it.</span>
     <span class="comment">// ...</span>
   }
</pre></div><p>This example will return the first TITLE frame and whose TEXT field is 'Nirvana'. Currently there is no provision for things like 'contains', 'greater than', or 'less than'. If there happens to be more than one of these frames, subsequent calls to the <a class="el" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">Find()</a> method will return subsequent frames and will wrap around to the beginning.</p>
<p>Another example...</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *myFrame;
   <span class="keywordflow">if</span> (myFrame = myTag.Find(<a class="code" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8aa8df694633e118d601850e497b132de0f" title="Comments.">ID3FID_COMMENT</a>, <a class="code" href="globals_8h.html#a23cab982426a968437cd731900cfeb2cafca0c8c5686ec00e25d1850099aa0a4d" title="Text encoding (unicode or ASCII).">ID3FN_TEXTENC</a>, <a class="code" href="globals_8h.html#a2a414b8e1666bd6dd8dce86cdcf74a39ac5345a1533e33f6d71840f30e83e0d02">ID3TE_UNICODE</a>))
   {
     <span class="comment">// found it, do something with it.</span>
     <span class="comment">// ...</span>
   }
</pre></div><p>This returns the first COMMENT frame that uses Unicode as its text encdoing.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>The ID of the frame that is to be located </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the first frame found that has the given frame id, or NULL if no such frame. </dd></dl>
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3">Find</a> (<a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds frame with given frame id, fld id, and integer data.  <a href="#aad2a8e5a801bc09eac967d24ff3539c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a333ea1770421c552942743d52eaa8ef1">Find</a> (<a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>, <a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>, uint32) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds frame with given frame id, fld id, and integer data.  <a href="#a333ea1770421c552942743d52eaa8ef1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a0332dbbf23286e7a60da4687f4626718">Find</a> (<a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>, <a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>, const char *) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds frame with given frame id, fld id, and ascii data.  <a href="#a0332dbbf23286e7a60da4687f4626718"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aeaa81b2096ac9915574789d2c5560e3b">Find</a> (<a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>, <a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>, const <a class="el" href="globals_8h.html#a781c2cce7ea2af8192d5f83427044add">unicode_t</a> *) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds frame with given frame id, fld id, and unicode data.  <a href="#aeaa81b2096ac9915574789d2c5560e3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ab7fb08aebef7b5f3532bb98fcca94789">NumFrames</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of frames present in the tag object.  <a href="#ab7fb08aebef7b5f3532bb98fcca94789"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">operator&lt;&lt;</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp210d0c7a1cd3e8b9a392cd7c51ec8df4"></a>Copies a frame to the tag.</p>
<p>The frame parameter can thus safely be deleted or allowed to go out of scope.</p>
<p>Operator&lt;&lt; supports the addition of a pointer to a frame object, or the frame object itself.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *pFrame, frame;
   p_frame = &amp;frame;
   myTag &lt;&lt; pFrame;
   myTag &lt;&lt; frame;
</pre></div><p>Both these methods copy the given frame to the tag---the tag creates its own copy of the frame.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>The frame to be added to the tag. </td></tr>
  </table>
  </dd>
</dl>
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___tag_1_1_iterator.html">Iterator</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ad63ed5e405467892b3d4413b185c43ba">CreateIterator</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___tag_1_1_const_iterator.html">ConstIterator</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#af3d9a113387ef0ba1fd98472d5fedb02">CreateIterator</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ac74d4752c81d898abc947e6a0026cd9f">operator&lt;&lt;</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ad6636fc2d107312609266a10c38adcfe">operator&lt;&lt;</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *)</td></tr>
<tr><td colspan="2"><h2>operator[]</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp11e7c047e3b79c29f10a84a156d1009e"></a>Returns a pointer to the frame with the given index; returns NULL if there is no such frame at that index.</p>
<p>Optionally, operator[](size_t) can be used as an alternative to this method. Indexing is 0-based (that is, the first frame is number 0, and the last frame in a tag that holds n frames is n-1).</p>
<p>If you wish to have a more comlex searching facility, then at least for now you will have to devise it yourself and implement it useing these methods.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>nIndex</em>&nbsp;</td><td>The index of the frame that is to be retrieved </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the requested frame, or NULL if no such frame. Returns a pointer to the frame with the given index; returns NULL if there is no such frame at that index.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>The index of the frame that is to be retrieved </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the requested frame, or NULL if no such frame. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>GetFrameNum </dd></dl>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a740838c66f36f5c22afd90f450823d1b">operator=</a> (const <a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a740838c66f36f5c22afd90f450823d1b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a6835ba87275d0ec02a5ffbcc5c800b05">HasTagType</a> (<a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a> tt) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a6835ba87275d0ec02a5ffbcc5c800b05"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="globals_8h.html#a48b13eb6cb3c520195901516dee1e612">ID3_V2Spec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a4a13b5780927176a9d10ad3f97c7acd4">GetSpec</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a4a13b5780927176a9d10ad3f97c7acd4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#adb08a9c5db44f82b2b07232570d0d17a">SetSpec</a> (<a class="el" href="globals_8h.html#a48b13eb6cb3c520195901516dee1e612">ID3_V2Spec</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#adb08a9c5db44f82b2b07232570d0d17a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a731acce2e9aedac99225f942ae530850">AddNewFrame</a> (<a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *f)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a731acce2e9aedac99225f942ae530850"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#af95a4ceea9d82dcb28c45dbf9f8788af">Link</a> (const char *fileInfo, bool parseID3v1, bool parseLyrics3)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#af95a4ceea9d82dcb28c45dbf9f8788af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a163ae862d97c15831d5d34429e4e42f0">SetCompression</a> (bool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a163ae862d97c15831d5d34429e4e42f0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#ac3ff4910169e70101c0f92429f52feec">AddFrames</a> (const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *, size_t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copies an array of frames to the tag.  <a href="#ac3ff4910169e70101c0f92429f52feec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a7bfcb4d511f3c11e938df79c8f60232d">HasLyrics</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a7bfcb4d511f3c11e938df79c8f60232d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#aaf0eb3f834d8daa509eec0b163e8708c">HasV2Tag</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#aaf0eb3f834d8daa509eec0b163e8708c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a803c9b22df40b44acab45d106a80fdfc">HasV1Tag</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a803c9b22df40b44acab45d106a80fdfc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#abeaf68b668a689f2ce50094131b9183b">IsV2Tag</a> (const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Analyses a buffer to determine if we have a valid ID3v2 tag header.  <a href="#abeaf68b668a689f2ce50094131b9183b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_d3___tag.html#a74b5b1d4a3ac3f1d39b1d21d2adac988">IsV2Tag</a> (<a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated.  <a href="#a74b5b1d4a3ac3f1d39b1d21d2adac988"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The representative class of an id3 tag. </p>
<p>The <a class="el" href="class_i_d3___tag.html" title="The representative class of an id3 tag.">ID3_Tag</a> is, at its simplest, a container for ID3v2 frames. At its most complicated, it's a kitchen-sink, monolithic "catch-all" class for handling almost every task associated with creating, parsing, rendering, and manipulating digital audio data using id3lib.</p>
<p>This simple <code>include</code> does it all. In order to read an existing tag, do the following:</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___tag.html" title="The representative class of an id3 tag.">ID3_Tag</a> myTag;
   myTag.<a class="code" href="class_i_d3___tag.html#abd5f6a802f6fca6ec4687533de031bed" title="Attaches a file to the tag, parses the file, and adds any tag information found in...">Link</a>(<span class="stringliteral">&quot;something.mp3&quot;</span>);
</pre></div><p>That is all there is to it. Now all you have to do is use the <a class="el" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">Find()</a> method to locate the frames you are interested in is the following:</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a>* myFrame = myTag.<a class="code" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">Find</a>(<a class="code" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8aaf7e8a066a7c9debd6dfd742cfb5a080b" title="Title/songname/content description.">ID3FID_TITLE</a>);
   <span class="keywordflow">if</span> (<a class="code" href="globals_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a> != myFrame)
   {
     <span class="keyword">const</span> <span class="keywordtype">char</span>* title = myFrame-&gt;GetField(<a class="code" href="globals_8h.html#a23cab982426a968437cd731900cfeb2cab4a3b9cafedc2cede90380c79edca044" title="Text field.">ID3FN_TEXT</a>)-&gt;GetText();
     cout &lt;&lt; <span class="stringliteral">&quot;Title: &quot;</span> &lt;&lt; title &lt;&lt; endl;
   }
</pre></div><p>This code snippet locates the ID3FID_TITLE frame and displays the text field.</p>
<p>When using the <a class="el" href="class_i_d3___tag.html#abd5f6a802f6fca6ec4687533de031bed" title="Attaches a file to the tag, parses the file, and adds any tag information found in...">ID3_Tag::Link()</a> method, you automatically gain access to any ID3v1/1.1, ID3v2, Lyrics3 v2.0, and MusicMatch tags present in the file. The class will automaticaly parse and convert any of these foreign tag formats into ID3v2 tags. Also, id3lib will correctly parse any correctly formatted 'CDM' frames from the unreleased ID3v2 2.01 draft specification.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Dirk Mahoney </dd></dl>
<dl class="version"><dt><b>Version:</b></dt><dd></dd></dl>
<dl class="rcs"><dt><b>Id</b></dt><dd><a class="el" href="tag_8cpp.html">tag.cpp</a>,v 1.55 2003/03/02 13:35:58 t1mpy Exp </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> </dd>
<dd>
<a class="el" href="class_i_d3___field.html" title="The representative class of an ID3v2 field.">ID3_Field</a> </dd>
<dd>
<a class="el" href="globals_8h.html#a0b8e76d7ef771f36346f7e4e5ce3fa84" title="Predefined id3lib error types.">ID3_Err</a> </dd></dl>

<p>Definition at line <a class="el" href="tag_8h_source.html#l00041">41</a> of file <a class="el" href="tag_8h_source.html">tag.h</a>.</p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0dc79f55e62b6ec643ed0006d1151074"></a><!-- doxytag: member="ID3_Tag::ID3_Tag" ref="a0dc79f55e62b6ec643ed0006d1151074" args="(const char *name=((void *) 0))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ID3_Tag::ID3_Tag </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em> = <code>((void*)&nbsp;0)</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor; it can accept an optional filename as a parameter. </p>
<p>If this file exists, it will be opened and all id3lib-supported tags will be parsed and converted to ID3v2 if necessary. After the conversion, the file will remain unchanged, and will continue to do so until you use the <a class="el" href="class_i_d3___tag.html#a568548096a28d9cf05d1d772b97540a0">Update()</a> method on the tag (if you choose to <a class="el" href="class_i_d3___tag.html#a568548096a28d9cf05d1d772b97540a0">Update()</a> at all).</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The filename of the mp3 file to link to </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00289">289</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a08c1ee11b0daaad04ea0cc3dd2392419"></a><!-- doxytag: member="ID3_Tag::ID3_Tag" ref="a08c1ee11b0daaad04ea0cc3dd2392419" args="(const ID3_Tag &amp;tag)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ID3_Tag::ID3_Tag </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>tag</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Standard copy constructor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>What is copied into this tag </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00298">298</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a22029d144e0d5d3d543806e6ed212a61"></a><!-- doxytag: member="ID3_Tag::~ID3_Tag" ref="a22029d144e0d5d3d543806e6ed212a61" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ID3_Tag::~ID3_Tag </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00303">303</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a2066785f37d783a0fc9b78f2bc286724"></a><!-- doxytag: member="ID3_Tag::AddFrame" ref="a2066785f37d783a0fc9b78f2bc286724" args="(const ID3_Frame *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::AddFrame </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Attaches a frame to the tag; the tag doesn't take responsibility for releasing the frame's memory when tag goes out of scope. </p>
<p>Optionally, operator&lt;&lt; can also be used to attach a frame to a tag. To use, simply supply its parameter a pointer to the <a class="el" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> object you wish to attach.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> myFrame;
   myTag.<a class="code" href="class_i_d3___tag.html#a03dce6ffdd08ee2683e6dab044388ebd">AddFrame</a>(&amp;myFrame);
</pre></div><p>As stated, this method attaches the frames to the tag---the tag does not create its own copy of the frame. Frames created by an application must exist until the frame is removed or the tag is finished with it.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pFrame</em>&nbsp;</td><td>A pointer to the frame that is being added to the tag. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> </dd></dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00502">502</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a03dce6ffdd08ee2683e6dab044388ebd"></a><!-- doxytag: member="ID3_Tag::AddFrame" ref="a03dce6ffdd08ee2683e6dab044388ebd" args="(const ID3_Frame &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::AddFrame </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00478">478</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ac3ff4910169e70101c0f92429f52feec"></a><!-- doxytag: member="ID3_Tag::AddFrames" ref="ac3ff4910169e70101c0f92429f52feec" args="(const ID3_Frame *, size_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::AddFrames </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>frames</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>numFrames</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copies an array of frames to the tag. </p>
<p>This method copies each frame in an array to the tag. As in AddFrame, the tag adds a copy of the frame, and it assumes responsiblity for freeing the frames' memory when the tag goes out of scope.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> myFrames[10];
   myTag.<a class="code" href="class_i_d3___tag.html#ac3ff4910169e70101c0f92429f52feec" title="Copies an array of frames to the tag.">AddFrames</a>(myFrames, 10);
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> </dd>
<dd>
ID3_Frame::AddFrame </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pNewFrames</em>&nbsp;</td><td>A pointer to an array of frames to be added to the tag. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nFrames</em>&nbsp;</td><td>The number of frames in the array pNewFrames. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00988">988</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a731acce2e9aedac99225f942ae530850"></a><!-- doxytag: member="ID3_Tag::AddNewFrame" ref="a731acce2e9aedac99225f942ae530850" args="(ID3_Frame *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::AddNewFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00967">967</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a8760bcb5321fc95ee0e91a2057b4eb9c"></a><!-- doxytag: member="ID3_Tag::AttachFrame" ref="a8760bcb5321fc95ee0e91a2057b4eb9c" args="(ID3_Frame *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::AttachFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Attaches a frame to the tag; the tag takes responsibility for releasing the frame's memory when tag goes out of scope. </p>
<p>This method accepts responsibility for the attached frame's memory, and will delete the frame and its contents when the tag goes out of scope or is deleted. Therefore, be sure the frame isn't "Attached" to other tags.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *frame = <span class="keyword">new</span> <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a>;
   myTag.<a class="code" href="class_i_d3___tag.html#a8760bcb5321fc95ee0e91a2057b4eb9c" title="Attaches a frame to the tag; the tag takes responsibility for releasing the frame&amp;#39;s...">AttachFrame</a>(frame);
</pre></div><dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>A pointer to the frame that is being added to the tag. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00521">521</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a508bc38d003f1e08690174322531b5b1"></a><!-- doxytag: member="ID3_Tag::Clear" ref="a508bc38d003f1e08690174322531b5b1" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::Clear </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Clears the object and disassociates it from any files. </p>
<p>Frees any resources for which the object is responsible, including all frames and files. After a call to <a class="el" href="class_i_d3___tag.html#a508bc38d003f1e08690174322531b5b1" title="Clears the object and disassociates it from any files.">Clear()</a>, the object can be used again for any new or existing tag. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00314">314</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="af3d9a113387ef0ba1fd98472d5fedb02"></a><!-- doxytag: member="ID3_Tag::CreateIterator" ref="af3d9a113387ef0ba1fd98472d5fedb02" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___tag_1_1_const_iterator.html">ID3_Tag::ConstIterator</a> * ID3_Tag::CreateIterator </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01121">1121</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ad63ed5e405467892b3d4413b185c43ba"></a><!-- doxytag: member="ID3_Tag::CreateIterator" ref="ad63ed5e405467892b3d4413b185c43ba" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___tag_1_1_iterator.html">ID3_Tag::Iterator</a> * ID3_Tag::CreateIterator </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01115">1115</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aeaa81b2096ac9915574789d2c5560e3b"></a><!-- doxytag: member="ID3_Tag::Find" ref="aeaa81b2096ac9915574789d2c5560e3b" args="(ID3_FrameID, ID3_FieldID, const unicode_t *) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> * ID3_Tag::Find </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>&nbsp;</td>
          <td class="paramname"> <em>fld</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="globals_8h.html#a781c2cce7ea2af8192d5f83427044add">unicode_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Finds frame with given frame id, fld id, and unicode data. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00855">855</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a0332dbbf23286e7a60da4687f4626718"></a><!-- doxytag: member="ID3_Tag::Find" ref="a0332dbbf23286e7a60da4687f4626718" args="(ID3_FrameID, ID3_FieldID, const char *) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> * ID3_Tag::Find </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>&nbsp;</td>
          <td class="paramname"> <em>fld</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Finds frame with given frame id, fld id, and ascii data. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00848">848</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a333ea1770421c552942743d52eaa8ef1"></a><!-- doxytag: member="ID3_Tag::Find" ref="a333ea1770421c552942743d52eaa8ef1" args="(ID3_FrameID, ID3_FieldID, uint32) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> * ID3_Tag::Find </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a23cab982426a968437cd731900cfeb2c">ID3_FieldID</a>&nbsp;</td>
          <td class="paramname"> <em>fld</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Finds frame with given frame id, fld id, and integer data. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00842">842</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aad2a8e5a801bc09eac967d24ff3539c3"></a><!-- doxytag: member="ID3_Tag::Find" ref="aad2a8e5a801bc09eac967d24ff3539c3" args="(ID3_FrameID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> * ID3_Tag::Find </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8a">ID3_FrameID</a>&nbsp;</td>
          <td class="paramname"> <em>id</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Finds frame with given frame id, fld id, and integer data. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00836">836</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3d099bdf39c01583c544f4eceabe324f"></a><!-- doxytag: member="ID3_Tag::GetAppendedBytes" ref="a3d099bdf39c01583c544f4eceabe324f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::GetAppendedBytes </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00748">748</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa1b401965b163a7258356df071431153"></a><!-- doxytag: member="ID3_Tag::GetExperimental" ref="aa1b401965b163a7258356df071431153" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::GetExperimental </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00473">473</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4635c3c7e1ab2d829d9b5c6e690e557a"></a><!-- doxytag: member="ID3_Tag::GetExtendedHeader" ref="a4635c3c7e1ab2d829d9b5c6e690e557a" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::GetExtendedHeader </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00468">468</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4b4888c48b2623b86c0e3a6d7b4080c4"></a><!-- doxytag: member="ID3_Tag::GetFileName" ref="a4b4888c48b2623b86c0e3a6d7b4080c4" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char * ID3_Tag::GetFileName </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00758">758</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3fae6f2d9f25984dc505fe28ef3a60a2"></a><!-- doxytag: member="ID3_Tag::GetFileSize" ref="a3fae6f2d9f25984dc505fe28ef3a60a2" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::GetFileSize </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00753">753</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="afc3f8630ba475b8769f25f260b6cda1f"></a><!-- doxytag: member="ID3_Tag::GetMp3HeaderInfo" ref="afc3f8630ba475b8769f25f260b6cda1f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="struct_mp3___headerinfo.html">Mp3_Headerinfo</a> * ID3_Tag::GetMp3HeaderInfo </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get's the mp3 Info like bitrate, mpeg version, etc. </p>
<p>Can be run after Link(&lt;filename&gt;) </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00727">727</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa7a1b21d6e7dd1c162809d6cf566f790"></a><!-- doxytag: member="ID3_Tag::GetPrependedBytes" ref="aa7a1b21d6e7dd1c162809d6cf566f790" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::GetPrependedBytes </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00743">743</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4a13b5780927176a9d10ad3f97c7acd4"></a><!-- doxytag: member="ID3_Tag::GetSpec" ref="a4a13b5780927176a9d10ad3f97c7acd4" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="globals_8h.html#a48b13eb6cb3c520195901516dee1e612">ID3_V2Spec</a> ID3_Tag::GetSpec </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00941">941</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a220d08e1763ba1c2f222e5cebdcc91f2"></a><!-- doxytag: member="ID3_Tag::GetUnsync" ref="a220d08e1763ba1c2f222e5cebdcc91f2" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::GetUnsync </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00463">463</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a08cde02eb3fff5b44f474ff531466fd0"></a><!-- doxytag: member="ID3_Tag::HasChanged" ref="a08cde02eb3fff5b44f474ff531466fd0" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::HasChanged </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Indicates whether the tag has been altered since the last parse, render, or update. </p>
<p>If you have a tag linked to a file, you do not need this method since the <a class="el" href="class_i_d3___tag.html#a568548096a28d9cf05d1d772b97540a0">Update()</a> method will check for changes before writing the tag.</p>
<p>This method is primarily intended as a status indicator for applications and for applications that use the <a class="el" href="class_i_d3___tag.html#a9c721743131858720f074401a6e07b0f">Parse()</a> and <a class="el" href="class_i_d3___tag.html#aa0c457802a29e1cfca0518697041a684" title="Renders the tag and writes it to the attached file; the type of tag rendered can...">Render()</a> methods.</p>
<p>Setting a field, changed the ID of an attached frame, setting or grouping or encryption IDs, and clearing a frame or field all constitute a change to the tag, as do calls to the <a class="el" href="class_i_d3___tag.html#a9018b800f8d0a59185d89c15077cec4c" title="Turns unsynchronization on or off, dependant on the value of the boolean parameter...">SetUnsync()</a>, <a class="el" href="class_i_d3___tag.html#ab204dfa865279652a34a41c2171c69c5" title="Turns extended header rendering on or off, dependant on the value of the boolean...">SetExtendedHeader()</a>, and <a class="el" href="class_i_d3___tag.html#a170e2dcfbb8bd217dfce1f33aecb4501" title="Turns padding on or off, dependant on the value of the boolean parameter.">SetPadding()</a> methods.</p>
<div class="fragment"><pre class="fragment">   <span class="keywordflow">if</span> (myTag.<a class="code" href="class_i_d3___tag.html#a08cde02eb3fff5b44f474ff531466fd0" title="Indicates whether the tag has been altered since the last parse, render, or update...">HasChanged</a>())
   {
     <span class="comment">// render and output the tag</span>
   }
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>Whether or not the tag has been altered. </dd></dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00343">343</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a7bfcb4d511f3c11e938df79c8f60232d"></a><!-- doxytag: member="ID3_Tag::HasLyrics" ref="a7bfcb4d511f3c11e938df79c8f60232d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::HasLyrics </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01006">1006</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a6835ba87275d0ec02a5ffbcc5c800b05"></a><!-- doxytag: member="ID3_Tag::HasTagType" ref="a6835ba87275d0ec02a5ffbcc5c800b05" args="(ID3_TagType tt) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::HasTagType </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a>&nbsp;</td>
          <td class="paramname"> <em>tt</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00936">936</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a803c9b22df40b44acab45d106a80fdfc"></a><!-- doxytag: member="ID3_Tag::HasV1Tag" ref="a803c9b22df40b44acab45d106a80fdfc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::HasV1Tag </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01014">1014</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aaf0eb3f834d8daa509eec0b163e8708c"></a><!-- doxytag: member="ID3_Tag::HasV2Tag" ref="aaf0eb3f834d8daa509eec0b163e8708c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::HasV2Tag </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01010">1010</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a74b5b1d4a3ac3f1d39b1d21d2adac988"></a><!-- doxytag: member="ID3_Tag::IsV2Tag" ref="a74b5b1d4a3ac3f1d39b1d21d2adac988" args="(ID3_Reader &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::IsV2Tag </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>reader</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00961">961</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="abeaf68b668a689f2ce50094131b9183b"></a><!-- doxytag: member="ID3_Tag::IsV2Tag" ref="abeaf68b668a689f2ce50094131b9183b" args="(const uchar *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::IsV2Tag </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Analyses a buffer to determine if we have a valid ID3v2 tag header. </p>
<p>If so, return the total number of bytes (including the header) to read so we get all of the tag </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00955">955</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="af95a4ceea9d82dcb28c45dbf9f8788af"></a><!-- doxytag: member="ID3_Tag::Link" ref="af95a4ceea9d82dcb28c45dbf9f8788af" args="(const char *fileInfo, bool parseID3v1, bool parseLyrics3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Link </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fileInfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>parseID3v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>parseLyrics3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00996">996</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a790a452e26506217bb13c5d49b60be14"></a><!-- doxytag: member="ID3_Tag::Link" ref="a790a452e26506217bb13c5d49b60be14" args="(ID3_Reader &amp;reader, flags_t=(flags_t) ID3TT_ALL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>reader</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>)&nbsp;ID3TT_ALL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Same as above, but takes a <a class="el" href="class_i_d3___reader.html">ID3_Reader</a> as argument. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00712">712</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="abd5f6a802f6fca6ec4687533de031bed"></a><!-- doxytag: member="ID3_Tag::Link" ref="abd5f6a802f6fca6ec4687533de031bed" args="(const char *fileInfo, flags_t=(flags_t) ID3TT_ALL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Link </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fileInfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>)&nbsp;ID3TT_ALL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Attaches a file to the tag, parses the file, and adds any tag information found in the file to the tag. </p>
<p>Use this method if you created your <a class="el" href="class_i_d3___tag.html" title="The representative class of an id3 tag.">ID3_Tag</a> object without supplying a parameter to the constructor (maybe you created an array of <a class="el" href="class_i_d3___tag.html" title="The representative class of an id3 tag.">ID3_Tag</a> pointers). This is the preferred method of interacting with files, since id3lib can automatically do things like parse foreign tag formats and handle padding when linked to a file. When a tag is linked to a file, you do not need to use the <a class="el" href="class_i_d3___tag.html#a8da50449a6e1012f497ef2c285fc3089" title="Returns an over estimate of the number of bytes required to store a binary version...">Size()</a>, Render(const uchar*, size_t), or <a class="el" href="class_i_d3___tag.html#a12e3366fdda75e8a144e20b243d38554">Parse(ID3_Reader&amp;)</a> methods or the <a class="el" href="class_i_d3___tag.html#a74b5b1d4a3ac3f1d39b1d21d2adac988" title="Deprecated.">IsV2Tag(ID3_Reader&amp;)</a> static function-- id3lib will take care of those details for you. The single parameter is a pointer to a file name.</p>
<p>Link returns the size of the the ID3v2 tag (if any) that begins the file.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___tag.html" title="The representative class of an id3 tag.">ID3_Tag</a> myTag;
   myTag.<a class="code" href="class_i_d3___tag.html#abd5f6a802f6fca6ec4687533de031bed" title="Attaches a file to the tag, parses the file, and adds any tag information found in...">Link</a>(<span class="stringliteral">&quot;mysong.mp3&quot;</span>);

   <span class="comment">// do whatever we want with the tag</span>
   <span class="comment">// ...</span>

   <span class="comment">// setup all our rendering parameters</span>
   myTag-&gt;<a class="code" href="class_i_d3___tag.html#a9018b800f8d0a59185d89c15077cec4c" title="Turns unsynchronization on or off, dependant on the value of the boolean parameter...">SetUnsync</a>(<span class="keyword">false</span>);
   myTag-&gt;<a class="code" href="class_i_d3___tag.html#ab204dfa865279652a34a41c2171c69c5" title="Turns extended header rendering on or off, dependant on the value of the boolean...">SetExtendedHeader</a>(<span class="keyword">true</span>);
   myTag-&gt;<a class="code" href="class_i_d3___tag.html#a163ae862d97c15831d5d34429e4e42f0" title="Deprecated.">SetCompression</a>(<span class="keyword">true</span>);
   myTag-&gt;<a class="code" href="class_i_d3___tag.html#a170e2dcfbb8bd217dfce1f33aecb4501" title="Turns padding on or off, dependant on the value of the boolean parameter.">SetPadding</a>(<span class="keyword">true</span>);

   <span class="comment">// write any changes to the file</span>
   myTag-&gt;<a class="code" href="class_i_d3___tag.html#a568548096a28d9cf05d1d772b97540a0">Update</a>()
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___tag.html#abeaf68b668a689f2ce50094131b9183b" title="Analyses a buffer to determine if we have a valid ID3v2 tag header.">IsV2Tag</a> </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fileInfo</em>&nbsp;</td><td>The filename of the file to link to. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00704">704</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ab7fb08aebef7b5f3532bb98fcca94789"></a><!-- doxytag: member="ID3_Tag::NumFrames" ref="ab7fb08aebef7b5f3532bb98fcca94789" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::NumFrames </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of frames present in the tag object. </p>
<p>This includes only those frames that id3lib recognises. This is used as the upper bound on calls to the GetFrame() and operator[]() methods.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The number of frames present in the tag object. </dd></dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00868">868</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ad6636fc2d107312609266a10c38adcfe"></a><!-- doxytag: member="ID3_Tag::operator&lt;&lt;" ref="ad6636fc2d107312609266a10c38adcfe" args="(const ID3_Frame *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp; ID3_Tag::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01045">1045</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ac74d4752c81d898abc947e6a0026cd9f"></a><!-- doxytag: member="ID3_Tag::operator&lt;&lt;" ref="ac74d4752c81d898abc947e6a0026cd9f" args="(const ID3_Frame &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp; ID3_Tag::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01038">1038</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a740838c66f36f5c22afd90f450823d1b"></a><!-- doxytag: member="ID3_Tag::operator=" ref="a740838c66f36f5c22afd90f450823d1b" args="(const ID3_Tag &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp; ID3_Tag::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___tag.html">ID3_Tag</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rTag</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00927">927</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a7b6afcc149a7a49b52cf8435bd69bf13"></a><!-- doxytag: member="ID3_Tag::Parse" ref="a7b6afcc149a7a49b52cf8435bd69bf13" args="(const uchar header[(10)], const uchar *buffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Parse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a>&nbsp;</td>
          <td class="paramname"> <em>header</em>[(10)], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *&nbsp;</td>
          <td class="paramname"> <em>buffer</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a12e3366fdda75e8a144e20b243d38554"></a><!-- doxytag: member="ID3_Tag::Parse" ref="a12e3366fdda75e8a144e20b243d38554" args="(ID3_Reader &amp;reader)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::Parse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___reader.html">ID3_Reader</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>reader</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00552">552</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a9c721743131858720f074401a6e07b0f"></a><!-- doxytag: member="ID3_Tag::Parse" ref="a9c721743131858720f074401a6e07b0f" args="(const uchar *, size_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Parse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bytes</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00557">557</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ae21522e16cb899c5cd1c42d8f7fdfad9"></a><!-- doxytag: member="ID3_Tag::RemoveFrame" ref="ae21522e16cb899c5cd1c42d8f7fdfad9" args="(const ID3_Frame *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_i_d3___frame.html">ID3_Frame</a> * ID3_Tag::RemoveFrame </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_i_d3___frame.html">ID3_Frame</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removes a frame from the tag. </p>
<p>If you already own the frame object in question, then you should already have a pointer to the frame you want to delete. If not, or if you wish to delete a pre-existing frame (from a tag you have parsed, for example), the use one of the Find methods to obtain a frame pointer to pass to this method.</p>
<div class="fragment"><pre class="fragment">   <a class="code" href="class_i_d3___frame.html" title="The representative class of an id3v2 frame.">ID3_Frame</a> *someFrame;
   <span class="keywordflow">if</span> (someFrame = myTag.<a class="code" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">Find</a>(<a class="code" href="globals_8h.html#a78f454bf66f16b1e1c9f8e37bda9ab8aaf7e8a066a7c9debd6dfd742cfb5a080b" title="Title/songname/content description.">ID3FID_TITLE</a>))
   {
     myTag.<a class="code" href="class_i_d3___tag.html#ae21522e16cb899c5cd1c42d8f7fdfad9" title="Removes a frame from the tag.">RemoveFrame</a>(someFrame);
   }
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___tag.html#aad2a8e5a801bc09eac967d24ff3539c3" title="Finds frame with given frame id, fld id, and integer data.">ID3_Tag::Find</a> </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pOldFrame</em>&nbsp;</td><td>A pointer to the frame that is to be removed from the tag </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00547">547</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3bbdeb56c5ac9da37f923345e944a188"></a><!-- doxytag: member="ID3_Tag::Render" ref="a3bbdeb56c5ac9da37f923345e944a188" args="(ID3_Writer &amp;, ID3_TagType=ID3TT_ID3V2) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Render </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_i_d3___writer.html">ID3_Writer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>writer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a>&nbsp;</td>
          <td class="paramname"> <em>tt</em> = <code>ID3TT_ID3V2</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00653">653</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa0c457802a29e1cfca0518697041a684"></a><!-- doxytag: member="ID3_Tag::Render" ref="aa0c457802a29e1cfca0518697041a684" args="(uchar *, ID3_TagType=ID3TT_ID3V2) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Render </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348">ID3_TagType</a>&nbsp;</td>
          <td class="paramname"> <em>tt</em> = <code>ID3TT_ID3V2</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Renders the tag and writes it to the attached file; the type of tag rendered can be specified as a parameter. </p>
<p>The default is to update only the ID3v2 tag. See the ID3_TagType enumeration for the constants that can be used.</p>
<p>Make sure the rendering parameters are set before calling the method. See the Link documentation for an example of this method in use.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348" title="The various types of tags that id3lib can handle.">ID3_TagType</a> </dd>
<dd>
<a class="el" href="class_i_d3___tag.html#abd5f6a802f6fca6ec4687533de031bed" title="Attaches a file to the tag, parses the file, and adds any tag information found in...">Link</a> </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tt</em>&nbsp;</td><td>The type of tag to update. Renders a binary image of the tag into the supplied buffer.</td></tr>
  </table>
  </dd>
</dl>
<p>See <a class="el" href="class_i_d3___tag.html#a8da50449a6e1012f497ef2c285fc3089" title="Returns an over estimate of the number of bytes required to store a binary version...">Size()</a> for an example. This method returns the actual number of the bytes of the buffer used to store the tag. This will be no more than the size of the buffer itself, because <a class="el" href="class_i_d3___tag.html#a8da50449a6e1012f497ef2c285fc3089" title="Returns an over estimate of the number of bytes required to store a binary version...">Size()</a> over estimates the required buffer size when padding is enabled.</p>
<p>Before calling this method, it is advisable to call <a class="el" href="class_i_d3___tag.html#a08cde02eb3fff5b44f474ff531466fd0" title="Indicates whether the tag has been altered since the last parse, render, or update...">HasChanged()</a> first as this will let you know whether you should bother rendering the tag.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="tag_8h.html#aded0350bb5067b076600cf1b5640cfdb">ID3_IsTagHeader</a> </dd>
<dd>
<a class="el" href="class_i_d3___tag.html#a08cde02eb3fff5b44f474ff531466fd0" title="Indicates whether the tag has been altered since the last parse, render, or update...">ID3_Tag::HasChanged</a> </dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The actual number of the bytes of the buffer used to store the tag </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>The buffer that will contain the rendered tag. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00647">647</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a163ae862d97c15831d5d34429e4e42f0"></a><!-- doxytag: member="ID3_Tag::SetCompression" ref="a163ae862d97c15831d5d34429e4e42f0" args="(bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ID3_Tag::SetCompression </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l01001">1001</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a10e2f553c2dd030622fd8f6b83b4934f"></a><!-- doxytag: member="ID3_Tag::SetExperimental" ref="a10e2f553c2dd030622fd8f6b83b4934f" args="(bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::SetExperimental </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>exp</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00458">458</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ab204dfa865279652a34a41c2171c69c5"></a><!-- doxytag: member="ID3_Tag::SetExtendedHeader" ref="ab204dfa865279652a34a41c2171c69c5" args="(bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::SetExtendedHeader </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>ext</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Turns extended header rendering on or off, dependant on the value of the boolean parameter. </p>
<p>This option is currently ignored as id3lib doesn't yet create extended headers. This option only applies when rendering tags for ID3v2 versions that support extended headers.</p>
<div class="fragment"><pre class="fragment">   myTag.<a class="code" href="class_i_d3___tag.html#ab204dfa865279652a34a41c2171c69c5" title="Turns extended header rendering on or off, dependant on the value of the boolean...">SetExtendedHeader</a>(<span class="keyword">true</span>);
</pre></div><dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bExt</em>&nbsp;</td><td>Whether to render an extended header </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00419">419</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a170e2dcfbb8bd217dfce1f33aecb4501"></a><!-- doxytag: member="ID3_Tag::SetPadding" ref="a170e2dcfbb8bd217dfce1f33aecb4501" args="(bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::SetPadding </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>pad</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Turns padding on or off, dependant on the value of the boolean parameter. </p>
<p>When using ID3v2 tags in association with files, id3lib can optionally add padding to the tags to ensure minmal file write times when updating the tag in the future.</p>
<p>When the padding option is switched on, id3lib automatically creates padding according to the 'ID3v2 Programming Guidelines'. Specifically, enough padding will be added to round out the entire file (song plus tag) to an even multiple of 2K. Padding will only be created when the tag is attached to a file and that file is not empty (aside from a pre-existing tag).</p>
<p>id3lib's addition to the guidelines for padding, is that if frames are removed from a pre-existing tag (or the tag simply shrinks because of other reasons), the new tag will continue to stay the same size as the old tag (with padding making the difference of course) until such time as the padding is greater than 4K. When this happens, the padding will be reduced and the new tag will be smaller than the old.</p>
<p>By default, padding is switched on.</p>
<div class="fragment"><pre class="fragment">   myTag.<a class="code" href="class_i_d3___tag.html#a170e2dcfbb8bd217dfce1f33aecb4501" title="Turns padding on or off, dependant on the value of the boolean parameter.">SetPadding</a>(<span class="keyword">false</span>);
</pre></div><dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bPad</em>&nbsp;</td><td>Whether or not render the tag with padding. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00453">453</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="adb08a9c5db44f82b2b07232570d0d17a"></a><!-- doxytag: member="ID3_Tag::SetSpec" ref="adb08a9c5db44f82b2b07232570d0d17a" args="(ID3_V2Spec)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::SetSpec </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#a48b13eb6cb3c520195901516dee1e612">ID3_V2Spec</a>&nbsp;</td>
          <td class="paramname"> <em>spec</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deprecated. </p>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00946">946</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a9018b800f8d0a59185d89c15077cec4c"></a><!-- doxytag: member="ID3_Tag::SetUnsync" ref="a9018b800f8d0a59185d89c15077cec4c" args="(bool)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ID3_Tag::SetUnsync </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Turns unsynchronization on or off, dependant on the value of the boolean parameter. </p>
<p>If you call this method with 'false' as the parameter, the binary tag will not be unsync'ed, regardless of whether the tag should be. This option is useful when the file is only going to be used by ID3v2-compliant software. See the ID3v2 standard document for futher details on unsync.</p>
<p>Be default, tags are created without unsync.</p>
<div class="fragment"><pre class="fragment">   myTag.<a class="code" href="class_i_d3___tag.html#a9018b800f8d0a59185d89c15077cec4c" title="Turns unsynchronization on or off, dependant on the value of the boolean parameter...">SetUnsync</a>(<span class="keyword">false</span>);
</pre></div><dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bSync</em>&nbsp;</td><td>Whether the tag should be unsynchronized </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00400">400</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a8da50449a6e1012f497ef2c285fc3089"></a><!-- doxytag: member="ID3_Tag::Size" ref="a8da50449a6e1012f497ef2c285fc3089" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ID3_Tag::Size </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns an over estimate of the number of bytes required to store a binary version of a tag. </p>
<p>When using <a class="el" href="class_i_d3___tag.html#aa0c457802a29e1cfca0518697041a684" title="Renders the tag and writes it to the attached file; the type of tag rendered can...">Render()</a> to render a binary tag to a memory buffer, first use the result of this call to allocate a buffer of unsigned chars.</p>
<div class="fragment"><pre class="fragment">   <span class="keywordflow">if</span> (myTag.<a class="code" href="class_i_d3___tag.html#a08cde02eb3fff5b44f474ff531466fd0" title="Indicates whether the tag has been altered since the last parse, render, or update...">HasChanged</a>())
   {
     <span class="keywordtype">size_t</span> tagSize; = myTag.<a class="code" href="class_i_d3___tag.html#a8da50449a6e1012f497ef2c285fc3089" title="Returns an over estimate of the number of bytes required to store a binary version...">Size</a>();
     <span class="keywordflow">if</span> (tagSize &gt; 0)
     {
       <a class="code" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *buffer = <span class="keyword">new</span> <a class="code" href="globals_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a>[tagSize];
       <span class="keywordflow">if</span> (<a class="code" href="globals_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a> != buffer)
       {
         <span class="keywordtype">size_t</span> actualSize = myTag.<a class="code" href="class_i_d3___tag.html#aa0c457802a29e1cfca0518697041a684" title="Renders the tag and writes it to the attached file; the type of tag rendered can...">Render</a>(buffer);
         <span class="comment">// do something useful with the first</span>
         <span class="comment">// &#39;actualSize&#39; bytes of the buffer,</span>
         <span class="comment">// like push it down a socket</span>
         <span class="keyword">delete</span> [] buffer;
       }
     }
   }
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_d3___tag.html#aa0c457802a29e1cfca0518697041a684" title="Renders the tag and writes it to the attached file; the type of tag rendered can...">Render</a> </dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The (overestimated) number of bytes required to store a binary version of a tag </dd></dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00378">378</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a19cfedd73d6859e911a45544f1eed35f"></a><!-- doxytag: member="ID3_Tag::Strip" ref="a19cfedd73d6859e911a45544f1eed35f" args="(flags_t=(flags_t) ID3TT_ALL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a> ID3_Tag::Strip </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>)&nbsp;ID3TT_ALL</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Strips the tag(s) from the attached file. </p>
<p>The type of tag stripped can be specified as a parameter. The default is to strip all tag types.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tt</em>&nbsp;</td><td>The type of tag to strip </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="globals_8h.html#a2d783dffbb1bb13e23080984b277b348" title="The various types of tags that id3lib can handle.">ID3_TagType</a> </dd></dl>

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00738">738</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a568548096a28d9cf05d1d772b97540a0"></a><!-- doxytag: member="ID3_Tag::Update" ref="a568548096a28d9cf05d1d772b97540a0" args="(flags_t=(flags_t) ID3TT_ALL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a> ID3_Tag::Update </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>(<a class="el" href="globals_8h.html#ab20eda11df95fbb997872386ec0d6004">flags_t</a>)&nbsp;ID3TT_ALL</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="tag_8cpp_source.html#l00717">717</a> of file <a class="el" href="tag_8cpp_source.html">tag.cpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/id3/<a class="el" href="tag_8h_source.html">tag.h</a></li>
<li>src/<a class="el" href="tag_8cpp_source.html">tag.cpp</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jan 12 23:46:36 2011 for id3lib by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>