[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/taglib/toolkit
From:       Scott Wheeler <wheeler () kde ! org>
Date:       2005-07-21 18:45:16
Message-ID: 1121971516.941475.29090.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 437399 by wheeler:

Add UTF16LE support.  Patch mostly by Umesh Shankar.

BUG:106815


 M  +21 -3     tstring.cpp  
 M  +5 -1      tstring.h  


--- trunk/kdesupport/taglib/toolkit/tstring.cpp #437398:437399
@@ -83,7 +83,7 @@
 {
   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 @@
 {
   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 @@
 {
   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,7 +378,19 @@
     }
     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 @@
     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;
   }
--- trunk/kdesupport/taglib/toolkit/tstring.h #437398:437399
@@ -90,7 +90,11 @@
       /*!
        * 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
     };
 
     /*!
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic