diff options
Diffstat (limited to 'Objects/unicodeobject.c')
-rw-r--r-- | Objects/unicodeobject.c | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 4bdff5a..1319c7c 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -4667,12 +4667,6 @@ static PyMethodDef unicode_methods[] = { {NULL, NULL} }; -static PyObject * -unicode_getattr(PyUnicodeObject *self, char *name) -{ - return Py_FindMethod(unicode_methods, (PyObject*) self, name); -} - static PySequenceMethods unicode_as_sequence = { (inquiry) unicode_length, /* sq_length */ (binaryfunc) PyUnicode_Concat, /* sq_concat */ @@ -5346,6 +5340,30 @@ static PyBufferProcs unicode_as_buffer = { (getcharbufferproc) unicode_buffer_getcharbuf, }; +static PyObject * +unicode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *x = NULL; + static char *kwlist[] = {"string", "encoding", "errors", 0}; + char *encoding = NULL; + char *errors = NULL; + + assert(type == &PyUnicode_Type); + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oss:unicode", + kwlist, &x, &encoding, &errors)) + return NULL; + if (x == NULL) + return (PyObject *)_PyUnicode_New(0); + return PyUnicode_FromEncodedObject(x, encoding, errors); +} + +static char unicode_doc[] = +"unicode(string [, encoding[, errors]]) -> object\n\ +\n\ +Create a new Unicode object from the given encoded string.\n\ +encoding defaults to the current default string encoding and \n\ +errors, defining the error handling, to 'strict'."; + PyTypeObject PyUnicode_Type = { PyObject_HEAD_INIT(&PyType_Type) 0, /* ob_size */ @@ -5355,7 +5373,7 @@ PyTypeObject PyUnicode_Type = { /* Slots */ (destructor)_PyUnicode_Free, /* tp_dealloc */ 0, /* tp_print */ - (getattrfunc)unicode_getattr, /* tp_getattr */ + 0, /* tp_getattr */ 0, /* tp_setattr */ (cmpfunc) unicode_compare, /* tp_compare */ (reprfunc) unicode_repr, /* tp_repr */ @@ -5365,10 +5383,28 @@ PyTypeObject PyUnicode_Type = { (hashfunc) unicode_hash, /* tp_hash*/ 0, /* tp_call*/ (reprfunc) unicode_str, /* tp_str */ - (getattrofunc) NULL, /* tp_getattro */ - (setattrofunc) NULL, /* tp_setattro */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ &unicode_as_buffer, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ + unicode_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + unicode_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + unicode_new, /* tp_new */ }; /* Initialize the Unicode implementation */ |