/*++ Copyright (c) 1997 Microsoft Corporation Module Name: stilib.h Abstract: Various library definitions , common for multiple STI subprojects Author: Vlad Sadovsky (vlads) 26-Jan-1997 Revision History: 26-Jan-1997 VladS created --*/ #ifndef _INC_STILIB #define _INC_STILIB # if !defined( dllexp) # define dllexp __declspec( dllexport) # endif // !defined( dllexp) #include #include //#include #ifdef __cplusplus extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */ #if !defined(DEBUG) #if defined(_DEBUG) || defined(DBG) #define DEBUG #endif #endif #ifdef DBCS #define IS_LEAD_BYTE(c) IsDBCSLeadByte(c) #else #define IS_LEAD_BYTE(c) 0 #endif #ifdef DEBUG void cdecl nprintf(const char *, ...); #endif #ifdef DBCS #define ADVANCE(p) (p += IS_LEAD_BYTE(*p) ? 2 : 1) #else #define ADVANCE(p) (++p) #endif #define SPN_SET(bits,ch) bits[(ch)/8] |= (1<<((ch) & 7)) #define SPN_TEST(bits,ch) (bits[(ch)/8] & (1<<((ch) & 7))) int sbufchkf(const char FAR *, unsigned short); // I_IsBadStringPtrA() // // Private Win32 version of IsBadStringPtr that works properly, i.e. // like the Win16 version, it returns TRUE if the string is not // null-terminated. BOOL WINAPI I_IsBadStringPtrA(LPCSTR lpsz, UINT ucchMax); // // // #define IS_EMPTY_STRING(pch) (!(pch) || !(*(pch))) // // String run-time calls // // #define strcpyf(d,s) lstrcpy((d),(s)) #define strcatf(d,s) lstrcat((d),(s)) #define strlenf(s) lstrlen((s)) #define strcmpf(s1,s2) lstrcmp(s1,s2) #define stricmpf(s1,s2) lstrcmpi(s1,s2) #pragma intrinsic(memcmp,memset) #define memcmpf(d,s,l) memcmp((d),(s),(l)) #define memsetf(s,c,l) memset((s),(c),(l)) #define memmovef(d,s,l) MoveMemory((d),(s),(l)) #define memcpyf(d,s,l) CopyMemory((d),(s),(l)) /* * WaitAndYield processes all input messages. WaitAndProcessSends only * processes SendMessages. * * WaitAndYield takes an optional parameter which is the ID of another * thread concerned with the waiting. If it's not NULL, WM_QUIT messages * will be posted to that thread's queue when they are seen in the message * loop. */ DWORD WaitAndYield(HANDLE hObject, DWORD dwTimeout, volatile DWORD *pidOtherThread = NULL); DWORD WaitAndProcessSends(HANDLE hObject, DWORD dwTimeout); // // Message box routines // #define IDS_MSGTITLE 1024 //extern int MsgBox( HWND hwndDlg, UINT idMsg, UINT wFlags, const STR **aps = NULL ); //extern UINT MsgBoxPrintf(HWND hwnd,UINT uiMsg,UINT uiTitle,UINT uiFlags,...); //extern UINT LoadMsgPrintf(STR& strMessage,UINT uiMsg,...); // // Registry access class // //#include #ifdef __cplusplus } #endif /* __cplusplus */ #if !defined(DBG) && !defined(DEBUG) // // Overloaded allocation operators // inline void * __cdecl operator new(size_t size) { return (void *)LocalAlloc(LPTR,size); } inline void __cdecl operator delete(void *ptr) { LocalFree(ptr); } #if 0 inline UINT __cdecl allocated_size(void *ptr) { return ptr ? (UINT)LocalSize(ptr) : 0; } #endif #endif #endif /* _INC_STILIB */