2023-10-31 20:26:31 +03:00
|
|
|
/**
|
|
|
|
* @file pm_memchr.h
|
|
|
|
*
|
|
|
|
* A custom memchr implementation.
|
|
|
|
*/
|
2023-09-27 19:24:48 +03:00
|
|
|
#ifndef PRISM_MEMCHR_H
|
|
|
|
#define PRISM_MEMCHR_H
|
2023-06-30 21:30:24 +03:00
|
|
|
|
2023-09-27 19:24:48 +03:00
|
|
|
#include "prism/defines.h"
|
2023-11-30 19:36:10 +03:00
|
|
|
#include "prism/encoding.h"
|
2023-06-30 21:30:24 +03:00
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
2023-10-31 06:28:54 +03:00
|
|
|
/**
|
|
|
|
* We need to roll our own memchr to handle cases where the encoding changes and
|
|
|
|
* we need to search for a character in a buffer that could be the trailing byte
|
|
|
|
* of a multibyte character.
|
|
|
|
*
|
|
|
|
* @param source The source string.
|
|
|
|
* @param character The character to search for.
|
|
|
|
* @param number The maximum number of bytes to search.
|
|
|
|
* @param encoding_changed Whether the encoding changed.
|
|
|
|
* @param encoding A pointer to the encoding.
|
|
|
|
* @return A pointer to the first occurrence of the character in the source
|
|
|
|
* string, or NULL if no such character exists.
|
|
|
|
*/
|
2023-12-01 04:59:00 +03:00
|
|
|
void * pm_memchr(const void *source, int character, size_t number, bool encoding_changed, const pm_encoding_t *encoding);
|
2023-06-30 21:30:24 +03:00
|
|
|
|
|
|
|
#endif
|