29#include "io_helpers.h"
51 len = this->SetText_i(str);
92 buffer !=
NULL && maxLength > 0)
96 ::memcpy(buffer, data.data(), size);
111 buf !=
NULL && maxLen > 0)
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;
294 return io::readText(reader, len);
296 return io::readUnicodeText(reader, len);
303 return io::readString(reader);
305 return io::readUnicodeString(reader);
312 return io::writeText(writer, data);
314 return io::writeUnicodeText(writer, data);
321 return io::writeString(writer, data);
323 return io::writeUnicodeString(writer, data);
329 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getBeg() = " << reader.
getBeg() );
330 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getCur() = " << reader.
getCur() );
331 ID3D_NOTICE(
"ID3_Field::ParseText(): reader.getEnd() = " << reader.
getEnd() );
335 size_t fixed_size = this->
Size();
338 ID3D_NOTICE(
"ID3_Field::ParseText(): fixed size string" );
340 String text = readEncodedText(reader, fixed_size, enc);
342 ID3D_NOTICE(
"ID3_Field::ParseText(): fixed size string = " << text );
346 ID3D_NOTICE(
"ID3_Field::ParseText(): text list" );
349 while (!reader.
atEnd())
351 String text = readEncodedString(reader, enc);
353 ID3D_NOTICE(
"ID3_Field::ParseText(): adding string = " << text );
358 ID3D_NOTICE(
"ID3_Field::ParseText(): null terminated string" );
359 String text = readEncodedString(reader, enc);
361 ID3D_NOTICE(
"ID3_Field::ParseText(): null terminated string = " << text );
365 ID3D_NOTICE(
"ID3_Field::ParseText(): last field string" );
366 String text = readEncodedText(reader, reader.
remainingBytes(), enc);
369 ID3D_NOTICE(
"ID3_Field::ParseText(): last field string = " << text );
382 writeEncodedString(writer, _text, enc);
386 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.
ID3_TextEnc
Enumeration of the types of text encodings: ascii or unicode.
const T & min(const T &a, const T &b)