#ifdef _MSDOS typedef long INT; typedef long LONG_INT; #define __FAR __far #define __HUGE __huge typedef void __HUGE *HugeCPtr; #else typedef int INT; typedef long int LONG_INT; #define __FAR #define __HUGE #define HugeCPtr StdCPtr #define NewHMem NewMem #define FreeHMem FreeMem #endif
typedef void *StdCPtr;
#if !defined( __GNUC__ ) typedef signed char c_int8; typedef signed short c_int16; typedef signed long c_int32; typedef unsigned char c_uint8; typedef unsigned short c_uint16; typedef unsigned long c_uint32; #if defined(STYX_CONFIG_OSMS) && defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 #define STYX_CONFIG_TINT64 typedef signed __int64 c_int64; typedef unsigned __int64 c_uint64; #endif #else /*__GNUC__*/ #define STYX_CONFIG_TINT64 typedef int8_t c_int8; typedef int16_t c_int16; typedef int32_t c_int32; typedef int64_t c_int64; typedef u_int8_t c_uint8; typedef u_int16_t c_uint16; typedef u_int32_t c_uint32; typedef u_int64_t c_uint64; #endif
#define AbstractType(TYPENAME) typedef StdCPtr TYPENAME
#define AbstractHugeType( TYPENAME ) \ typedef HugeCPtr TYPENAME
| Abs_T | abstract type | 
| Any_T | abstract type | 
#define c_bool int #define C_False 0 #define C_True 1 #ifndef __cplusplus #define bool c_bool #define False C_False #define True C_True #endif
typedef c_byte *c_bstring; /* sizeof(long) Bytes Len, Len Bytes */ typedef char *c_string; #ifndef __cplusplus typedef c_string string; #endif #if defined(WEOF) typedef wint_t wc_int; typedef wchar_t wc_char; typedef wchar_t *wc_string; #define WCHAR_LITERAL(c) L##c #else typedef unsigned long wc_int; typedef unsigned long wc_char; typedef unsigned long *wc_string; #define WCHAR_LITERAL(c) ((unsigned long)c) #endif
FILE* StdOutFile(void) #define STDOUT StdOutFile()  |  stdout  | 
FILE* StdErrFile(void) #define STDERR StdErrFile()  |  stderr  | 
void fprint_raw(FILE* fp, c_string s, size_t size)  |  prints string 's' in a printable form to file 'fp' 'size' >= 0: number of characters to print  | 
void prMsg_stdout(c_string s)  |  prints string 's' in a printable form to stdout  | 
void prMsg_stderr(c_string s)  |  prints string 's' in a printable form to stderr  | 
void AbortApp(c_string errmsg)
#define STD_ERREXIT AbortApp("")
 |  aborts application with error message 'errmsg'  | 
PHDL_TRAP getTrapHdl(void)  | gets the trap handler | 
void setTrapHdl(PHDL_TRAP h_trap)  |  sets a trap handler ( xaron error callback )  | 
PHDL_ABORT getErrExitHdl(void)  | gets the abort handler | 
void setErrExitHdl(PHDL_ABORT h_abort)  | sets an abort handler | 
PHDL_FREEMEM getFreeMemHdl(void)  |  gets the handler to organize free memory from heap  | 
void setFreeMemHdl(PHDL_FREEMEM h_freemem)  |  sets a handler to organize free memory from heap  | 
void initStdFiles(FILE* out, FILE* err)  | overwrites stdout, stderr | 
void quitStdFiles(void)  | resets stdout, stderr | 
StdCPtr initSem(c_string id, int maxcnt, int initcnt)  |  creates or opens semaphore 'id [NULL]' to synchronize a maximum of 'maxcnt' concurrent threads with an initial value of 'initcnt' RC: semaphore or NULL non-MS: 'id', 'maxcnt' not used  | 
c_bool quitSem(StdCPtr sem)  |  closes and - on OK - destroys semaphore 'sem' RC: True=OK  | 
int waitSem(StdCPtr sem)  | waits and enters critical section 'sem' ( blocking ) RC: 1=OK, 0=occupied, -1=error  | 
int trySem(StdCPtr sem)  | tries to enter critical section 'sem' ( non-blocking ) RC: 1=OK, 0=occupied, -1=error  | 
c_bool postSem(StdCPtr sem, int cnt)  | leaves critical section 'sem' and releases 'cnt' resources RC: True=OK non-MS: 'cnt' not used (=1)  | 
typedef void (*PF_ERROR)(c_bool cond, c_string format, ...);
void ForceCore(void)  |  since we didn't find an appropriate function in the c-lib  | 
PF_ERROR _AssCheck(c_string kind, c_string file, int line)  |  saves assertion type, source position and returns assert function  | 
#define c_assert (*(_AssCheck("Restriction error",__FILE__,__LINE__)))
#define c_bug    (*(_AssCheck("Internal error",   __FILE__,__LINE__)))
#define C_BUG    c_bug(C_False,"")
#ifndef __cplusplus
#define assert   c_assert
#define bug      c_bug
#define BUG      C_BUG
#endif
   Usage of the macros 'assert', 'bug':
   assert | bug ( condition, which has to be true,
                  message format string ( see printf ),
                  any further parameter, according to the above format string );
void sysbase_init(void)  | initializes module ( for thread-savety ) | 
void sysbase_quit(void)  | terminates module ( for thread-savety ) | 
StdCPtr sysbase_sem(void)  | system semaphore ( for thread-savety ) | 
#define STR_EMPTY(s)      ( (s) == (c_string)NULL || *(s) == '\0' )
#define INRANGE(a,x,b)    ( ( (a) <= (x) ) && ( (x) <= (b) ) )
#define ABS(x)            ( (x) < 0 ? - (x) : (x) )
#define MAX(a,b)          ( (a) < (b) ? (b) : (a) )
#define MIN(a,b)          ( (a) < (b) ? ( a ) : (b) )
#define EQSIGN(a,b)       ( ( ( (a) <= 0 ) && ( (b) <= 0 ) ) || \
                            ( ( (a) >= 0 ) && ( (b) >= 0 ) ) )