| #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 */ |