forked from BSB-WS23/mpstubs
123 lines
4.2 KiB
C
123 lines
4.2 KiB
C
|
/*! \file
|
||
|
* \brief General purpose \ref string "String functions"
|
||
|
*/
|
||
|
#pragma once
|
||
|
|
||
|
#include "types.h"
|
||
|
|
||
|
/*! \defgroup string String function
|
||
|
* \brief String functions as provided by `%string.h` in the C standard library
|
||
|
*/
|
||
|
|
||
|
/*! \brief Find the first occurrence of a character in a string
|
||
|
* \ingroup string
|
||
|
* \param s string to
|
||
|
* \param c character to find
|
||
|
* \return Pointer to first occurrence of the character
|
||
|
* or to null byte at the end of the string if not found
|
||
|
*/
|
||
|
extern "C" char *strchrnul(const char *s, int c);
|
||
|
|
||
|
/*! \brief Find the first occurrence of a character in a string
|
||
|
* \ingroup string
|
||
|
* \param s string to
|
||
|
* \param c character to find
|
||
|
* \return Pointer to first occurrence of the character
|
||
|
* or to nullptr if not found
|
||
|
*/
|
||
|
extern "C" char *strchr(const char *s, int c);
|
||
|
|
||
|
/*! \brief Compare two strings
|
||
|
* \ingroup string
|
||
|
* \param s1 first string
|
||
|
* \param s2 second string
|
||
|
* \return an integer less than, equal to, or greater than zero if first string is found, respectively,
|
||
|
* to be less than, to match, or be greater than second string
|
||
|
*/
|
||
|
extern "C" int strcmp(const char *s1, const char *s2);
|
||
|
|
||
|
/*! \brief Compare two strings
|
||
|
* \ingroup string
|
||
|
* \param s1 first string
|
||
|
* \param s2 second string
|
||
|
* \param n number of bytes to compare
|
||
|
* \return an integer less than, equal to, or greater than zero if the given number of bytes of the first string are
|
||
|
* found, respectively, to be less than, to match, or be greater than second string
|
||
|
*/
|
||
|
extern "C" int strncmp(const char *s1, const char *s2, size_t n);
|
||
|
|
||
|
/*! \brief Calculate the length of a string
|
||
|
* \ingroup string
|
||
|
* \param s pointer to a string
|
||
|
* \return number of bytes in the string
|
||
|
*/
|
||
|
extern "C" size_t strlen(const char *s);
|
||
|
|
||
|
/*! \brief Calculate the length of a string, limited by maxlen
|
||
|
* \ingroup string
|
||
|
* \param s pointer to a string
|
||
|
* \param maxlen upper limit of length to be returned
|
||
|
* \return number of bytes in the string, or maxlen -- whichever is smaller
|
||
|
*/
|
||
|
extern "C" size_t strnlen(const char *s, size_t maxlen);
|
||
|
|
||
|
/*! \brief Copy the contents of a string
|
||
|
* including the terminating null byte (`\0`)
|
||
|
* \ingroup string
|
||
|
* \param dest destination string buffer
|
||
|
* \param src source string buffer
|
||
|
* \return a pointer to the destination string buffer
|
||
|
* \note Beware of buffer overruns!
|
||
|
*/
|
||
|
extern "C" char * strcpy(char * dest, const char * src); //NOLINT
|
||
|
|
||
|
/*! \brief Copy the contents of a string up to a maximum length
|
||
|
* or the terminating null byte (`\0`), whatever comes first.
|
||
|
* \ingroup string
|
||
|
* \param dest destination string buffer
|
||
|
* \param src source string buffer
|
||
|
* \param n maximum number of bytes to copy
|
||
|
* \return a pointer to the destination string buffer
|
||
|
* \note If there is no null byte (`\0`) among the first `n` bytes, the destination will not be null-terminated!
|
||
|
*/
|
||
|
extern "C" char * strncpy(char * dest, const char * src, size_t n);
|
||
|
|
||
|
/*! \brief Copy a memory area
|
||
|
* \ingroup string
|
||
|
* \param dest destination buffer
|
||
|
* \param src source buffer
|
||
|
* \param size number of bytes to copy
|
||
|
* \return pointer to destination
|
||
|
* \note The memory must not overlap!
|
||
|
*/
|
||
|
extern "C" void* memcpy(void * __restrict__ dest, void const * __restrict__ src, size_t size);
|
||
|
|
||
|
/*! \brief Copy a memory area
|
||
|
* while the source may overlap with the destination
|
||
|
* \ingroup string
|
||
|
* \param dest destination buffer
|
||
|
* \param src source buffer
|
||
|
* \param size number of bytes to copy
|
||
|
* \return pointer to destination
|
||
|
*/
|
||
|
extern "C" void* memmove(void * dest, void const * src, size_t size);
|
||
|
|
||
|
/*! \brief Fill a memory area with a pattern
|
||
|
* \ingroup string
|
||
|
* \param dest destination buffer
|
||
|
* \param pattern single byte pattern
|
||
|
* \param size number of bytes to fill with pattern
|
||
|
* \return pointer to destination
|
||
|
*/
|
||
|
extern "C" void* memset(void *dest, int pattern, size_t size);
|
||
|
|
||
|
/*! \brief Compare a memory area
|
||
|
* \ingroup string
|
||
|
* \param s1 first memory buffer
|
||
|
* \param s2 second memory buffer
|
||
|
* \param n number of bytes to compare
|
||
|
* \return an integer less than, equal to, or greater than zero if the first n bytes of s1 is found, respectively,
|
||
|
* to be less than, to match, or be greater than the first n bytes of s2.
|
||
|
*/
|
||
|
extern "C" int memcmp(const void * s1, const void * s2, size_t n);
|