#ifndef __cplusplus
#error Header file <memory.h> may only be used from C++
#endif
#pragma force_top_level
#pragma include_only_once

#ifndef __memory_h
#define __memory_h

#ifndef __size_t
#define __size_t 1
typedef unsigned int size_t;
#endif

#ifndef __GNUC__
extern "C" void *memccpy(void *s1, const void *s2, int c, int n);
   /*
    * memccpy() copies characters from memory  area  s2  into  s1,
    * stopping  after the first occurrence of character c has been
    * copied, or after n characters have  been  copied,  whichever
    * comes  first.   It  returns a pointer to the character after
    * the copy of c in s1, or a NULL pointer if c was not found in
    * the first n characters of s2.
    */

extern "C" void *memcpy(void * /*s1*/, const void * /*s2*/, size_t /*n*/);
   /*
    * copies n characters from the object pointed to by s2 into the object
    * pointed to by s1. If copying takes place between objects that overlap,
    * the behaviour is undefined.
    * Returns: the value of s1.
    */

extern "C" void *memset(void * /*s*/, int /*c*/, size_t /*n*/);
   /*
    * copies the value of c (converted to an unsigned char) into each of the
    * first n charactes of the object pointed to by s.
    * Returns: the value of s.
    */

extern "C" void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/);
   /*
    * locates the first occurence of c (converted to an unsigned char) in the
    * initial n characters (each interpreted as unsigned char) of the object
    * pointed to by s.
    * Returns: a pointer to the located character, or a null pointer if the
    *          character does not occur in the object.
    */
#endif // __GNUC__

#endif
