#pragma once

#include <stdio.h>

#if !defined(OLD_DEBUG_LEVEL)
	#define OLD_DEBUG_LEVEL 0
#else
	#undef OLD_DEBUG_LEVEL
	#if DEBUG_LEVEL>=3
		#define OLD_DEBUG_LEVEL 3
	#elif DEBUG_LEVEL==2
		#define OLD_DEBUG_LEVEL 2
	#elif DEBUG_LEVEL==1
		#define OLD_DEBUG_LEVEL 1
	#endif
#endif

#undef DEBUG_LEVEL
#undef Verify
#undef Verify_And_Dump
#undef Warn
#undef Warn_And_Dump
#undef Dump
#undef Tell
#undef Check_Signature
#undef Check_Pointer
#undef Mem_Copy
#undef Str_Copy
#undef Str_Cat
#undef Check
#undef Check_Fpu
#undef Fail
#undef Cast_Object
#undef DEBUG_CODE
#undef Sqrt
#undef Arctan
#undef Arccos
#undef Arcsin

#define DEBUG_LEVEL 0
#define DEBUG_CODE(x)
#define Verify(c)
#define Verify_And_Dump(c,v)
#define Warn(c)
#define Warn_And_Dump(c,v)
#define Dump(v)
#define Tell(m)
#define Check_Pointer(p)
#define Check_Fpu()
#define Mem_Copy(destination, source, length, available)	memcpy(destination, source, length)
#define Str_Copy(destination, source, available)			strcpy(destination, source);
#define Str_Cat(destination, source, available)				strcat(destination, source);
#define Sqrt(value)		sqrt(value)
#define Arctan(y,x)		atan2(y,x)
#define Arccos(x)		acos(x)
#define Arcsin(x)		asin(x)
#define Power(x,y)		pow(x,y)

#define Check(p)
#define Check_Signature(p)
//#define Fail(m)					Fail_To_Debugger(m,__FILE__,__LINE__)
#define Fail(m)		abort();
#define Cast_Object(type, ptr)	((type)(ptr))