mirror of
https://github.com/python/cpython.git
synced 2024-11-28 08:20:55 +01:00
850687df47
Use it where appropriate: the repeat functions of `array.array`, `bytes`, `bytearray`, and `str`.
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
#ifndef Py_INTERNAL_BYTESOBJECT_H
|
|
#define Py_INTERNAL_BYTESOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
|
|
/* runtime lifecycle */
|
|
|
|
extern PyStatus _PyBytes_InitTypes(PyInterpreterState *);
|
|
|
|
|
|
/* Substring Search.
|
|
|
|
Returns the index of the first occurrence of
|
|
a substring ("needle") in a larger text ("haystack").
|
|
If the needle is not found, return -1.
|
|
If the needle is found, add offset to the index.
|
|
*/
|
|
|
|
PyAPI_FUNC(Py_ssize_t)
|
|
_PyBytes_Find(const char *haystack, Py_ssize_t len_haystack,
|
|
const char *needle, Py_ssize_t len_needle,
|
|
Py_ssize_t offset);
|
|
|
|
/* Same as above, but search right-to-left */
|
|
PyAPI_FUNC(Py_ssize_t)
|
|
_PyBytes_ReverseFind(const char *haystack, Py_ssize_t len_haystack,
|
|
const char *needle, Py_ssize_t len_needle,
|
|
Py_ssize_t offset);
|
|
|
|
|
|
/** Helper function to implement the repeat and inplace repeat methods on a buffer
|
|
*
|
|
* len_dest is assumed to be an integer multiple of len_src.
|
|
* If src equals dest, then assume the operation is inplace.
|
|
*
|
|
* This method repeately doubles the number of bytes copied to reduce
|
|
* the number of invocations of memcpy.
|
|
*/
|
|
PyAPI_FUNC(void)
|
|
_PyBytes_Repeat(char* dest, Py_ssize_t len_dest,
|
|
const char* src, Py_ssize_t len_src);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_INTERNAL_BYTESOBJECT_H */
|