]> granicus.if.org Git - python/commitdiff
Use unicode and remove support for some uses of str8.
authorNeal Norwitz <nnorwitz@gmail.com>
Sun, 26 Aug 2007 04:51:28 +0000 (04:51 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sun, 26 Aug 2007 04:51:28 +0000 (04:51 +0000)
Modules/arraymodule.c
Modules/parsermodule.c

index eb26698a8017bf5f6d582b99a24d1685fa051ce0..65c0bf0afabba32354548116786489cc4639f0c0 100644 (file)
@@ -1819,7 +1819,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 
        if (!(initial == NULL || PyList_Check(initial)
              || PyBytes_Check(initial)
-             || PyString_Check(initial) || PyTuple_Check(initial)
+             || PyTuple_Check(initial)
              || (c == PyArr_UNI && PyUnicode_Check(initial)))) {
                it = PyObject_GetIter(initial);
                if (it == NULL)
@@ -1862,8 +1862,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
                                        }
                                        Py_DECREF(v);
                                }
-                       } else if (initial != NULL &&
-                                  (PyString_Check(initial) || PyBytes_Check(initial))) {
+                       } else if (initial != NULL && PyBytes_Check(initial)) {
                                PyObject *t_initial, *v;
                                t_initial = PyTuple_Pack(1, initial);
                                if (t_initial == NULL) {
index 66d17b7dc73c4dd344ba27645b12b64d6158fc17..d4f4166b587ad1d8bc7c696f0c54cff08d938c63 100644 (file)
@@ -105,14 +105,14 @@ node2tuple(node *n,                     /* node to convert               */
         }
 
         if (TYPE(n) == encoding_decl)
-            (void) addelem(v, i+1, PyString_FromString(STR(n)));
+            (void) addelem(v, i+1, PyUnicode_FromString(STR(n)));
         return (v);
     }
     else if (ISTERMINAL(TYPE(n))) {
         PyObject *result = mkseq(2 + lineno + col_offset);
         if (result != NULL) {
             (void) addelem(result, 0, PyInt_FromLong(TYPE(n)));
-            (void) addelem(result, 1, PyString_FromString(STR(n)));
+            (void) addelem(result, 1, PyUnicode_FromString(STR(n)));
             if (lineno == 1)
                 (void) addelem(result, 2, PyInt_FromLong(n->n_lineno));
             if (col_offset == 1)
@@ -681,6 +681,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
         if (ISTERMINAL(type)) {
             Py_ssize_t len = PyObject_Size(elem);
             PyObject *temp;
+            const char *temp_str;
 
             if ((len != 2) && (len != 3)) {
                 err_string("terminal nodes must have 2 or 3 entries");
@@ -689,7 +690,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
             temp = PySequence_GetItem(elem, 1);
             if (temp == NULL)
                 return 0;
-            if (!PyString_Check(temp)) {
+            if (!PyUnicode_Check(temp)) {
                 PyErr_Format(parser_error,
                              "second item in terminal node must be a string,"
                              " found %s",
@@ -716,10 +717,11 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
                     Py_DECREF(o);
                 }
             }
-            len = PyString_GET_SIZE(temp) + 1;
+            temp_str = PyUnicode_AsString(temp);
+            len = PyUnicode_GET_SIZE(temp) + 1;
             strn = (char *)PyObject_MALLOC(len);
             if (strn != NULL)
-                (void) memcpy(strn, PyString_AS_STRING(temp), len);
+                (void) memcpy(strn, temp_str, len);
             Py_DECREF(temp);
         }
         else if (!ISNONTERMINAL(type)) {
@@ -804,10 +806,12 @@ build_node_tree(PyObject *tuple)
             }
             if (res && encoding) {
                 Py_ssize_t len;
-                len = PyString_GET_SIZE(encoding) + 1;
+                const char *temp;
+                temp = PyUnicode_AsString(encoding);
+                len = PyUnicode_GET_SIZE(encoding) + 1;
                 res->n_str = (char *)PyObject_MALLOC(len);
-                if (res->n_str != NULL)
-                    (void) memcpy(res->n_str, PyString_AS_STRING(encoding), len);
+                if (res->n_str != NULL && temp != NULL)
+                    (void) memcpy(res->n_str, temp, len);
                 Py_DECREF(encoding);
                 Py_DECREF(tuple);
             }