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_IO_HELPERS_H_
00029
#define _ID3LIB_IO_HELPERS_H_
00030
00031
#include "id3/id3lib_strings.h"
00032
#include "reader.h"
00033
#include "writer.h"
00034
00035
namespace dami
00036 {
00037
namespace io
00038 {
00041 class ID3_CPP_EXPORT ExitTrigger
00042 {
00043
ID3_Reader& _reader;
00044 ID3_Reader::pos_type _pos;
00045
bool _locked;
00046
public:
00047 ExitTrigger(
ID3_Reader& rdr)
00048 : _reader(rdr), _pos(rdr.getCur()), _locked(true)
00049 { ; }
00050 ExitTrigger(
ID3_Reader& rdr, ID3_Reader::pos_type pos)
00051 : _reader(rdr), _pos(pos)
00052 { ; }
00053 virtual ~ExitTrigger() {
if (_locked) _reader.setCur(_pos); }
00054
00055 void release() { _locked =
false; }
00056 void update() { _pos = _reader.getCur(); }
00057 void setExitPos(ID3_Reader::pos_type pos) { _pos = pos; }
00058 };
00059
00060
ID3_C_EXPORT String
readString(
ID3_Reader&);
00061
ID3_C_EXPORT String
readText(
ID3_Reader&, size_t);
00062
ID3_C_EXPORT String
readUnicodeString(
ID3_Reader&);
00063
ID3_C_EXPORT String
readUnicodeText(
ID3_Reader&, size_t);
00064
ID3_C_EXPORT BString
readAllBinary(
ID3_Reader&);
00065
ID3_C_EXPORT BString
readBinary(
ID3_Reader&, size_t);
00066
ID3_C_EXPORT uint32
readLENumber(
ID3_Reader&, size_t);
00067
ID3_C_EXPORT uint32
readBENumber(
ID3_Reader&, size_t);
00068
ID3_C_EXPORT String
readTrailingSpaces(
ID3_Reader&, size_t);
00069
ID3_C_EXPORT uint32
readUInt28(
ID3_Reader&);
00070
00071
ID3_C_EXPORT size_t
writeString(
ID3_Writer&, String);
00072
ID3_C_EXPORT size_t
writeText(
ID3_Writer&, String);
00073
ID3_C_EXPORT size_t
writeUnicodeString(
ID3_Writer&, String,
bool =
true);
00074
ID3_C_EXPORT size_t
writeUnicodeText(
ID3_Writer&, String,
bool =
true);
00075
ID3_C_EXPORT size_t
writeBENumber(
ID3_Writer&, uint32 val, size_t);
00076
ID3_C_EXPORT size_t
writeTrailingSpaces(
ID3_Writer&, String, size_t);
00077
ID3_C_EXPORT size_t
writeUInt28(
ID3_Writer&, uint32);
00078 };
00079 };
00080
00081
#endif
00082