[pypy-svn] r16225 - pypy/dist/pypy/module/_codecs

ale at codespeak.net ale at codespeak.net
Mon Aug 22 19:04:33 CEST 2005


Author: ale
Date: Mon Aug 22 19:04:32 2005
New Revision: 16225

Modified:
   pypy/dist/pypy/module/_codecs/app_codecs.py
Log:
(Jakob, Anders)

Fun with byteorder in codecs.

Added an extra consumed bytes return value from PyUnicode_DecodeUTF16Stateful

Modified: pypy/dist/pypy/module/_codecs/app_codecs.py
==============================================================================
--- pypy/dist/pypy/module/_codecs/app_codecs.py	(original)
+++ pypy/dist/pypy/module/_codecs/app_codecs.py	Mon Aug 22 19:04:32 2005
@@ -164,9 +164,9 @@
 def utf_8_decode( data,errors='strict',final=None):
     """None
     """
-    res = PyUnicode_DecodeUTF8Stateful(data, len(data), errors, final)
+    res,consumed = PyUnicode_DecodeUTF8Stateful(data, len(data), errors, final)
     res = u''.join(res)
-    return res,len(res)
+    return res, consumed
 
 def raw_unicode_escape_decode( data,errors='strict'):
     """None
@@ -199,7 +199,7 @@
 def utf_16_decode( data,errors='strict',final=None):
     """None
     """
-    res,consumed = PyUnicode_DecodeUTF16Stateful(data,len(data),errors)
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors)
     res = ''.join(res)
     return res, consumed
 
@@ -282,12 +282,12 @@
     """None
     """
     if byteorder == 0:
-       byteorder = 'native'
+       bm = 'native'
     elif byteorder == -1:
-       byteorder = 'little'
+       bm = 'little'
     else:
-       byteorder = 'big'
-    res,consumed = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,byteorder)
+       bm = 'big'
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,bm)
     res = ''.join(res)
     return res, consumed, byteorder
 
@@ -416,14 +416,14 @@
 def utf_16_le_decode( data,errors='strict',byteorder=0, final = 0):
     """None
     """
-    res,consumed = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'little')
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'little')
     res = u''.join(res)
     return res, consumed
 
 def utf_16_be_decode( data,errors='strict',byteorder=0, final = 0):
     """None
     """
-    res, consumed = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'big')
+    res, consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'big')
     res = u''.join(res)
     return res, consumed
 
@@ -879,8 +879,6 @@
         ihi = 0
         ilo = 1
     
-    if (size == 0):
-        return [u'']
 
     #/* Unpack UTF-16 encoded data */
 
@@ -913,6 +911,9 @@
     else:
         bo = 1
         
+    if (size == 0):
+        return [u''],0,bo
+    
     if (bo == -1):
         #/* force LE */
         ihi = 1
@@ -974,7 +975,7 @@
 	endinpos = startinpos+2
     	unicode_call_errorhandler(errors,'utf-16',errmsg,s,startinpos,endinpos,True)
 	
-    return p,q
+    return p, q, bo
 
 # moved out of local scope, especially because it didn't
 # have any nested variables.
@@ -1092,7 +1093,7 @@
     if (size == 0):
         if (consumed):
             consumed = 0
-        return u''
+        return u'', consumed
     
     p = []
     pos = 0
@@ -1248,7 +1249,7 @@
 
     if (consumed):
         consumed = pos
-    return p
+    return p, consumed
 
 def PyUnicode_EncodeUTF8(s,size,errors):
 



More information about the Pypy-commit mailing list