- #if !defined(H_SYSPOR) 
- #define H_SYSPOR 
-   
- /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ 
-   
- /* 
- |       Define 
- |       MONOTHREAD: if SMP functions are not going to be used nor linked with -lpthread 
- | 
- */ 
-   
- #ifdef _MSC_VER 
-         #include <windows.h> 
- #else 
-         #include <unistd.h> 
- #endif 
-   
- #ifdef _MSC_VER  
-         #if !defined(MVSC) 
-                 #define MVSC 
-         #endif 
- #endif 
-   
- #if defined(__linux__) || defined(__GNUC__) 
-         #if !defined(GCCLINUX) 
-                 #define GCCLINUX 
-         #endif 
- #endif 
-   
-   
- /* 
- | 
- |       To allow multithreaded functions, MULTI_THREADED_INTERFACE should be defined 
- | 
- \*--------------------------------------------------------------------------------*/ 
-   
-   
- #if defined(CYGWIN) 
-   
-         #define USECLOCK 
-         #define MULTI_THREADED_INTERFACE 
-         #undef  NT_THREADS 
-         #define POSIX_THREADS 
-         #define GCCLINUX_INTEGERS 
-   
- #elif defined(MINGW) 
-   
-         #define USEWINCLOCK 
-         #define MULTI_THREADED_INTERFACE 
-         #define NT_THREADS 
-         #undef  POSIX_THREADS 
-         #define GCCLINUX_INTEGERS 
-          
- #elif defined(GCCLINUX) 
-   
-         #define USELINCLOCK 
-         #define MULTI_THREADED_INTERFACE 
-         #undef  NT_THREADS 
-         #define POSIX_THREADS 
-         #define GCCLINUX_INTEGERS 
-   
- #elif defined(MVSC) 
-   
-         #define USEWINCLOCK  
-         #define MULTI_THREADED_INTERFACE 
-         #define NT_THREADS 
-         #undef  POSIX_THREADS 
-         #define MSWINDOWS_INTEGERS 
-   
- #else 
-          
-         #error COMPILER NOT DEFINED 
-   
- #endif 
-   
-   
-   
- #if defined(MONOTHREAD) 
-         #undef MULTI_THREADED_INTERFACE 
- #endif 
-   
-   
-   
- #if defined(GCCLINUX) 
-   
-         #define U64(x) (x##ull) 
-   
- #elif defined(MVSC) 
-   
-         #define U64(x) (x##ui64) 
-   
- #else 
-         #error OS not defined properly 
- #endif 
-   
-   
- #if defined(GCCLINUX) 
- /* 
-         typedef unsigned long long int  uint64_t; 
-         typedef long long int                   int64_t; 
-         typedef unsigned char                   uint8_t; 
-         typedef unsigned short int              uint16_t; 
-         typedef unsigned int                    uint32_t; 
- */ 
-   
-         #include <stdint.h> 
-   
- #elif defined(MVSC) 
-   
-         typedef unsigned char                   uint8_t; 
-         typedef unsigned short int              uint16_t; 
-         typedef unsigned int                    uint32_t; 
-         typedef unsigned __int64                uint64_t; 
-   
-         typedef signed char                             int8_t; 
-         typedef short int                               int16_t; 
-         typedef int                                             int32_t; 
-         typedef __int64                                 int64_t; 
-   
- #else 
-         #error OS not defined properly for 64 bit integers 
- #endif 
-   
-   
- /*----------------- 
-         PATH NAMES 
- ------------------*/ 
-   
- #if defined(GCCLINUX) 
-         #define FOLDERSEP "/" 
- #elif defined(MVSC) 
-         #define FOLDERSEP "\\" 
- #else 
-         #define FOLDERSEP "/" 
- #endif 
-   
- /* path names */ 
- extern int isfoldersep (int x); 
-   
- /*----------------- 
-         FOPEN MAX 
- ------------------*/ 
-   
- extern int mysys_fopen_max (void); 
-   
- /*------------  
-         TIMER  
- -------------*/ 
-   
- typedef int64_t myclock_t; 
-   
- extern myclock_t myclock(void); 
- extern myclock_t ticks_per_sec (void); 
-   
- #define MYCLOCKS_PER_SEC (ticks_per_sec()) 
- #define GET_TICK (myclock()) 
-   
-   
- /*********************************************************************/ 
- #if defined(MULTI_THREADED_INTERFACE) 
-   
- /*------------  
-         THREADS 
- -------------*/ 
-   
- #if defined (POSIX_THREADS) 
-   
-         #include <pthread.h> 
-         #include <semaphore.h> 
-   
-         #define THREAD_CALL 
-          
-         typedef void * thread_return_t; 
-         typedef pthread_t                       mythread_t; 
-         typedef thread_return_t         (THREAD_CALL *routine_t) (void *); 
-         typedef pthread_mutex_t         mythread_mutex_t; 
-   
-         #ifdef SPINLOCKS 
-                 typedef pthread_spinlock_t      mythread_spinx_t;  
-         #else 
-                 typedef pthread_mutex_t         mythread_spinx_t;  
-         #endif 
-          
-         typedef sem_t                           mysem_t; 
-   
-   
- #elif defined(NT_THREADS) 
-   
-         #define WIN32_LEAN_AND_MEAN 
-   
-         #include <windows.h> 
-         #include <process.h> 
-   
-         #define THREAD_CALL __stdcall 
-   
-         typedef unsigned thread_return_t; 
-         typedef HANDLE          mythread_t; 
-         typedef thread_return_t (THREAD_CALL *routine_t) (void *); 
-         typedef HANDLE          mythread_mutex_t; 
-   
-         #define SPINLOCKS 
-   
-         #ifdef SPINLOCKS 
-                 typedef CRITICAL_SECTION mythread_spinx_t;  
-         #else 
-                 typedef HANDLE  mythread_spinx_t;  
-         #endif 
-   
-         typedef HANDLE          mysem_t; 
-   
- #else 
-         #error Definition of threads not present 
- #endif 
-   
-   
-   
- extern int /*boolean*/  mythread_create (/*@out@*/ mythread_t *thread, routine_t start_routine, void *arg, /*@out@*/ int *ret_error); 
- extern int /*boolean*/  mythread_join (mythread_t thread); 
- extern void                     mythread_exit (void); 
- extern const char *             mythread_create_error (int err); 
-   
- extern void                     mythread_mutex_init             (mythread_mutex_t *m); 
- extern void                     mythread_mutex_destroy  (mythread_mutex_t *m); 
- extern void                     mythread_mutex_lock     (mythread_mutex_t *m); 
- extern void                     mythread_mutex_unlock   (mythread_mutex_t *m); 
-   
- extern void                     mythread_spinx_init             (mythread_spinx_t *m); /**/ 
- extern void                     mythread_spinx_destroy  (mythread_spinx_t *m); /**/ 
- extern void                     mythread_spinx_lock     (mythread_spinx_t *m); /**/ 
- extern void                     mythread_spinx_unlock   (mythread_spinx_t *m); /**/ 
-   
- /* semaphores*/ 
- extern int /*boolean*/  mysem_init              (mysem_t *sem, unsigned int value); 
- extern int /*boolean*/  mysem_wait              (mysem_t *sem); 
- extern int /*boolean*/  mysem_post              (mysem_t *sem); 
- extern int /*boolean*/  mysem_destroy   (mysem_t *sem); 
- #endif 
-   
-   
- #if defined(MINGW) 
- #undef GCCLINUX 
- #define MSVC 
- #endif 
-   
-   
- /* end MULTI_THREADED_INTERFACE*/ 
- #endif 
-   
- /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ 
-