28 #include "id3/utils.h"
51 len = this->SetText_i(str);
92 buffer !=
NULL && maxLength > 0)
94 String data = this->GetText();
96 ::memcpy(buffer, data.data(), size);
111 buf !=
NULL && maxLen > 0)
113 String data = this->GetTextItem(index);
115 ::memcpy(buf, data.data(), size);
140 const char* raw = this->GetRawTextItem(index);
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');
163 size_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);
213 size_t ID3_FieldImpl::AddText_i(String data)
216 ID3D_NOTICE (
"ID3_FieldImpl::AddText_i: Adding \"" << data <<
"\"" );
217 if (this->GetNumTextItems() == 0)
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;
277 index < this->GetNumTextItems())
279 text = _text.c_str();
280 for (
size_t i = 0; i < index; ++i)
282 text += strlen(text) + 1;
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);