Author: christian.heimes
Date: Thu Nov 22 08:46:41 2007
New Revision: 59114

Modified:
   python/branches/py3k/Objects/stringobject.c
   python/branches/py3k/Objects/unicodeobject.c
Log:
Removed blocks from several functions in unicodeobject and stringobject where a 
PyString function was still checking for PyUnicode or the other way around.
PyUnicode and PyString shouldn't magically convert the other type.

Modified: python/branches/py3k/Objects/stringobject.c
==============================================================================
--- python/branches/py3k/Objects/stringobject.c (original)
+++ python/branches/py3k/Objects/stringobject.c Thu Nov 22 08:46:41 2007
@@ -517,11 +517,6 @@
 Py_ssize_t
 PyString_Size(register PyObject *op)
 {
-       if (PyUnicode_Check(op)) {
-               op = _PyUnicode_AsDefaultEncodedString(op, NULL);
-               if (!op)
-                       return -1;
-       }
        if (!PyString_Check(op))
                return string_getsize(op);
        return Py_Size(op);
@@ -530,11 +525,6 @@
 /*const*/ char *
 PyString_AsString(register PyObject *op)
 {
-       if (PyUnicode_Check(op)) {
-               op = _PyUnicode_AsDefaultEncodedString(op, NULL);
-               if (!op)
-                       return NULL;
-       }
        if (!PyString_Check(op))
                return string_getbuffer(op);
        return ((PyStringObject *)op) -> ob_sval;
@@ -551,18 +541,9 @@
        }
 
        if (!PyString_Check(obj)) {
-               if (PyUnicode_Check(obj)) {
-                       obj = _PyUnicode_AsDefaultEncodedString(obj, NULL);
-                       if (obj == NULL)
-                               return -1;
-               }
-               else
-               {
-                       PyErr_Format(PyExc_TypeError,
-                                    "expected string, "
-                                    "%.200s found", Py_Type(obj)->tp_name);
-                       return -1;
-               }
+               PyErr_Format(PyExc_TypeError,
+                    "expected string, %.200s found", Py_Type(obj)->tp_name);
+               return -1;
        }
 
        *s = PyString_AS_STRING(obj);
@@ -1250,8 +1231,6 @@
                sep = PyString_AS_STRING(sep_obj);
                sep_len = PyString_GET_SIZE(sep_obj);
        }
-       else if (PyUnicode_Check(sep_obj))
-               return PyUnicode_Partition((PyObject *) self, sep_obj);
        else if (PyObject_AsCharBuffer(sep_obj, &sep, &sep_len))
                return NULL;
 
@@ -1280,8 +1259,6 @@
                sep = PyString_AS_STRING(sep_obj);
                sep_len = PyString_GET_SIZE(sep_obj);
        }
-       else if (PyUnicode_Check(sep_obj))
-               return PyUnicode_Partition((PyObject *) self, sep_obj);
        else if (PyObject_AsCharBuffer(sep_obj, &sep, &sep_len))
                return NULL;
 
@@ -1585,9 +1562,6 @@
                sub = PyString_AS_STRING(subobj);
                sub_len = PyString_GET_SIZE(subobj);
        }
-       else if (PyUnicode_Check(subobj))
-               return PyUnicode_Find(
-                       (PyObject *)self, subobj, start, end, dir);
        else if (PyObject_AsCharBuffer(subobj, &sub, &sub_len))
                /* XXX - the "expected a character buffer object" is pretty
                   confusing for a non-expert.  remap to something else ? */
@@ -1836,14 +1810,6 @@
                sub = PyString_AS_STRING(sub_obj);
                sub_len = PyString_GET_SIZE(sub_obj);
        }
-       else if (PyUnicode_Check(sub_obj)) {
-               Py_ssize_t count;
-               count = PyUnicode_Count((PyObject *)self, sub_obj, start, end);
-               if (count == -1)
-                       return NULL;
-               else
-                       return PyInt_FromSsize_t(count);
-       }
        else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len))
                return NULL;
 
@@ -1888,17 +1854,6 @@
                table = NULL;
                tablen = 256;
        }
-       else if (PyUnicode_Check(tableobj)) {
-               /* Unicode .translate() does not support the deletechars
-                  parameter; instead a mapping to None will cause characters
-                  to be deleted. */
-               if (delobj != NULL) {
-                       PyErr_SetString(PyExc_TypeError,
-                       "deletions are implemented differently for unicode");
-                       return NULL;
-               }
-               return PyUnicode_Translate((PyObject *)self, tableobj, NULL);
-       }
        else if (PyObject_AsCharBuffer(tableobj, &table, &tablen))
                return NULL;
 
@@ -2594,9 +2549,6 @@
                from_s = PyString_AS_STRING(from);
                from_len = PyString_GET_SIZE(from);
        }
-       else if (PyUnicode_Check(from))
-               return PyUnicode_Replace((PyObject *)self,
-                                        from, to, count);
        else if (PyObject_AsCharBuffer(from, &from_s, &from_len))
                return NULL;
 
@@ -2604,9 +2556,6 @@
                to_s = PyString_AS_STRING(to);
                to_len = PyString_GET_SIZE(to);
        }
-       else if (PyUnicode_Check(to))
-               return PyUnicode_Replace((PyObject *)self,
-                                        from, to, count);
        else if (PyObject_AsCharBuffer(to, &to_s, &to_len))
                return NULL;
 
@@ -2634,9 +2583,6 @@
                sub = PyString_AS_STRING(substr);
                slen = PyString_GET_SIZE(substr);
        }
-       else if (PyUnicode_Check(substr))
-               return PyUnicode_Tailmatch((PyObject *)self,
-                                          substr, start, end, direction);
        else if (PyObject_AsCharBuffer(substr, &sub, &slen))
                return -1;
        str = PyString_AS_STRING(self);

Modified: python/branches/py3k/Objects/unicodeobject.c
==============================================================================
--- python/branches/py3k/Objects/unicodeobject.c        (original)
+++ python/branches/py3k/Objects/unicodeobject.c        Thu Nov 22 08:46:41 2007
@@ -1282,17 +1282,17 @@
 char*
 PyUnicode_AsStringAndSize(PyObject *unicode, Py_ssize_t *psize)
 {
-    PyObject *str8;
+    PyObject *bytes;
     if (!PyUnicode_Check(unicode)) {
         PyErr_BadArgument();
         return NULL;
     }
-    str8 = _PyUnicode_AsDefaultEncodedString(unicode, NULL);
-    if (str8 == NULL)
+    bytes = _PyUnicode_AsDefaultEncodedString(unicode, NULL);
+    if (bytes == NULL)
         return NULL;
     if (psize != NULL)
-        *psize = PyString_GET_SIZE(str8);
-    return PyString_AS_STRING(str8);
+        *psize = PyString_GET_SIZE(bytes);
+    return PyString_AS_STRING(bytes);
 }
 
 char*
@@ -1686,7 +1686,7 @@
     char * start;
 
     if (size == 0)
-       return PyString_FromStringAndSize(NULL, 0);
+       return PyString_FromStringAndSize(NULL, 0);
 
     v = PyBytes_FromStringAndSize(NULL, cbAllocated);
     if (v == NULL)
@@ -2078,7 +2078,7 @@
         result = PyString_FromStringAndSize(stackbuf, nneeded);
     }
     else {
-       /* Cut back to size actually needed. */
+        /* Cut back to size actually needed. */
         nneeded = p - PyString_AS_STRING(result);
         assert(nneeded <= nallocated);
         _PyString_Resize(&result, nneeded);
@@ -4331,7 +4331,7 @@
     else {
        /* wrong return value */
        PyErr_Format(PyExc_TypeError,
-                "character mapping must return integer, None or str8, not 
%.400s",
+                "character mapping must return integer, bytes or None, not 
%.400s",
                 x->ob_type->tp_name);
        Py_DECREF(x);
        return NULL;
@@ -7160,15 +7160,6 @@
        if (sep != NULL && sep != Py_None) {
                if (PyUnicode_Check(sep))
                        return _PyUnicode_XStrip(self, striptype, sep);
-               else if (PyString_Check(sep)) {
-                       PyObject *res;
-                       sep = PyUnicode_FromObject(sep);
-                       if (sep==NULL)
-                               return NULL;
-                       res = _PyUnicode_XStrip(self, striptype, sep);
-                       Py_DECREF(sep);
-                       return res;
-               }
                else {
                        PyErr_Format(PyExc_TypeError,
                                     "%s arg must be None, unicode or str",
@@ -8389,13 +8380,6 @@
            goto onError;
        buf[0] = PyUnicode_AS_UNICODE(v)[0];
     }
-
-    else if (PyString_Check(v)) {
-       if (PyString_GET_SIZE(v) != 1)
-           goto onError;
-       buf[0] = (Py_UNICODE)PyString_AS_STRING(v)[0];
-    }
-
     else {
        /* Integer input truncated to a character */
         long x;
@@ -8473,7 +8457,7 @@
        argidx = -2;
     }
     if (Py_Type(args)->tp_as_mapping && !PyTuple_Check(args) &&
-        !PyString_Check(args) && !PyUnicode_Check(args))
+        !PyUnicode_Check(args))
        dict = args;
 
     while (--fmtcnt >= 0) {
@@ -8679,17 +8663,6 @@
                        goto onError;
                     if (PyUnicode_Check(temp))
                         /* nothing to do */;
-                    else if (PyString_Check(temp)) {
-                        /* convert to string to Unicode */
-                       unicode = PyUnicode_Decode(PyString_AS_STRING(temp),
-                                                  PyString_GET_SIZE(temp),
-                                                  NULL,
-                                                  "strict");
-                       Py_DECREF(temp);
-                       temp = unicode;
-                       if (temp == NULL)
-                           goto onError;
-                   }
                    else {
                        Py_DECREF(temp);
                        PyErr_SetString(PyExc_TypeError,
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins

Reply via email to