Add UTF16LE support. Patch mostly by Umesh Shankar.

BUG:106815


git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@437399 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
Scott Wheeler 2005-07-21 18:45:12 +00:00
parent 366a4bfe3f
commit 016a2c7b03
2 changed files with 26 additions and 4 deletions

View File

@ -83,7 +83,7 @@ String::String(const std::string &s, Type t)
{
d = new StringPrivate;
if(t == UTF16 || t == UTF16BE) {
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
debug("String::String() -- A std::string should not contain UTF16.");
return;
}
@ -116,7 +116,7 @@ String::String(const char *s, Type t)
{
d = new StringPrivate;
if(t == UTF16 || t == UTF16BE) {
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
debug("String::String() -- A const char * should not contain UTF16.");
return;
}
@ -145,7 +145,7 @@ String::String(char c, Type t)
{
d = new StringPrivate;
if(t == UTF16 || t == UTF16BE) {
if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
debug("String::String() -- A std::string should not contain UTF16.");
return;
}
@ -378,6 +378,18 @@ ByteVector String::data(Type t) const
}
break;
}
case UTF16LE:
{
for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++) {
char c1 = *it & 0xff;
char c2 = *it >> 8;
v.append(c1);
v.append(c2);
}
break;
}
}
return v;
@ -686,6 +698,12 @@ void String::prepare(Type t)
delete [] sourceBuffer;
delete [] targetBuffer;
}
case UTF16LE:
{
for(uint i = 0; i < d->data.size(); i++)
d->data[i] = byteSwap((unsigned short)d->data[i]);
break;
}
default:
break;
}

View File

@ -90,7 +90,11 @@ namespace TagLib {
/*!
* UTF8 encoding. Characters are usually 8 bits but can be up to 32.
*/
UTF8 = 3
UTF8 = 3,
/*!
* UTF16 <i>little endian</i>. 16 bit characters.
*/
UTF16LE = 4
};
/*!