Constants

xs.inc

XS Library Version 0.1 MACROS THAT YOU CAN DEFINE BEFORE INCLUDING XS.INC: XS_FLEQ_TOLERANCE: Tolerance that is used for XS_FLEQ float nearly-equal comparisions DEFAULT: 0.000005 XS_DEBUG Turn debug logging on DEFAULT: 0 XS_LOGBUFFER_SIZE Buffer size for logging DEFAULT: 512 XS_TASK_MAXPARAMS Maximal parameter count for managed tasks DEFAULT: 8 XS_TASK_MAXPARAMSIZE Maximal size of string parameter for tasks Has to be power of 2 and has to be >= 8 DEFAULT: 512 XS_TASK_MANAGEDIDS Number of managed IDs for tasks. DEFAULT: 2048 XS_REPLACEBUF_SIZE DEFAULT: 3072 NOTES: On AMX, VexdUM is required for some math functions xs__ / XS__ (2 underscores) stuff is meant to be intern untested: never tested half-tested: succesfully used in other applications; not extensively tested in xs though tested: fully tested If you have any useful functions / ideas for functions, please tell me.

_xs_included
#if defined _xs_included
  #endinput
#endif
#define _xs_included

// **** CONFIG CHECK

#if !defined XS_FLEQ_TOLERANCE
	#define XS_FLEQ_TOLERANCE 0.000005
#endif

#if !defined XS_DEBUG
	#define XS_DEBUG 0
#endif

#if !defined XS_LOGBUFFER_SIZE
	#define XS_LOGBUFFER_SIZE 512
#endif

#if !defined XS_TASK_MAXPARAMS
	#define XS_TASK_MAXPARAMS 8
#endif

#if !defined XS_TASK_MAXPARAMSIZE
	#define XS_TASK_MAXPARAMSIZE 512
#endif

#if !defined XS_TASK_MANAGEDIDS
	#define XS_TASK_MANAGEDIDS 2048
#endif

#if !defined XS_REPLACEBUF_SIZE
	#define XS_REPLACEBUF_SIZE 3072
#endif

xs_logtypes

xs_logtypes
enum xs_logtypes
{
	xs_debug,
	xs_message,
	xs_warning,
	xs_error,
	xs_fatalerror,
	xs__assertionfailed,

	// must come last
	xs_logtypes_count
}

xs_assert

xs_assert
#define xs_assert(%1,%2) if (!xs_assertfunc(%1,%2)) xs__global_null /= xs__global_null

xs_assert_dbg

xs_assert_dbg
	#define xs_assert_dbg(%1,%2) if (!xs_assertfunc(%1,%2)) xs__global_null /= xs__global_null

Checks if two floating point values are nearly equal.

XS_FLEQ

Return

1 if they are nearly equal, 0 otherwise.

#define XS_FLEQ(%1,%2) (((%1) <= ((%2) + XS_FLEQ_TOLERANCE)) && ((%1) >= ((%2) - XS_FLEQ_TOLERANCE)))

xs_fabs

xs_fabs
#define xs_fabs(%1) floatabs(%1)

xs_asin

xs_asin
#define xs_asin(%1,%2) floatasin(%1, %2)

xs_sin

xs_sin
#define xs_sin(%1,%2) floatsin(%1, %2)

xs_acos

xs_acos
#define xs_acos(%1,%2) floatacos(%1, %2)

xs_cos

xs_cos
#define xs_cos(%1,%2) floatcos(%1, %2)

xs_atan

xs_atan
#define xs_atan(%1,%2) floatatan(%1, %2)

xs_atan2

xs_atan2
#define xs_atan2(%1,%2) floatatan2(%1, %2)

xs_tan

xs_tan
#define xs_tan(%1,%2) floattan(%1, %2)

XS__IL_RMULT

XS__IL_RMULT
#define XS__IL_RMULT 1103515245

XS_PLANE_A

XS_PLANE_A
#define XS_PLANE_A 0

XS_PLANE_B

XS_PLANE_B
#define XS_PLANE_B 1

XS_PLANE_C

XS_PLANE_C
#define XS_PLANE_C 2

XS_PLANE_D

XS_PLANE_D
#define XS_PLANE_D 3

XS_PITCH

XS_PITCH
#define	XS_PITCH				0		// up / down

XS_YAW

XS_YAW
#define	XS_YAW					1		// left / right

XS_ROLL

XS_ROLL
#define	XS_ROLL					2		// fall over

XS__MAX_ENGINE_MESSAGES

XS__MAX_ENGINE_MESSAGES
#define XS__MAX_ENGINE_MESSAGES 63

XS__MAX_POSSIBLE_MESSAGES

XS__MAX_POSSIBLE_MESSAGES
#define XS__MAX_POSSIBLE_MESSAGES 255

xs_paramtypes

xs_paramtypes

**** managed tasks

enum xs_paramtypes
{
	xs_invalid = 0,
	xs_int,
	xs_float,
	xs_string
}

xs__TaskParamCount

xs__TaskParamCount
#define xs__TaskParamCount xs__TaskParam[0]

xs__TaskParamType

xs__TaskParamType
#define xs__TaskParamType[%1] xs__TaskParam[1 + %1]

xs__TaskParamValue

xs__TaskParamValue
#define xs__TaskParamValue[%1] xs__TaskParam[1 + XS_TASK_MAXPARAMS + (%1 * (XS_TASK_MAXPARAMSIZE char))]

xs__ITaskParamCount

xs__ITaskParamCount
#define xs__ITaskParamCount xs__ITaskParam[0]

xs__ITaskParamType

xs__ITaskParamType
#define xs__ITaskParamType[%1] xs__ITaskParam[1 + %1]

xs__ITaskParamValue

xs__ITaskParamValue
#define xs__ITaskParamValue[%1] xs__ITaskParam[1 + XS_TASK_MAXPARAMS + (%1 * (XS_TASK_MAXPARAMSIZE char))]

XS_MAKE_TASKFUNC

XS_MAKE_TASKFUNC
#define XS_MAKE_TASKFUNC(%1) public %1(const _xs__taskparam[], _xs__taskid) if(xs__task_setup(_xs__taskparam, _xs__taskid))