00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _ID3LIB_FRAME_H_
00029 #define _ID3LIB_FRAME_H_
00030
00031 #include "id3/globals.h"
00032
00033 class ID3_Field;
00034 class ID3_FrameImpl;
00035 class ID3_Reader;
00036 class ID3_Writer;
00037
00038 class ID3_CPP_EXPORT ID3_Frame
00039 {
00040 ID3_FrameImpl* _impl;
00041 public:
00042
00043 class Iterator
00044 {
00045 public:
00046 virtual ID3_Field* GetNext() = 0;
00047 };
00048
00049 class ConstIterator
00050 {
00051 public:
00052 virtual const ID3_Field* GetNext() = 0;
00053 };
00054
00055 public:
00056 ID3_Frame(ID3_FrameID id = ID3FID_NOFRAME);
00057 ID3_Frame(const ID3_Frame&);
00058
00059 virtual ~ID3_Frame();
00060
00061 void Clear();
00062
00063 bool SetID(ID3_FrameID id);
00064 ID3_FrameID GetID() const;
00065
00066 ID3_Field* GetField(ID3_FieldID name) const;
00067
00068 size_t NumFields() const;
00069
00070 const char* GetDescription() const;
00071 static const char* GetDescription(ID3_FrameID);
00072
00073 const char* GetTextID() const;
00074
00075 ID3_Frame& operator=(const ID3_Frame &);
00076 bool HasChanged() const;
00077 bool Parse(ID3_Reader&);
00078 void Render(ID3_Writer&) const;
00079 size_t Size();
00080 bool Contains(ID3_FieldID fld) const;
00081 bool SetSpec(ID3_V2Spec);
00082 ID3_V2Spec GetSpec() const;
00083
00084 bool SetCompression(bool b);
00085 bool GetCompression() const;
00086 size_t GetDataSize() const;
00087
00088 bool SetEncryptionID(uchar id);
00089 uchar GetEncryptionID() const;
00090
00091 bool SetGroupingID(uchar id);
00092 uchar GetGroupingID() const;
00093
00094 Iterator* CreateIterator();
00095 ConstIterator* CreateIterator() const;
00096
00097
00098 ID3_Field& Field(ID3_FieldID name) const;
00099
00100 };
00101
00102 #endif
00103