]> granicus.if.org Git - taglib/commitdiff
Add UTF16LE support. Patch mostly by Umesh Shankar.
authorScott Wheeler <wheeler@kde.org>
Thu, 21 Jul 2005 18:45:12 +0000 (18:45 +0000)
committerScott Wheeler <wheeler@kde.org>
Thu, 21 Jul 2005 18:45:12 +0000 (18:45 +0000)
BUG:106815

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@437399 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

toolkit/tstring.cpp
toolkit/tstring.h

index c6b89218ea79652d177a02df7ab877ba3837176e..16169bbcf7fdc0372c9883f7449d5b9d2205cf3c 100644 (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;
   }
index 6ffd6563024565efc5ac58a7263c8a50157a957f..0d8101084ce344d0ff0db3e7679da396c23cdc39 100644 (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
     };
 
     /*!