[Python-checkins] cpython: Issue #26765: Moved wrappers for bytes and bytearray methods to common header
serhiy.storchaka
python-checkins at python.org
Fri Jul 1 10:57:47 EDT 2016
https://hg.python.org/cpython/rev/b0087e17cd5e
changeset: 102243:b0087e17cd5e
user: Serhiy Storchaka <storchaka at gmail.com>
date: Fri Jul 01 17:57:30 2016 +0300
summary:
Issue #26765: Moved wrappers for bytes and bytearray methods to common header
file.
files:
Objects/bytearrayobject.c | 79 ++----------------
Objects/bytesobject.c | 82 ++-----------------
Objects/stringlib/transmogrify.h | 54 +++++++++++++
3 files changed, 77 insertions(+), 138 deletions(-)
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -1097,18 +1097,6 @@
#include "stringlib/transmogrify.h"
-static PyObject *
-bytearray_find(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_find(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytearray_count(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_count(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
/*[clinic input]
bytearray.clear
@@ -1138,42 +1126,6 @@
PyByteArray_GET_SIZE(self));
}
-static PyObject *
-bytearray_index(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_index(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytearray_rfind(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_rfind(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytearray_rindex(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_rindex(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
-static int
-bytearray_contains(PyObject *self, PyObject *arg)
-{
- return _Py_bytes_contains(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), arg);
-}
-
-static PyObject *
-bytearray_startswith(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_startswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytearray_endswith(PyByteArrayObject *self, PyObject *args)
-{
- return _Py_bytes_endswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
-}
-
/*[clinic input]
bytearray.translate
@@ -1329,8 +1281,8 @@
/*[clinic end generated code: output=d39884c4dc59412a input=aa379d988637c7fb]*/
{
return stringlib_replace((PyObject *)self,
- (const char *)old->buf, old->len,
- (const char *)new->buf, new->len, count);
+ old->buf, old->len,
+ new->buf, new->len, count);
}
/*[clinic input]
@@ -1996,14 +1948,6 @@
Example: bytearray([0xb9, 0x01, 0xef]).hex() -> 'b901ef'.");
static PyObject *
-bytearray_hex(PyBytesObject *self)
-{
- char* argbuf = PyByteArray_AS_STRING(self);
- Py_ssize_t arglen = PyByteArray_GET_SIZE(self);
- return _Py_strhex(argbuf, arglen);
-}
-
-static PyObject *
_common_reduce(PyByteArrayObject *self, int proto)
{
PyObject *dict;
@@ -2091,7 +2035,7 @@
0, /* sq_slice */
(ssizeobjargproc)bytearray_setitem, /* sq_ass_item */
0, /* sq_ass_slice */
- (objobjproc)bytearray_contains, /* sq_contains */
+ (objobjproc)stringlib_contains, /* sq_contains */
(binaryfunc)bytearray_iconcat, /* sq_inplace_concat */
(ssizeargfunc)bytearray_irepeat, /* sq_inplace_repeat */
};
@@ -2119,19 +2063,19 @@
{"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
BYTEARRAY_CLEAR_METHODDEF
BYTEARRAY_COPY_METHODDEF
- {"count", (PyCFunction)bytearray_count, METH_VARARGS,
+ {"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
_Py_count__doc__},
BYTEARRAY_DECODE_METHODDEF
- {"endswith", (PyCFunction)bytearray_endswith, METH_VARARGS,
+ {"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
_Py_endswith__doc__},
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
_Py_expandtabs__doc__},
BYTEARRAY_EXTEND_METHODDEF
- {"find", (PyCFunction)bytearray_find, METH_VARARGS,
+ {"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
_Py_find__doc__},
BYTEARRAY_FROMHEX_METHODDEF
- {"hex", (PyCFunction)bytearray_hex, METH_NOARGS, hex__doc__},
- {"index", (PyCFunction)bytearray_index, METH_VARARGS, _Py_index__doc__},
+ {"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
+ {"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
BYTEARRAY_INSERT_METHODDEF
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
_Py_isalnum__doc__},
@@ -2157,15 +2101,16 @@
BYTEARRAY_REMOVE_METHODDEF
BYTEARRAY_REPLACE_METHODDEF
BYTEARRAY_REVERSE_METHODDEF
- {"rfind", (PyCFunction)bytearray_rfind, METH_VARARGS, _Py_rfind__doc__},
- {"rindex", (PyCFunction)bytearray_rindex, METH_VARARGS, _Py_rindex__doc__},
+ {"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
+ _Py_rfind__doc__},
+ {"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
BYTEARRAY_RPARTITION_METHODDEF
BYTEARRAY_RSPLIT_METHODDEF
BYTEARRAY_RSTRIP_METHODDEF
BYTEARRAY_SPLIT_METHODDEF
BYTEARRAY_SPLITLINES_METHODDEF
- {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS ,
+ {"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
_Py_startswith__doc__},
BYTEARRAY_STRIP_METHODDEF
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -1485,12 +1485,6 @@
return (PyObject *) op;
}
-static int
-bytes_contains(PyObject *self, PyObject *arg)
-{
- return _Py_bytes_contains(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), arg);
-}
-
static PyObject *
bytes_item(PyBytesObject *a, Py_ssize_t i)
{
@@ -1701,7 +1695,7 @@
0, /*sq_slice*/
0, /*sq_ass_item*/
0, /*sq_ass_slice*/
- (objobjproc)bytes_contains /*sq_contains*/
+ (objobjproc)stringlib_contains /*sq_contains*/
};
static PyMappingMethods bytes_as_mapping = {
@@ -1873,32 +1867,6 @@
return bytes_join((PyBytesObject*)sep, x);
}
-static PyObject *
-bytes_find(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_find(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytes_index(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_index(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-
-static PyObject *
-bytes_rfind(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_rfind(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-
-static PyObject *
-bytes_rindex(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_rindex(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
Py_LOCAL_INLINE(PyObject *)
do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj)
@@ -2035,13 +2003,6 @@
}
-static PyObject *
-bytes_count(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_count(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-
/*[clinic input]
bytes.translate
@@ -2228,19 +2189,6 @@
/** End DALKE **/
-static PyObject *
-bytes_startswith(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_startswith(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-static PyObject *
-bytes_endswith(PyBytesObject *self, PyObject *args)
-{
- return _Py_bytes_endswith(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
-}
-
-
/*[clinic input]
bytes.decode
@@ -2395,14 +2343,6 @@
Example: b'\\xb9\\x01\\xef'.hex() -> 'b901ef'.");
static PyObject *
-bytes_hex(PyBytesObject *self)
-{
- char* argbuf = PyBytes_AS_STRING(self);
- Py_ssize_t arglen = PyBytes_GET_SIZE(self);
- return _Py_strhex(argbuf, arglen);
-}
-
-static PyObject *
bytes_getnewargs(PyBytesObject *v)
{
return Py_BuildValue("(y#)", v->ob_sval, Py_SIZE(v));
@@ -2414,20 +2354,19 @@
{"__getnewargs__", (PyCFunction)bytes_getnewargs, METH_NOARGS},
{"capitalize", (PyCFunction)stringlib_capitalize, METH_NOARGS,
_Py_capitalize__doc__},
- {"center", (PyCFunction)stringlib_center, METH_VARARGS,
- _Py_center__doc__},
- {"count", (PyCFunction)bytes_count, METH_VARARGS,
+ {"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
+ {"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
_Py_count__doc__},
BYTES_DECODE_METHODDEF
- {"endswith", (PyCFunction)bytes_endswith, METH_VARARGS,
+ {"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
_Py_endswith__doc__},
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
_Py_expandtabs__doc__},
- {"find", (PyCFunction)bytes_find, METH_VARARGS,
+ {"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
_Py_find__doc__},
BYTES_FROMHEX_METHODDEF
- {"hex", (PyCFunction)bytes_hex, METH_NOARGS, hex__doc__},
- {"index", (PyCFunction)bytes_index, METH_VARARGS, _Py_index__doc__},
+ {"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
+ {"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
_Py_isalnum__doc__},
{"isalpha", (PyCFunction)stringlib_isalpha, METH_NOARGS,
@@ -2449,15 +2388,16 @@
BYTES_MAKETRANS_METHODDEF
BYTES_PARTITION_METHODDEF
BYTES_REPLACE_METHODDEF
- {"rfind", (PyCFunction)bytes_rfind, METH_VARARGS, _Py_rfind__doc__},
- {"rindex", (PyCFunction)bytes_rindex, METH_VARARGS, _Py_rindex__doc__},
+ {"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
+ _Py_rfind__doc__},
+ {"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
BYTES_RPARTITION_METHODDEF
BYTES_RSPLIT_METHODDEF
BYTES_RSTRIP_METHODDEF
BYTES_SPLIT_METHODDEF
BYTES_SPLITLINES_METHODDEF
- {"startswith", (PyCFunction)bytes_startswith, METH_VARARGS,
+ {"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
_Py_startswith__doc__},
BYTES_STRIP_METHODDEF
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
diff --git a/Objects/stringlib/transmogrify.h b/Objects/stringlib/transmogrify.h
--- a/Objects/stringlib/transmogrify.h
+++ b/Objects/stringlib/transmogrify.h
@@ -2,6 +2,60 @@
# error "transmogrify.h only compatible with byte-wise strings"
#endif
+Py_LOCAL(PyObject *)
+stringlib_method_find(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_find(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_index(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_index(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_method_rfind(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_rfind(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_rindex(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_rindex(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_method_count(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_count(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(int)
+stringlib_contains(PyObject *self, PyObject *arg)
+{
+ return _Py_bytes_contains(STRINGLIB_STR(self), STRINGLIB_LEN(self), arg);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_startswith(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_startswith(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_endswith(PyObject *self, PyObject *args)
+{
+ return _Py_bytes_endswith(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
+}
+
+Py_LOCAL(PyObject *)
+stringlib_hex(PyObject *self)
+{
+ return _Py_strhex(STRINGLIB_STR(self), STRINGLIB_LEN(self));
+}
+
/* the more complicated methods. parts of these should be pulled out into the
shared code in bytes_methods.c to cut down on duplicate code bloat. */
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list