mirror of https://github.com/python/cpython
Backed out changeset b0087e17cd5e (issue #26765)
For unknown reasons it perhaps caused a crash on 32-bit Windows (issue #).
This commit is contained in:
parent
ab8bcb34dc
commit
e09132f2c7
|
@ -1097,6 +1097,18 @@ bytearray_dealloc(PyByteArrayObject *self)
|
||||||
#include "stringlib/transmogrify.h"
|
#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]
|
/*[clinic input]
|
||||||
bytearray.clear
|
bytearray.clear
|
||||||
|
|
||||||
|
@ -1126,6 +1138,42 @@ bytearray_copy_impl(PyByteArrayObject *self)
|
||||||
PyByteArray_GET_SIZE(self));
|
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]
|
/*[clinic input]
|
||||||
bytearray.translate
|
bytearray.translate
|
||||||
|
@ -1281,8 +1329,8 @@ bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old,
|
||||||
/*[clinic end generated code: output=d39884c4dc59412a input=aa379d988637c7fb]*/
|
/*[clinic end generated code: output=d39884c4dc59412a input=aa379d988637c7fb]*/
|
||||||
{
|
{
|
||||||
return stringlib_replace((PyObject *)self,
|
return stringlib_replace((PyObject *)self,
|
||||||
old->buf, old->len,
|
(const char *)old->buf, old->len,
|
||||||
new->buf, new->len, count);
|
(const char *)new->buf, new->len, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
|
@ -1947,6 +1995,14 @@ PyDoc_STRVAR(hex__doc__,
|
||||||
Create a string of hexadecimal numbers from a bytearray object.\n\
|
Create a string of hexadecimal numbers from a bytearray object.\n\
|
||||||
Example: bytearray([0xb9, 0x01, 0xef]).hex() -> 'b901ef'.");
|
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 *
|
static PyObject *
|
||||||
_common_reduce(PyByteArrayObject *self, int proto)
|
_common_reduce(PyByteArrayObject *self, int proto)
|
||||||
{
|
{
|
||||||
|
@ -2035,7 +2091,7 @@ static PySequenceMethods bytearray_as_sequence = {
|
||||||
0, /* sq_slice */
|
0, /* sq_slice */
|
||||||
(ssizeobjargproc)bytearray_setitem, /* sq_ass_item */
|
(ssizeobjargproc)bytearray_setitem, /* sq_ass_item */
|
||||||
0, /* sq_ass_slice */
|
0, /* sq_ass_slice */
|
||||||
(objobjproc)stringlib_contains, /* sq_contains */
|
(objobjproc)bytearray_contains, /* sq_contains */
|
||||||
(binaryfunc)bytearray_iconcat, /* sq_inplace_concat */
|
(binaryfunc)bytearray_iconcat, /* sq_inplace_concat */
|
||||||
(ssizeargfunc)bytearray_irepeat, /* sq_inplace_repeat */
|
(ssizeargfunc)bytearray_irepeat, /* sq_inplace_repeat */
|
||||||
};
|
};
|
||||||
|
@ -2063,19 +2119,19 @@ bytearray_methods[] = {
|
||||||
{"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
|
{"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
|
||||||
BYTEARRAY_CLEAR_METHODDEF
|
BYTEARRAY_CLEAR_METHODDEF
|
||||||
BYTEARRAY_COPY_METHODDEF
|
BYTEARRAY_COPY_METHODDEF
|
||||||
{"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
|
{"count", (PyCFunction)bytearray_count, METH_VARARGS,
|
||||||
_Py_count__doc__},
|
_Py_count__doc__},
|
||||||
BYTEARRAY_DECODE_METHODDEF
|
BYTEARRAY_DECODE_METHODDEF
|
||||||
{"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
|
{"endswith", (PyCFunction)bytearray_endswith, METH_VARARGS,
|
||||||
_Py_endswith__doc__},
|
_Py_endswith__doc__},
|
||||||
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
|
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
|
||||||
_Py_expandtabs__doc__},
|
_Py_expandtabs__doc__},
|
||||||
BYTEARRAY_EXTEND_METHODDEF
|
BYTEARRAY_EXTEND_METHODDEF
|
||||||
{"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
|
{"find", (PyCFunction)bytearray_find, METH_VARARGS,
|
||||||
_Py_find__doc__},
|
_Py_find__doc__},
|
||||||
BYTEARRAY_FROMHEX_METHODDEF
|
BYTEARRAY_FROMHEX_METHODDEF
|
||||||
{"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
|
{"hex", (PyCFunction)bytearray_hex, METH_NOARGS, hex__doc__},
|
||||||
{"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
|
{"index", (PyCFunction)bytearray_index, METH_VARARGS, _Py_index__doc__},
|
||||||
BYTEARRAY_INSERT_METHODDEF
|
BYTEARRAY_INSERT_METHODDEF
|
||||||
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
|
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
|
||||||
_Py_isalnum__doc__},
|
_Py_isalnum__doc__},
|
||||||
|
@ -2101,16 +2157,15 @@ bytearray_methods[] = {
|
||||||
BYTEARRAY_REMOVE_METHODDEF
|
BYTEARRAY_REMOVE_METHODDEF
|
||||||
BYTEARRAY_REPLACE_METHODDEF
|
BYTEARRAY_REPLACE_METHODDEF
|
||||||
BYTEARRAY_REVERSE_METHODDEF
|
BYTEARRAY_REVERSE_METHODDEF
|
||||||
{"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
|
{"rfind", (PyCFunction)bytearray_rfind, METH_VARARGS, _Py_rfind__doc__},
|
||||||
_Py_rfind__doc__},
|
{"rindex", (PyCFunction)bytearray_rindex, METH_VARARGS, _Py_rindex__doc__},
|
||||||
{"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
|
|
||||||
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
|
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
|
||||||
BYTEARRAY_RPARTITION_METHODDEF
|
BYTEARRAY_RPARTITION_METHODDEF
|
||||||
BYTEARRAY_RSPLIT_METHODDEF
|
BYTEARRAY_RSPLIT_METHODDEF
|
||||||
BYTEARRAY_RSTRIP_METHODDEF
|
BYTEARRAY_RSTRIP_METHODDEF
|
||||||
BYTEARRAY_SPLIT_METHODDEF
|
BYTEARRAY_SPLIT_METHODDEF
|
||||||
BYTEARRAY_SPLITLINES_METHODDEF
|
BYTEARRAY_SPLITLINES_METHODDEF
|
||||||
{"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
|
{"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS ,
|
||||||
_Py_startswith__doc__},
|
_Py_startswith__doc__},
|
||||||
BYTEARRAY_STRIP_METHODDEF
|
BYTEARRAY_STRIP_METHODDEF
|
||||||
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
|
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
|
||||||
|
|
|
@ -1485,6 +1485,12 @@ bytes_repeat(PyBytesObject *a, Py_ssize_t n)
|
||||||
return (PyObject *) op;
|
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 *
|
static PyObject *
|
||||||
bytes_item(PyBytesObject *a, Py_ssize_t i)
|
bytes_item(PyBytesObject *a, Py_ssize_t i)
|
||||||
{
|
{
|
||||||
|
@ -1695,7 +1701,7 @@ static PySequenceMethods bytes_as_sequence = {
|
||||||
0, /*sq_slice*/
|
0, /*sq_slice*/
|
||||||
0, /*sq_ass_item*/
|
0, /*sq_ass_item*/
|
||||||
0, /*sq_ass_slice*/
|
0, /*sq_ass_slice*/
|
||||||
(objobjproc)stringlib_contains /*sq_contains*/
|
(objobjproc)bytes_contains /*sq_contains*/
|
||||||
};
|
};
|
||||||
|
|
||||||
static PyMappingMethods bytes_as_mapping = {
|
static PyMappingMethods bytes_as_mapping = {
|
||||||
|
@ -1867,6 +1873,32 @@ _PyBytes_Join(PyObject *sep, PyObject *x)
|
||||||
return bytes_join((PyBytesObject*)sep, x);
|
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 *)
|
Py_LOCAL_INLINE(PyObject *)
|
||||||
do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj)
|
do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj)
|
||||||
|
@ -2003,6 +2035,13 @@ bytes_rstrip_impl(PyBytesObject *self, PyObject *bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
bytes_count(PyBytesObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
return _Py_bytes_count(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
bytes.translate
|
bytes.translate
|
||||||
|
|
||||||
|
@ -2189,6 +2228,19 @@ bytes_replace_impl(PyBytesObject *self, Py_buffer *old, Py_buffer *new,
|
||||||
/** End DALKE **/
|
/** 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]
|
/*[clinic input]
|
||||||
bytes.decode
|
bytes.decode
|
||||||
|
|
||||||
|
@ -2342,6 +2394,14 @@ PyDoc_STRVAR(hex__doc__,
|
||||||
Create a string of hexadecimal numbers from a bytes object.\n\
|
Create a string of hexadecimal numbers from a bytes object.\n\
|
||||||
Example: b'\\xb9\\x01\\xef'.hex() -> 'b901ef'.");
|
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 *
|
static PyObject *
|
||||||
bytes_getnewargs(PyBytesObject *v)
|
bytes_getnewargs(PyBytesObject *v)
|
||||||
{
|
{
|
||||||
|
@ -2354,19 +2414,20 @@ bytes_methods[] = {
|
||||||
{"__getnewargs__", (PyCFunction)bytes_getnewargs, METH_NOARGS},
|
{"__getnewargs__", (PyCFunction)bytes_getnewargs, METH_NOARGS},
|
||||||
{"capitalize", (PyCFunction)stringlib_capitalize, METH_NOARGS,
|
{"capitalize", (PyCFunction)stringlib_capitalize, METH_NOARGS,
|
||||||
_Py_capitalize__doc__},
|
_Py_capitalize__doc__},
|
||||||
{"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
|
{"center", (PyCFunction)stringlib_center, METH_VARARGS,
|
||||||
{"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
|
_Py_center__doc__},
|
||||||
|
{"count", (PyCFunction)bytes_count, METH_VARARGS,
|
||||||
_Py_count__doc__},
|
_Py_count__doc__},
|
||||||
BYTES_DECODE_METHODDEF
|
BYTES_DECODE_METHODDEF
|
||||||
{"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
|
{"endswith", (PyCFunction)bytes_endswith, METH_VARARGS,
|
||||||
_Py_endswith__doc__},
|
_Py_endswith__doc__},
|
||||||
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
|
{"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
|
||||||
_Py_expandtabs__doc__},
|
_Py_expandtabs__doc__},
|
||||||
{"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
|
{"find", (PyCFunction)bytes_find, METH_VARARGS,
|
||||||
_Py_find__doc__},
|
_Py_find__doc__},
|
||||||
BYTES_FROMHEX_METHODDEF
|
BYTES_FROMHEX_METHODDEF
|
||||||
{"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
|
{"hex", (PyCFunction)bytes_hex, METH_NOARGS, hex__doc__},
|
||||||
{"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
|
{"index", (PyCFunction)bytes_index, METH_VARARGS, _Py_index__doc__},
|
||||||
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
|
{"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
|
||||||
_Py_isalnum__doc__},
|
_Py_isalnum__doc__},
|
||||||
{"isalpha", (PyCFunction)stringlib_isalpha, METH_NOARGS,
|
{"isalpha", (PyCFunction)stringlib_isalpha, METH_NOARGS,
|
||||||
|
@ -2388,16 +2449,15 @@ bytes_methods[] = {
|
||||||
BYTES_MAKETRANS_METHODDEF
|
BYTES_MAKETRANS_METHODDEF
|
||||||
BYTES_PARTITION_METHODDEF
|
BYTES_PARTITION_METHODDEF
|
||||||
BYTES_REPLACE_METHODDEF
|
BYTES_REPLACE_METHODDEF
|
||||||
{"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
|
{"rfind", (PyCFunction)bytes_rfind, METH_VARARGS, _Py_rfind__doc__},
|
||||||
_Py_rfind__doc__},
|
{"rindex", (PyCFunction)bytes_rindex, METH_VARARGS, _Py_rindex__doc__},
|
||||||
{"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
|
|
||||||
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
|
{"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
|
||||||
BYTES_RPARTITION_METHODDEF
|
BYTES_RPARTITION_METHODDEF
|
||||||
BYTES_RSPLIT_METHODDEF
|
BYTES_RSPLIT_METHODDEF
|
||||||
BYTES_RSTRIP_METHODDEF
|
BYTES_RSTRIP_METHODDEF
|
||||||
BYTES_SPLIT_METHODDEF
|
BYTES_SPLIT_METHODDEF
|
||||||
BYTES_SPLITLINES_METHODDEF
|
BYTES_SPLITLINES_METHODDEF
|
||||||
{"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
|
{"startswith", (PyCFunction)bytes_startswith, METH_VARARGS,
|
||||||
_Py_startswith__doc__},
|
_Py_startswith__doc__},
|
||||||
BYTES_STRIP_METHODDEF
|
BYTES_STRIP_METHODDEF
|
||||||
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
|
{"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
|
||||||
|
|
|
@ -2,60 +2,6 @@
|
||||||
# error "transmogrify.h only compatible with byte-wise strings"
|
# error "transmogrify.h only compatible with byte-wise strings"
|
||||||
#endif
|
#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
|
/* 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. */
|
shared code in bytes_methods.c to cut down on duplicate code bloat. */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue