#ifndef __PLATFORM_HPP__
#define __PLATFORM_HPP__
#include "Top.hpp"
#include "defines.h"
#include <stdarg.h>
interface Platform : public virtual Top
{
public: virtual void sprintf( char *s, const char * format, ... )
PRINTF_ALIKE( 3, 4 ) = 0;
public: virtual void vsprintf( char *s, const char *format, va_list raw ) = 0;
public: virtual Index printfLength( const char * format, ... )
PRINTF_ALIKE( 2, 3 ) = 0;
public: virtual Index vprintfLength( const char * format, va_list raw ) = 0;
public: virtual void rawErrorPrintf( const char * format, ... )
PRINTF_ALIKE( 2, 3 ) = 0;
public: virtual void rawErrorVPrintf( const char * format, va_list raw ) = 0;
public: virtual char *getErrorDescription( int errCode ) = 0;
public: virtual void exitImmediate( long status ) = 0;
public: virtual void suicide() NORETURN = 0;
public: virtual void attachDebugger() = 0;
public: virtual void setImageName( const char *aName ) = 0;
public: virtual const char *getImageName() const = 0;
public: virtual char *getTimeStampString() = 0;
public: virtual char *strcpy( char *dst, const char *src ) = 0;
public: virtual int strcmp( const char *s1, const char *s2 ) = 0;
public: virtual Index strlen( const char *s ) = 0;
public: virtual char *strcat( char *dst, const char *src ) = 0;
public: virtual char *strchr( const char *s, int c ) = 0;
public: virtual long strtol( const char *str, char **endptr, int base ) = 0;
public: virtual int memcmp( void *s1, const void *s2, Index n ) = 0;
public: virtual void *memchr( const void *s, int c, Index n ) = 0;
public: virtual void *memcpy( void *s1, const void *s2, Index n ) = 0;
public: virtual void *memset( void *s, int c, Index n ) = 0;
public: virtual void *allocateMemory( Index aSize ) = 0;
public: virtual void deallocateMemory( void *aPointer ) = 0;
public: static void *allocateMemoryBootstrap( Index aSize );
public: static void deallocateMemoryBootstrap( void *aPointer );
public: static Platform *getInstance();
public: static Platform *getInstanceNow();
protected: static Platform *instance;
};
#endif