Author: Manuel Jacob
Branch: refactor-str-types
Changeset: r64613:bb62ce8ae4ae
Date: 2013-05-25 01:46 +0200
http://bitbucket.org/pypy/pypy/changeset/bb62ce8ae4ae/

Log:    Make W_UnicodeObject use shared __mul__/__rmul__ implementation.

diff --git a/pypy/objspace/std/unicodeobject.py 
b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -16,6 +16,7 @@
 from pypy.objspace.std.register_all import register_all
 from pypy.objspace.std.sliceobject import W_SliceObject, normalize_simple_slice
 from pypy.objspace.std.stdtypedef import StdTypeDef, SMM
+from pypy.objspace.std.stringmethods import StringMethods
 from rpython.rlib import jit
 from rpython.rlib.objectmodel import (compute_hash, compute_unique_id,
     specialize)
@@ -44,7 +45,7 @@
         return space.wrap(compute_unique_id(space.unicode_w(self)))
 
 
-class W_UnicodeObject(W_AbstractUnicodeObject):
+class W_UnicodeObject(W_AbstractUnicodeObject, StringMethods):
     _immutable_fields_ = ['_value']
 
     def __init__(w_self, unistr):
@@ -73,6 +74,15 @@
     def listview_unicode(w_self):
         return _create_list_from_unicode(w_self._value)
 
+    def _new(self, value):
+        return W_UnicodeObject(value)
+
+    def _len(self):
+        return len(self._value)
+
+    def _val(self):
+        return self._value
+
 
 def wrapunicode(space, uni):
     return W_UnicodeObject(uni)
@@ -406,8 +416,65 @@
 
 Create a new Unicode object from the given encoded string.
 encoding defaults to the current default string encoding.
-errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.'''
-    )
+errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.''',
+
+#    __repr__ = interp2app(W_UnicodeObject.descr_repr),
+#    __str__ = interp2app(W_UnicodeObject.descr_str),
+
+#    __eq__ = interp2app(W_UnicodeObject.descr_eq),
+#    __ne__ = interp2app(W_UnicodeObject.descr_ne),
+#    __lt__ = interp2app(W_UnicodeObject.descr_lt),
+#    __le__ = interp2app(W_UnicodeObject.descr_le),
+#    __gt__ = interp2app(W_UnicodeObject.descr_gt),
+#    __ge__ = interp2app(W_UnicodeObject.descr_ge),
+
+#    __len__ = interp2app(W_UnicodeObject.descr_len),
+#    __iter__ = interp2app(W_UnicodeObject.descr_iter),
+#    __contains__ = interp2app(W_UnicodeObject.descr_contains),
+
+#    __add__ = interp2app(W_UnicodeObject.descr_add),
+    __mul__ = interp2app(W_UnicodeObject.descr_mul),
+    __rmul__ = interp2app(W_UnicodeObject.descr_mul),
+
+#    __getitem__ = interp2app(W_UnicodeObject.descr_getitem),
+
+#    capitalize = interp2app(W_UnicodeObject.descr_capitalize),
+#    center = interp2app(W_UnicodeObject.descr_center),
+#    count = interp2app(W_UnicodeObject.descr_count),
+#    decode = interp2app(W_UnicodeObject.descr_decode),
+#    expandtabs = interp2app(W_UnicodeObject.descr_expandtabs),
+#    find = interp2app(W_UnicodeObject.descr_find),
+#    rfind = interp2app(W_UnicodeObject.descr_rfind),
+#    index = interp2app(W_UnicodeObject.descr_index),
+#    rindex = interp2app(W_UnicodeObject.descr_rindex),
+#    isalnum = interp2app(W_UnicodeObject.descr_isalnum),
+#    isalpha = interp2app(W_UnicodeObject.descr_isalpha),
+#    isdigit = interp2app(W_UnicodeObject.descr_isdigit),
+#    islower = interp2app(W_UnicodeObject.descr_islower),
+#    isspace = interp2app(W_UnicodeObject.descr_isspace),
+#    istitle = interp2app(W_UnicodeObject.descr_istitle),
+#    isupper = interp2app(W_UnicodeObject.descr_isupper),
+#    join = interp2app(W_UnicodeObject.descr_join),
+#    ljust = interp2app(W_UnicodeObject.descr_ljust),
+#    rjust = interp2app(W_UnicodeObject.descr_rjust),
+#    lower = interp2app(W_UnicodeObject.descr_lower),
+#    partition = interp2app(W_UnicodeObject.descr_partition),
+#    rpartition = interp2app(W_UnicodeObject.descr_rpartition),
+#    replace = interp2app(W_UnicodeObject.descr_replace),
+#    split = interp2app(W_UnicodeObject.descr_split),
+#    rsplit = interp2app(W_UnicodeObject.descr_rsplit),
+#    splitlines = interp2app(W_UnicodeObject.descr_splitlines),
+#    startswith = interp2app(W_UnicodeObject.descr_startswith),
+#    endswith = interp2app(W_UnicodeObject.descr_endswith),
+#    strip = interp2app(W_UnicodeObject.descr_strip),
+#    lstrip = interp2app(W_UnicodeObject.descr_lstrip),
+#    rstrip = interp2app(W_UnicodeObject.descr_rstrip),
+#    swapcase = interp2app(W_UnicodeObject.descr_swapcase),
+#    title = interp2app(W_UnicodeObject.descr_title),
+#    translate = interp2app(W_UnicodeObject.descr_translate),
+#    upper = interp2app(W_UnicodeObject.descr_upper),
+#    zfill = interp2app(W_UnicodeObject.descr_zfill),
+)
 
 unicode_typedef.registermethods(globals())
 
@@ -612,25 +679,6 @@
     start, stop = normalize_simple_slice(space, len(uni), w_start, w_stop)
     return W_UnicodeObject(uni[start:stop])
 
-def mul__Unicode_ANY(space, w_uni, w_times):
-    try:
-        times = space.getindex_w(w_times, space.w_OverflowError)
-    except OperationError, e:
-        if e.match(space, space.w_TypeError):
-            raise FailedToImplement
-        raise
-    if times <= 0:
-        return W_UnicodeObject.EMPTY
-    input = w_uni._value
-    if len(input) == 1:
-        result = input[0] * times
-    else:
-        result = input * times
-    return W_UnicodeObject(result)
-
-def mul__ANY_Unicode(space, w_times, w_uni):
-    return mul__Unicode_ANY(space, w_uni, w_times)
-
 def _isspace(uchar):
     return unicodedb.isspace(ord(uchar))
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to