Subversion Repositories WoWGM

Rev

Rev 18 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef  _STPL_H_
#define  _STPL_H_

#ifdef  _WIN32
#define NOCOMM
#define NOSOUND
#include <Windows.h>
#endif//_WIN32



/****************************************************************************
*
*       TYPE DEFINITIONS
*
***/

typedef char i8;
typedef char int8;
typedef short i16;
typedef short int16;
typedef int BOOL;
typedef int i32;
typedef int int32;
typedef unsigned char u8;
typedef unsigned char uchar;
typedef unsigned char uint8;
typedef unsigned short u16;
typedef unsigned short ushort;
typedef unsigned short uint16;
typedef unsigned int u32;
typedef unsigned int uint;
typedef unsigned int uint32;
typedef unsigned long ulong;
typedef unsigned long DWORD;
typedef void* LPVOID;
typedef void* HANDLE;


/****************************************************************************
*
*       SSTR FUNCTIONS
*
***/

extern char const* SStrChr(char const* string, char ch);
extern char* SStrChr(char* string, char ch);
extern char const* SStrChrR(char const* string, char ch);
extern char* SStrChrR(char* string, char ch);
extern DWORD SStrCopy(char* dest, char const* source, DWORD destsize);
extern int SStrCmp(char const* string1, char const* string2, DWORD maxchars);
extern int SStrCmpI(char const* string1, char const* string2, DWORD maxchars = 0xFFFFFFFF);
extern DWORD SStrLen(char const* string);
extern DWORD SStrLen(unsigned short const* string);
extern void SStrLower(char* string);
extern int SStrToInt(char const* string);
extern void SStrUpper(char* string);


/****************************************************************************
*
*       SSYNCOBJECT CLASS
*
***/

class SSyncObject
{

public:
        
        SSyncObject();
        ~SSyncObject();

        void Close();
        BOOL Valid();
        DWORD Wait(DWORD timeoutMs);

        HANDLE m_opaqueData;

};


/****************************************************************************
*
*       STORM THREADING
*
***/

#ifdef  _WIN32
typedef DWORD(WINAPI THREADCALLBACK)(LPVOID);
#else

typedef LPVOID(THREADCALLBACK)(LPVOID);
#endif//_WIN32


extern HANDLE SCreateThread(THREADCALLBACK*     lpStartAddress,
                                                        LPVOID                  lpParameter,
                                                        DWORD*                  lpThreadId,
                                                        char*                   threadName);

/****************************************************************************
*
*       STHREAD CLASS
*
***/

class SThread : public SSyncObject
{

public:

        SThread();
        ~SThread();

        static BOOL Create(THREADCALLBACK*      lpStartAddress,
                                           LPVOID                       param,
                                           SThread&                     thread,
                                           char*                        threadName) {
                thread.m_opaqueData = SCreateThread(lpStartAddress, param, 0, threadName);
                return thread.m_opaqueData != 0;
        }

};

#endif /*_STPL_H*/