#ifndef CSTRING_H
#define CSTRING_H

#include "size_t.h"

#ifdef __cplusplus
extern "C"
{
#endif

    int strncmp(const char*, const char*, size_t);

    void* memcpy(void*, const void*, unsigned long);
    void* memmove(void*, const void*, size_t);
    void* memchr(const void*, int, size_t);
    int memcpi(const void*, const void*, size_t);

    int memcmp(const void*, const void*, size_t);

    int strcmp(const char*, const char*);

    char* strstr(const char*, const char*);

    char* strcpy(char* pDest, const char* pSrc);

    size_t strlen(const char* pStr);

    char* strcat(char*, const char*);
    char* strncat(char*, const char*, size_t);

    char* strncpy(char*, const char*, size_t);
    char* strchr(const char*, int);
    char* strrchr(const char*, int);
    size_t strcspn(const char*, const char*);
    char* strtok(char*, const char*);

    int strcasecmp(const char*, const char*);

#ifdef __cplusplus
}

namespace std {

using ::memchr;
using ::memcmp;
using ::memcpi;
using ::memcpy;
using ::memmove;

using ::strcasecmp;
using ::strcat;
using ::strchr;
using ::strcmp;
using ::strcpy;
using ::strcspn;
using ::strlen;
using ::strncat;
using ::strncmp;
using ::strncpy;
using ::strrchr;
using ::strstr;
using ::strtok;

} // namespace std
#endif

#endif // CSTRING_H
