<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>src/field_impl.h Source File</title> <link href="id3lib.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.12 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> <hr><h1>src/field_impl.h</h1><a href="field__impl_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// -*- C++ -*- </font> 00002 <font class="comment">// $Id: field_impl.h,v 1.2 2001/08/07 11:58:23 shadrack Exp $</font> 00003 00004 <font class="comment">// id3lib: a C++ library for creating and manipulating id3v1/v2 tags</font> 00005 <font class="comment">// Copyright 1999, 2000 Scott Thomas Haug</font> 00006 00007 <font class="comment">// This library is free software; you can redistribute it and/or modify it</font> 00008 <font class="comment">// under the terms of the GNU Library General Public License as published by</font> 00009 <font class="comment">// the Free Software Foundation; either version 2 of the License, or (at your</font> 00010 <font class="comment">// option) any later version.</font> 00011 <font class="comment">//</font> 00012 <font class="comment">// This library is distributed in the hope that it will be useful, but WITHOUT</font> 00013 <font class="comment">// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</font> 00014 <font class="comment">// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public</font> 00015 <font class="comment">// License for more details.</font> 00016 <font class="comment">//</font> 00017 <font class="comment">// You should have received a copy of the GNU Library General Public License</font> 00018 <font class="comment">// along with this library; if not, write to the Free Software Foundation,</font> 00019 <font class="comment">// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</font> 00020 00021 <font class="comment">// The id3lib authors encourage improvements and optimisations to be sent to</font> 00022 <font class="comment">// the id3lib coordinator. Please see the README file for details on where to</font> 00023 <font class="comment">// send such submissions. See the AUTHORS file for a list of people who have</font> 00024 <font class="comment">// contributed to id3lib. See the ChangeLog file for a list of changes to</font> 00025 <font class="comment">// id3lib. These files are distributed with id3lib at</font> 00026 <font class="comment">// http://download.sourceforge.net/id3lib/</font> 00027 00028 <font class="preprocessor">#ifndef _ID3LIB_FIELD_IMPL_H_</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#define _ID3LIB_FIELD_IMPL_H_</font> 00030 <font class="preprocessor"></font> 00031 <font class="preprocessor">#include <stdlib.h></font> 00032 <font class="preprocessor">#include "<a class="code" href="field_8h.html">field.h</a>"</font> 00033 <font class="preprocessor">#include "strings.h"</font> 00034 00035 <font class="keyword">struct </font><a class="code" href="struct_i_d3___field_def.html">ID3_FieldDef</a>; 00036 <font class="keyword">struct </font><a class="code" href="struct_i_d3___frame_def.html">ID3_FrameDef</a>; 00037 <font class="keyword">class </font><a class="code" href="class_i_d3___frame.html">ID3_Frame</a>; 00038 <font class="keyword">class </font><a class="code" href="class_i_d3___reader.html">ID3_Reader</a>; 00039 <a name="l00040"></a><a class="code" href="class_i_d3___field_impl.html">00040</a> <font class="keyword">class </font><a class="code" href="class_i_d3___field_impl.html">ID3_FieldImpl</a> : <font class="keyword">public</font> <a class="code" href="class_i_d3___field.html">ID3_Field</a> 00041 { <a name="l00042"></a><a class="code" href="class_i_d3___field_impl.html#l0">00042</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_i_d3___frame_impl.html">ID3_FrameImpl</a>; 00043 <font class="keyword">public</font>: 00044 <a class="code" href="class_i_d3___field_impl.html#a0">~ID3_FieldImpl</a>(); 00045 00046 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a1">Clear</a>(); 00047 00048 size_t <a class="code" href="class_i_d3___field_impl.html#a2">Size</a>() <font class="keyword">const</font>; 00049 size_t <a class="code" href="class_i_d3___field_impl.html#a3">BinSize</a>() <font class="keyword">const</font>; 00050 size_t <a class="code" href="class_i_d3___field_impl.html#a4">GetNumTextItems</a>() <font class="keyword">const</font>; 00051 00052 <font class="comment">// integer field functions</font> <a name="l00053"></a><a class="code" href="class_i_d3___field_impl.html#a5">00053</a> <a class="code" href="class_i_d3___field.html">ID3_Field</a>& <a class="code" href="class_i_d3___field_impl.html#a5">operator= </a>(<a class="code" href="sized__types_8h.html#a4">uint32</a> val) { this-><a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(val); <font class="keywordflow">return</font> *<font class="keyword">this</font>; } 00054 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(<a class="code" href="sized__types_8h.html#a4">uint32</a>); 00055 <a class="code" href="sized__types_8h.html#a4">uint32</a> <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>() <font class="keyword">const</font>; 00056 00057 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a8">SetInteger</a>(<a class="code" href="sized__types_8h.html#a4">uint32</a>); 00058 <a class="code" href="sized__types_8h.html#a4">uint32</a> <a class="code" href="class_i_d3___field_impl.html#a9">GetInteger</a>() <font class="keyword">const</font>; 00059 00060 <font class="comment">// ASCII string field functions</font> <a name="l00061"></a><a class="code" href="class_i_d3___field_impl.html#a10">00061</a> <a class="code" href="class_i_d3___field.html">ID3_Field</a>& <a class="code" href="class_i_d3___field_impl.html#a5">operator= </a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* s) { this-><a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(s); <font class="keywordflow">return</font> *<font class="keyword">this</font>; } 00062 size_t <a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* data); 00063 size_t <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>(<font class="keywordtype">char</font>*, size_t) <font class="keyword">const</font>; 00064 size_t <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>(<font class="keywordtype">char</font>*, size_t, <a class="code" href="globals_8h.html#a7">index_t</a>) <font class="keyword">const</font>; 00065 <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___field_impl.html#a14">GetRawText</a>() <font class="keyword">const</font>; 00066 <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_i_d3___field_impl.html#a15">GetRawTextItem</a>(<a class="code" href="globals_8h.html#a7">index_t</a>) <font class="keyword">const</font>; 00067 size_t <a class="code" href="class_i_d3___field_impl.html#a16">Add</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* data); 00068 00069 dami::String <a class="code" href="class_i_d3___field_impl.html#a17">GetText</a>() <font class="keyword">const</font>; 00070 dami::String <a class="code" href="class_i_d3___field_impl.html#a18">GetTextItem</a>(<a class="code" href="globals_8h.html#a7">index_t</a>) <font class="keyword">const</font>; 00071 size_t <a class="code" href="class_i_d3___field_impl.html#a19">SetText</a>(dami::String); 00072 size_t <a class="code" href="class_i_d3___field_impl.html#a20">AddText</a>(dami::String); 00073 00074 <font class="comment">// Unicode string field functions</font> <a name="l00075"></a><a class="code" href="class_i_d3___field_impl.html#a21">00075</a> <a class="code" href="class_i_d3___field.html">ID3_Field</a>& <a class="code" href="class_i_d3___field_impl.html#a5">operator= </a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a>* s) { this-><a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(s); <font class="keywordflow">return</font> *<font class="keyword">this</font>; } 00076 size_t <a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a>*); 00077 size_t <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>(<a class="code" href="globals_8h.html#a39">unicode_t</a> *buffer, size_t) <font class="keyword">const</font>; 00078 size_t <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>(<a class="code" href="globals_8h.html#a39">unicode_t</a> *buffer, size_t, <a class="code" href="globals_8h.html#a7">index_t</a>) <font class="keyword">const</font>; 00079 size_t <a class="code" href="class_i_d3___field_impl.html#a16">Add</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a>*); 00080 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a>* <a class="code" href="class_i_d3___field_impl.html#a26">GetRawUnicodeText</a>() <font class="keyword">const</font>; 00081 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a39">unicode_t</a>* <a class="code" href="class_i_d3___field_impl.html#a27">GetRawUnicodeTextItem</a>(<a class="code" href="globals_8h.html#a7">index_t</a>) <font class="keyword">const</font>; 00082 00083 <font class="comment">// binary field functions</font> 00084 size_t <a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(<font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a>* buf, size_t size); <a name="l00085"></a><a class="code" href="class_i_d3___field_impl.html#a29">00085</a> size_t <a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* buf, size_t size) 00086 { 00087 <font class="keywordflow">return</font> this-><a class="code" href="class_i_d3___field_impl.html#a6">Set</a>(reinterpret_cast<const uchar *>(buf), size); 00088 } 00089 size_t <a class="code" href="class_i_d3___field_impl.html#a7">Get</a>(<a class="code" href="globals_8h.html#a33">uchar</a>*, size_t) <font class="keyword">const</font>; 00090 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a33">uchar</a>* <a class="code" href="class_i_d3___field_impl.html#a31">GetRawBinary</a>() <font class="keyword">const</font>; 00091 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a32">FromFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*); 00092 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a33">ToFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *sInfo) <font class="keyword">const</font>; 00093 00094 size_t <a class="code" href="class_i_d3___field_impl.html#a34">SetBinary</a>(dami::BString); 00095 dami::BString <a class="code" href="class_i_d3___field_impl.html#a35">GetBinary</a>() <font class="keyword">const</font>; 00096 00097 <font class="comment">// miscelaneous functions</font> 00098 <a class="code" href="class_i_d3___field.html">ID3_Field</a>& <a class="code" href="class_i_d3___field_impl.html#a5">operator=</a>( <font class="keyword">const</font> <a class="code" href="class_i_d3___field.html">ID3_Field</a> & ); <a name="l00099"></a><a class="code" href="class_i_d3___field_impl.html#a37">00099</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#a37">InScope</a>(<a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> spec)<font class="keyword"> const</font> 00100 <font class="keyword"> </font>{ <font class="keywordflow">return</font> _spec_begin <= spec && spec <= _spec_end; } 00101 <a name="l00102"></a><a class="code" href="class_i_d3___field_impl.html#a38">00102</a> <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> <a class="code" href="class_i_d3___field_impl.html#a38">GetID</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _id; } <a name="l00103"></a><a class="code" href="class_i_d3___field_impl.html#a39">00103</a> <a class="code" href="globals_8h.html#a222">ID3_FieldType</a> <a class="code" href="class_i_d3___field_impl.html#a39">GetType</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _type; } 00104 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#a40">SetEncoding</a>(<a class="code" href="globals_8h.html#a214">ID3_TextEnc</a> enc); <a name="l00105"></a><a class="code" href="class_i_d3___field_impl.html#a41">00105</a> <a class="code" href="globals_8h.html#a214">ID3_TextEnc</a> <a class="code" href="class_i_d3___field_impl.html#a41">GetEncoding</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _enc; } <a name="l00106"></a><a class="code" href="class_i_d3___field_impl.html#a42">00106</a> <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#a42">IsEncodable</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> (_flags & <a class="code" href="globals_8h.html#a221a184">ID3FF_ENCODABLE</a>) > 0; } 00107 00108 00109 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#a43">Render</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>&) <font class="keyword">const</font>; 00110 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#a44">Parse</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&); 00111 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#a45">HasChanged</a>() <font class="keyword">const</font>; 00112 00113 <font class="keyword">private</font>: 00114 size_t SetText_i(dami::String); 00115 size_t AddText_i(dami::String); 00116 00117 <font class="keyword">private</font>: 00118 <font class="comment">// To prevent public instantiation, the constructor is made private</font> 00119 <a class="code" href="class_i_d3___field_impl.html">ID3_FieldImpl</a>(); 00120 <a class="code" href="class_i_d3___field_impl.html">ID3_FieldImpl</a>(<font class="keyword">const</font> <a class="code" href="struct_i_d3___field_def.html">ID3_FieldDef</a>&); 00121 00122 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a218">ID3_FieldID</a> _id; <font class="comment">// the ID of this field</font> 00123 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a222">ID3_FieldType</a> _type; <font class="comment">// what type is this field or should be</font> 00124 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> _spec_begin; <font class="comment">// spec end</font> 00125 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a216">ID3_V2Spec</a> _spec_end; <font class="comment">// spec begin</font> 00126 <font class="keyword">const</font> <a class="code" href="globals_8h.html#a40">flags_t</a> _flags; <font class="comment">// special field flags</font> 00127 <font class="keyword">mutable</font> <font class="keywordtype">bool</font> _changed; <font class="comment">// field changed since last parse/render?</font> 00128 00129 dami::BString _binary; <font class="comment">// for binary strings</font> 00130 dami::String _text; <font class="comment">// for ascii strings</font> 00131 <a class="code" href="sized__types_8h.html#a4">uint32</a> _integer; <font class="comment">// for numbers</font> 00132 00133 <font class="keyword">const</font> size_t _fixed_size; <font class="comment">// for fixed length fields (0 if not)</font> 00134 size_t _num_items; <font class="comment">// the number of items in the text string</font> 00135 <a class="code" href="globals_8h.html#a214">ID3_TextEnc</a> _enc; <font class="comment">// encoding for text fields</font> 00136 <font class="keyword">protected</font>: 00137 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#b0">RenderInteger</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>&) <font class="keyword">const</font>; 00138 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#b1">RenderText</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>&) <font class="keyword">const</font>; 00139 <font class="keywordtype">void</font> <a class="code" href="class_i_d3___field_impl.html#b2">RenderBinary</a>(<a class="code" href="class_i_d3___writer.html">ID3_Writer</a>&) <font class="keyword">const</font>; 00140 00141 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#b3">ParseInteger</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&); 00142 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#b4">ParseText</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&); 00143 <font class="keywordtype">bool</font> <a class="code" href="class_i_d3___field_impl.html#b5">ParseBinary</a>(<a class="code" href="class_i_d3___reader.html">ID3_Reader</a>&); 00144 00145 }; 00146 00147 00148 <font class="comment">// Ack! Not for public use</font> 00149 <a class="code" href="struct_i_d3___frame_def.html">ID3_FrameDef</a> *<a class="code" href="field__impl_8h.html#a19">ID3_FindFrameDef</a>(<a class="code" href="globals_8h.html#a219">ID3_FrameID</a> id); 00150 <a class="code" href="globals_8h.html#a219">ID3_FrameID</a> <a class="code" href="field__impl_8h.html#a20">ID3_FindFrameID</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *id); 00151 00152 <font class="preprocessor">#endif </font><font class="comment">/* _ID3LIB_FIELD_H_ */</font> </pre></div><hr><address><small>Generated on Thu Jan 3 07:35:55 2002 for id3lib by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.gif" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.12 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2001</small></address> </body> </html>