//                    (C) 2016 SiLeader.
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          http://www.boost.org/LICENSE_1_0.txt)
#pragma once

#include <developer_settings.hpp>
#include <cstddef>

namespace STD
{
    //mem*
    void *memcpy(void *dest, const void *src, STD::size_t n);
    void *memmove(void *dest, const void *src, STD::size_t n);
    int memcmp(const void *p1, const void *p2, STD::size_t n);
    void *memchr(const void *src, int c, STD::size_t n);
    void *memset(void *dest, int c, STD::size_t n);

    //std*
    char *strcpy(char *dest, const char *src);
    char *strncpy(char *dest, const char *src, STD::size_t n);
    char *strcat(char *dest, const char *src);
    char *strncat(char *dest, const char *src, STD::size_t n);
    char *strcmp(const char *s1, const char *s2);
    int strcoll(const char *s1, const char *s2);
    int strncmp(const char *s1, const char *s2, STD::size_t n);
    STD::size_t strxfrm(char *dest, const char *src, STD::size_t n);
    char *strchr(const char *src, int c);
    STD::size_t strcspn(const char *target, const char *str);
    char *strpbrk(const char *target, const char *str);
    char *strrchr(const char *target, int c);
    STD::size_t strspn(const char *target, const char *str);
    char *strstr(const char *target, const char *str);
    char *strtok(char *target_dest, const char *token);
    char *strerror(int errnum);
    STD::size_t strlen(const char *target);
}
