Christian Heimes wrote:
> A lot of functions in Python 3.x have blocks like
>
> if (PyString_Check(sub_obj)) {
> sub = PyString_AS_STRING(sub_obj);
> sub_len = PyString_GET_SIZE(sub_obj);
> }
> else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len))
> return NULL;
>
> The functions check for PyString first to gain a little speed up. I like
> to add a new function to the abstract object protocol
> (Objects/abstract.c) to make code more readable while keeping the speed up.
>
> int inline
> PyObject_AsString(PyObject *obj,
> const char **buffer,
> Py_ssize_t *buffer_len)
> {
> if (PyString_Check(obj)) {
> *buffer = PyString_AS_STRING(obj);
> *buffer_len = PyString_GET_SIZE(obj);
> return 1;
> }
> return (PyObject_AsCharBuffer(obj, buffer, buffer_len));
> }
Could this code replace the current PyString_AsStringAndSize, instead
of creating a new function?
--
Amaury Forgeot d'Arc
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com