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
#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
enum xs_logtypes
{
xs_debug,
xs_message,
xs_warning,
xs_error,
xs_fatalerror,
xs__assertionfailed,
xs_logtypes_count
}
#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)))
#define xs_fabs(%1) floatabs(%1)
#define xs_asin(%1,%2) floatasin(%1, %2)
#define xs_sin(%1,%2) floatsin(%1, %2)
#define xs_acos(%1,%2) floatacos(%1, %2)
#define xs_cos(%1,%2) floatcos(%1, %2)
#define xs_atan(%1,%2) floatatan(%1, %2)
#define xs_atan2(%1,%2) floatatan2(%1, %2)
#define xs_tan(%1,%2) floattan(%1, %2)
XS__IL_RMULT
XS__IL_RMULT
#define XS__IL_RMULT 1103515245
#define XS_PLANE_A 0
#define XS_PLANE_B 1
#define XS_PLANE_C 2
#define XS_PLANE_D 3
#define XS_PITCH 0 // up / down
#define XS_YAW 1 // left / right
#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))