#pragma once

#include <string.h>

namespace std
{
  using ::memcpy;
  using ::memmove;
  using ::memcmp;
  using ::memset;
  using ::memchr;

  using ::strcpy;
  using ::strncpy;
  using ::strcat;
  using ::strncat;
  using ::strcmp;
  using ::strncmp;
  using ::strlen;
  using ::strspn;
  using ::strcspn;

  using ::strpbrk;
  using ::strrchr;
  using ::strchr;
  using ::strstr;

  inline char *
  strpbrk(char *__s1, const char *__s2)
  { return __builtin_strpbrk(const_cast<const char *>(__s1), __s2); }

  inline char *
  strrchr(char *__s1, int __n)
  { return __builtin_strrchr(const_cast<const char *>(__s1), __n); }

  inline char *
  strchr(char *__s1, int __n)
  { return __builtin_strchr(const_cast<const char *>(__s1), __n); }

  inline char *
  strstr(char *__s1, const char *__s2)
  { return __builtin_strstr(const_cast<const char *>(__s1), __s2); }
};
