/*	Copyright (C) 2005 Garrett A. Kajmowicz

	This file is part of the uClibc++ Library.
	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.

	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
#pragma once
#ifdef ARDUINO_ARCH_AVR
#include "cstddef"
#include <string.h>

namespace std
{

	using ::memchr;
	using ::memcmp;
	using ::memcpy;
	using ::memmove;
	using ::memset;
	using ::strcat;
	using ::strchr;
	using ::strcmp;
	using ::strcoll;
	using ::strcpy;
	using ::strcspn;
	using ::strerror;
	using ::strlen;
	using ::strncat;
	using ::strncmp;
	using ::strncpy;
	using ::strpbrk;
	using ::strrchr;
	using ::strspn;
	using ::strstr;
	using ::strtok;
	using ::strxfrm;

#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
	// Extra definitions required in c++ spec

	inline void *memchr(void *s, int c, size_t n)
	{
		return memchr(const_cast<const void *>(s), c, n);
	}

	inline char *strchr(char *s, int c)
	{
		return strchr(const_cast<const char *>(s), c);
	}

	inline char *strpbrk(char *s1, const char *s2)
	{
		return strpbrk(const_cast<const char *>(s1), s2);
	}

	inline char *strrchr(char *s, int c)
	{
		return strrchr(const_cast<const char *>(s), c);
	}

	inline char *strstr(char *s1, const char *s2)
	{
		return strstr(const_cast<const char *>(s1), s2);
	}
#endif
}
#else
#include "Cpp_Standard_Library.h"
#include _CSL_Official(cstring)
#endif