1 #ifndef Py_INTERNAL_BYTESOBJECT_H 2 #define Py_INTERNAL_BYTESOBJECT_H 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 #ifndef Py_BUILD_CORE 8 # error "this header requires Py_BUILD_CORE define" 9 #endif 10 11 12 /* runtime lifecycle */ 13 14 extern PyStatus _PyBytes_InitTypes(PyInterpreterState *); 15 16 17 /* Substring Search. 18 19 Returns the index of the first occurrence of 20 a substring ("needle") in a larger text ("haystack"). 21 If the needle is not found, return -1. 22 If the needle is found, add offset to the index. 23 */ 24 25 PyAPI_FUNC(Py_ssize_t) 26 _PyBytes_Find(const char *haystack, Py_ssize_t len_haystack, 27 const char *needle, Py_ssize_t len_needle, 28 Py_ssize_t offset); 29 30 /* Same as above, but search right-to-left */ 31 PyAPI_FUNC(Py_ssize_t) 32 _PyBytes_ReverseFind(const char *haystack, Py_ssize_t len_haystack, 33 const char *needle, Py_ssize_t len_needle, 34 Py_ssize_t offset); 35 36 37 /** Helper function to implement the repeat and inplace repeat methods on a buffer 38 * 39 * len_dest is assumed to be an integer multiple of len_src. 40 * If src equals dest, then assume the operation is inplace. 41 * 42 * This method repeately doubles the number of bytes copied to reduce 43 * the number of invocations of memcpy. 44 */ 45 PyAPI_FUNC(void) 46 _PyBytes_Repeat(char* dest, Py_ssize_t len_dest, 47 const char* src, Py_ssize_t len_src); 48 49 #ifdef __cplusplus 50 } 51 #endif 52 #endif /* !Py_INTERNAL_BYTESOBJECT_H */ 53