29#include "io_helpers.h"
51 len = this->SetText_i(str);
92 buffer !=
NULL && maxLength > 0)
95 size = dami::min(maxLength, data.size());
96 ::memcpy(buffer, data.data(), size);
111 buf !=
NULL && maxLen > 0)
114 size = dami::min(maxLen, data.size());
115 ::memcpy(buf, data.data(), size);
151 String getFixed(String data,
size_t size)
153 String text(data, 0, size);
154 if (text.size() < size)
156 text.append(size - text.size(),
'\0');
163size_t ID3_FieldImpl::SetText_i(String data)
168 _text = getFixed(data, _fixed_size);
174 ID3D_NOTICE(
"SetText_i: text = \"" << _text <<
"\"" );
177 if (_text.size() == 0)
194 len = this->SetText_i(data);
213size_t ID3_FieldImpl::AddText_i(String data)
216 ID3D_NOTICE (
"ID3_FieldImpl::AddText_i: Adding \"" << data <<
"\"" );
221 len = this->SetText_i(data);
245 len = this->AddText_i(data);
256 len = this->AddText_i(str);
263 const char* text =
NULL;
267 text = _text.c_str();
274 const char* text =
NULL;
279 text = _text.c_str();
280 for (
size_t i = 0; i < index; ++i)
282 text += strlen(text) + 1;
292 void swapPairs(String& s)
294 for (
size_t i = 0; i + 1 < s.size(); i += 2)
296 char t = s[i]; s[i] = s[i+1]; s[i+1] = t;
304 return io::readText(reader, len);
306 String text = io::readUnicodeText(reader, len);
318 return io::readString(reader);
320 String text = io::readUnicodeString(reader);
332 return io::writeText(writer, data);
335 return io::writeUnicodeText(writer, data, enc !=
ID3TE_UTF16BE);
342 return io::writeString(writer, data);
345 return io::writeUnicodeString(writer, data, enc !=
ID3TE_UTF16BE);
351 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getBeg() = " << reader.
getBeg() );
352 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getCur() = " << reader.
getCur() );
353 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getEnd() = " << reader.
getEnd() );
357 size_t fixed_size = this->
Size();
360 ID3D_NOTICE(
"ID3_Field::ParseText(): fixed size string" );
362 String text = readEncodedText(reader, fixed_size, enc);
364 ID3D_NOTICE(
"ID3_Field::ParseText(): fixed size string = " << text );
368 ID3D_NOTICE(
"ID3_Field::ParseText(): text list" );
371 while (!reader.
atEnd())
373 String text = readEncodedString(reader, enc);
375 ID3D_NOTICE(
"ID3_Field::ParseText(): adding string = " << text );
380 ID3D_NOTICE(
"ID3_Field::ParseText(): null terminated string" );
381 String text = readEncodedString(reader, enc);
383 ID3D_NOTICE(
"ID3_Field::ParseText(): null terminated string = " << text );
387 ID3D_NOTICE(
"ID3_Field::ParseText(): last field string" );
388 String text = readEncodedText(reader, reader.
remainingBytes(), enc);
391 ID3D_NOTICE(
"ID3_Field::ParseText(): last field string = " << text );
404 writeEncodedString(writer, _text, enc);
408 writeEncodedText(writer, _text, enc);
dami::String GetText() const
size_t Add(const char *data)
const char * GetRawTextItem(size_t) const
size_t SetText(dami::String)
void RenderText(ID3_Writer &) const
const char * GetRawText() const
size_t GetNumTextItems() const
Returns the number of items in a text list.
dami::String GetTextItem(size_t) const
size_t AddText(dami::String)
ID3_FieldType GetType() const
void Set(uint32)
Sets the value of the field to the specified integer.
void Clear()
Clears any data and frees any memory associated with the field.
ID3_TextEnc GetEncoding() const
uint32 Get() const
Returns the value of the integer field.
bool ParseText(ID3_Reader &)
size_t Size() const
Returns the size of a field.
virtual pos_type getCur()=0
Return the current position in the reader.
virtual pos_type getEnd()
Return the ending position in the reader.
virtual size_type remainingBytes()
virtual pos_type getBeg()
Return the beginning position in the reader.
#define ID3TE_IS_SINGLE_BYTE_ENC(enc)
ID3_TextEnc
Enumeration of the types of text encodings: ascii or unicode.
#define ID3TE_IS_DOUBLE_BYTE_ENC(enc)