[pypy-svn] r61567 - in pypy/trunk/pypy: rpython/lltypesystem translator/c

afa at codespeak.net afa at codespeak.net
Thu Feb 5 17:47:35 CET 2009


Author: afa
Date: Thu Feb  5 17:47:33 2009
New Revision: 61567

Modified:
   pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py
   pypy/trunk/pypy/rpython/lltypesystem/rffi.py
   pypy/trunk/pypy/translator/c/primitive.py
Log:
Store runicode strings as arrays of wchar_t


Modified: pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py
==============================================================================
--- pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py	(original)
+++ pypy/trunk/pypy/rpython/lltypesystem/ll2ctypes.py	Thu Feb  5 17:47:33 2009
@@ -41,7 +41,7 @@
         rffi.LONGLONG:   ctypes.c_longlong,
         rffi.ULONGLONG:  ctypes.c_ulonglong,
         rffi.SIZE_T:     ctypes.c_size_t,
-        lltype.UniChar:  ctypes.c_uint,
+        lltype.UniChar:  ctypes.c_wchar,
         })
 
 def build_ctypes_struct(S, delayed_builders, max_n=None):

Modified: pypy/trunk/pypy/rpython/lltypesystem/rffi.py
==============================================================================
--- pypy/trunk/pypy/rpython/lltypesystem/rffi.py	(original)
+++ pypy/trunk/pypy/rpython/lltypesystem/rffi.py	Thu Feb  5 17:47:33 2009
@@ -308,7 +308,7 @@
         TYPES.append(name)
 TYPES += ['signed char', 'unsigned char',
           'long long', 'unsigned long long',
-          'size_t', 'time_t']
+          'size_t', 'time_t', 'wchar_t']
 if os.name != 'nt':
     TYPES.append('mode_t')
     TYPES.append('pid_t')
@@ -352,6 +352,7 @@
 #        ULONG          r_ulong
 #        LONGLONG       r_longlong
 #        ULONGLONG      r_ulonglong
+#        WCHAR_T        r_wchar_t
 #        SIZE_T         r_size_t
 #        TIME_T         r_time_t
 # --------------------------------------------------------------------
@@ -687,7 +688,7 @@
     if tp is lltype.Char:
         return 1
     if tp is lltype.UniChar:
-        return 4
+        return WCHAR_T._type.BITS/8
     if tp is lltype.Float:
         return 8
     assert isinstance(tp, lltype.Number)

Modified: pypy/trunk/pypy/translator/c/primitive.py
==============================================================================
--- pypy/trunk/pypy/translator/c/primitive.py	(original)
+++ pypy/trunk/pypy/translator/c/primitive.py	Thu Feb  5 17:47:33 2009
@@ -152,7 +152,7 @@
     Float:    'double @',
     SingleFloat: 'float @',
     Char:     'char @',
-    UniChar:  'unsigned int @',
+    UniChar:  'wchar_t @',
     Bool:     'bool_t @',
     Void:     'void @',
     Address:  'void* @',



More information about the Pypy-commit mailing list