static PyObject *NormalizeWord(Normalizer *self,PyObject *word) { int i; PyObject *temp; if (PyString_Check(word)) { if (! (temp = PyUnicode_FromEncodedObject(word,self->encoding,"strict"))) { PyErr_SetString(PyExc_UnicodeError,"unicode conversion failed"); return NULL; } } else { temp = PyUnicode_FromObject(word); } for (i=0; i<PyList_Size(self->table); i++) { PyObject *s, *item, *key, *value; item = PySequence_Fast_GET_ITEM(self->table, i); key = PyTuple_GetItem(item,0); value = PyTuple_GetItem(item,1); if (! (s = PyUnicode_Replace( temp, key, value, -1))) return NULL; Py_DECREF(temp); temp = s; } return temp; }
// Pyston change: don't use varags calling convention // PyObject* string_replace(PyStringObject *self, PyObject *args) PyObject* string_replace(PyStringObject *self, PyObject *from, PyObject* to, PyObject** args) { PyObject* _count = args[0]; Py_ssize_t count = -1; const char *from_s, *to_s; Py_ssize_t from_len, to_len; // Pyston change: don't use varags calling convention // if (!PyArg_ParseTuple(args, "OO|n:replace", &from, &to, &count)) // return NULL; if (_count && !PyArg_ParseSingle(_count, 3, "replace", "n", &count)) return NULL; if (PyString_Check(from)) { from_s = PyString_AS_STRING(from); from_len = PyString_GET_SIZE(from); } #ifdef Py_USING_UNICODE if (PyUnicode_Check(from)) return PyUnicode_Replace((PyObject *)self, from, to, count); #endif else if (PyObject_AsCharBuffer(from, &from_s, &from_len)) return NULL; if (PyString_Check(to)) { to_s = PyString_AS_STRING(to); to_len = PyString_GET_SIZE(to); } #ifdef Py_USING_UNICODE else if (PyUnicode_Check(to)) return PyUnicode_Replace((PyObject *)self, from, to, count); #endif else if (PyObject_AsCharBuffer(to, &to_s, &to_len)) return NULL; return (PyObject *)replace((PyStringObject *) self, from_s, from_len, to_s, to_len, count); }