|
|
/*++
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 <linklist.h>
#include <buffer.h>
//#include <stistr.h>
#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 <regentry.h>
#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 */
|