mirror of
https://github.com/Gigaslav/HL2Overcharged.git
synced 2026-01-04 02:10:18 +03:00
236 lines
9.7 KiB
C++
236 lines
9.7 KiB
C++
//******************************************************************************
|
|
//
|
|
// KATO.H
|
|
//
|
|
// Definition module for the Kato constants and CKato interface
|
|
//
|
|
// Date Name Description
|
|
// -------- -------- -----------------------------------------------------------
|
|
// 02/13/95 SteveMil Created
|
|
//
|
|
//******************************************************************************
|
|
|
|
#ifndef __KATO_H__
|
|
#define __KATO_H__
|
|
|
|
//******************************************************************************
|
|
// Define functions as import when building kato, and as export when this file
|
|
// is included by all other applications. We only use KATOAPI on C++ classes.
|
|
// For straight C functions, our DEF file will take care of exporting them.
|
|
//******************************************************************************
|
|
|
|
#ifndef KATOAPI
|
|
#define KATOAPI __declspec(dllimport)
|
|
#endif
|
|
|
|
//******************************************************************************
|
|
// Define EXTERN_C so that the flat API's will not get mangled by C++
|
|
//******************************************************************************
|
|
|
|
#ifndef EXTERN_C
|
|
#ifdef __cplusplus
|
|
#define EXTERN_C extern "C"
|
|
#else
|
|
#define EXTERN_C
|
|
#endif
|
|
#endif
|
|
|
|
//******************************************************************************
|
|
// Specify 32 bit pack size to ensure everyone creates the correct size objects
|
|
//******************************************************************************
|
|
|
|
#pragma pack(4)
|
|
|
|
//******************************************************************************
|
|
// Constants
|
|
//******************************************************************************
|
|
|
|
#define KATO_MAX_LEVEL 31
|
|
#define KATO_MAX_VERBOSITY 15
|
|
#define KATO_MAX_STRING_LENGTH 1023
|
|
#define KATO_MAX_DATA_SIZE 1024
|
|
|
|
//******************************************************************************
|
|
// Types
|
|
//******************************************************************************
|
|
|
|
typedef HANDLE HKATO;
|
|
|
|
typedef struct _KATOCALLBACKSTRUCTW {
|
|
LPARAM lParam;
|
|
HKATO hKato;
|
|
DWORD dwThreadID;
|
|
DWORD dwTickCount;
|
|
DWORD dwLevel;
|
|
DWORD dwLevelID;
|
|
DWORD dwVerbosity;
|
|
LPCWSTR wszLog;
|
|
} KATOCALLBACKSTRUCTW, *LPKATOCALLBACKSTRUCTW;
|
|
|
|
typedef struct _KATOCALLBACKSTRUCTA {
|
|
LPARAM lParam;
|
|
HKATO hKato;
|
|
DWORD dwThreadID;
|
|
DWORD dwTickCount;
|
|
DWORD dwLevel;
|
|
DWORD dwLevelID;
|
|
DWORD dwVerbosity;
|
|
LPCSTR szLog;
|
|
} KATOCALLBACKSTRUCTA, *LPKATOCALLBACKSTRUCTA;
|
|
|
|
typedef BOOL (CALLBACK *LPKATOCALLBACKW)(LPKATOCALLBACKSTRUCTW);
|
|
typedef BOOL (CALLBACK *LPKATOCALLBACKA)(LPKATOCALLBACKSTRUCTA);
|
|
|
|
typedef enum _KATO_FLUSH_TYPE {
|
|
KATO_FLUSH_ON,
|
|
KATO_FLUSH_OFF,
|
|
KATO_FLUSH_NOW,
|
|
} KATO_FLUSH_TYPE, *LPKATO_FLUSH_TYPE;
|
|
|
|
//******************************************************************************
|
|
// Common APIs for C and C++ interfaces
|
|
//******************************************************************************
|
|
|
|
EXTERN_C BOOL WINAPI KatoSetServerW(LPCWSTR wszServer);
|
|
EXTERN_C BOOL WINAPI KatoSetServerA(LPCSTR szServer);
|
|
EXTERN_C BOOL WINAPI KatoGetServerW(LPWSTR wszServer, INT nCount);
|
|
EXTERN_C BOOL WINAPI KatoGetServerA(LPSTR szServer, INT nCount);
|
|
EXTERN_C BOOL WINAPI KatoSetCallbackW(LPKATOCALLBACKW lpCallbackW, LPARAM lParam);
|
|
EXTERN_C BOOL WINAPI KatoSetCallbackA(LPKATOCALLBACKA lpCallbackA, LPARAM lParam);
|
|
EXTERN_C BOOL WINAPI KatoFlush(KATO_FLUSH_TYPE flushType);
|
|
EXTERN_C BOOL WINAPI KatoDebug(BOOL fEnabled, DWORD dwMaxLogVersbosity,
|
|
DWORD dwMaxCommentVersbosity, DWORD dwMaxLevel);
|
|
|
|
EXTERN_C HKATO WINAPI KatoGetDefaultObject(VOID);
|
|
|
|
//******************************************************************************
|
|
// APIs for C interface (C++ applications should use the CKato class)
|
|
//******************************************************************************
|
|
|
|
// Construction and destruction
|
|
EXTERN_C HKATO WINAPI KatoCreateW(LPCWSTR wszName);
|
|
EXTERN_C HKATO WINAPI KatoCreateA(LPCSTR szName);
|
|
EXTERN_C BOOL WINAPI KatoDestroy(HKATO hKato);
|
|
|
|
// Unicode functions
|
|
EXTERN_C INT WINAPIV KatoBeginLevelW(HKATO hKato, DWORD dwLevelID, LPCWSTR wszFormat, ...);
|
|
EXTERN_C INT WINAPIV KatoBeginLevelVW(HKATO hKato, DWORD dwLevelID, LPCWSTR wszFormat, va_list pArgs);
|
|
EXTERN_C INT WINAPIV KatoEndLevelW(HKATO hKato, LPCWSTR wszFormat, ...);
|
|
EXTERN_C INT WINAPIV KatoEndLevelVW(HKATO hKato, LPCWSTR wszFormat, va_list pArgs);
|
|
EXTERN_C BOOL WINAPIV KatoLogW(HKATO hKato, DWORD dwVerbosity, LPCWSTR wszFormat, ...);
|
|
EXTERN_C BOOL WINAPIV KatoLogVW(HKATO hKato, DWORD dwVerbosity, LPCWSTR wszFormat, va_list pArgs);
|
|
EXTERN_C BOOL WINAPIV KatoCommentW(HKATO hKato, DWORD dwVerbosity, LPCWSTR wszFormat, ...);
|
|
EXTERN_C BOOL WINAPIV KatoCommentVW(HKATO hKato, DWORD dwVerbosity, LPCWSTR wszFormat, va_list pArgs);
|
|
|
|
// ASCII functions
|
|
EXTERN_C INT WINAPIV KatoBeginLevelA(HKATO hKato, DWORD dwLevelID, LPCSTR szFormat, ...);
|
|
EXTERN_C INT WINAPIV KatoBeginLevelVA(HKATO hKato, DWORD dwLevelID, LPCSTR szFormat, va_list pArgs);
|
|
EXTERN_C INT WINAPIV KatoEndLevelA(HKATO hKato, LPCSTR szFormat, ...);
|
|
EXTERN_C INT WINAPIV KatoEndLevelVA(HKATO hKato, LPCSTR szFormat, va_list pArgs);
|
|
EXTERN_C BOOL WINAPIV KatoLogA(HKATO hKato, DWORD dwVerbosity, LPCSTR szFormat, ...);
|
|
EXTERN_C BOOL WINAPIV KatoLogVA(HKATO hKato, DWORD dwVerbosity, LPCSTR szFormat, va_list pArgs);
|
|
EXTERN_C BOOL WINAPIV KatoCommentA(HKATO hKato, DWORD dwVerbosity, LPCSTR szFormat, ...);
|
|
EXTERN_C BOOL WINAPIV KatoCommentVA(HKATO hKato, DWORD dwVerbosity, LPCSTR szFormat, va_list pArgs);
|
|
|
|
// Non-string functions
|
|
EXTERN_C BOOL WINAPI KatoSetItemData(HKATO hKato, DWORD dwItemData);
|
|
EXTERN_C DWORD WINAPI KatoGetItemData(HKATO hKato);
|
|
EXTERN_C BOOL WINAPI KatoSendSystemData(HKATO hKato, DWORD dwSystemID, LPCVOID lpcvBuffer, DWORD dwSize);
|
|
EXTERN_C DWORD WINAPI KatoGetCurrentLevel(HKATO hKato);
|
|
EXTERN_C INT WINAPI KatoGetVerbosityCount(HKATO hKato, DWORD dwVerbosity, DWORD dwLevel);
|
|
|
|
//******************************************************************************
|
|
// Map function names to the correct APIs based on the UNICODE flag
|
|
//******************************************************************************
|
|
|
|
#ifdef UNICODE
|
|
#define KATOCALLBACKSTRUCT KATOCALLBACKSTRUCTW
|
|
#define LPKATOCALLBACKSTRUCT LPKATOCALLBACKSTRUCTW
|
|
#define LPKATOCALLBACK LPKATOCALLBACKW
|
|
#define KatoCreate KatoCreateW
|
|
#define KatoSetCallback KatoSetCallbackW
|
|
#define KatoSetServer KatoSetServerW
|
|
#define KatoGetServer KatoGetServerW
|
|
#define KatoBeginLevel KatoBeginLevelW
|
|
#define KatoBeginLevelV KatoBeginLevelVW
|
|
#define KatoEndLevel KatoEndLevelW
|
|
#define KatoEndLevelV KatoEndLevelVW
|
|
#define KatoLog KatoLogW
|
|
#define KatoLogV KatoLogVW
|
|
#define KatoComment KatoCommentW
|
|
#define KatoCommentV KatoCommentVW
|
|
#else
|
|
#define KATOCALLBACKSTRUCT KATOCALLBACKSTRUCTA
|
|
#define LPKATOCALLBACKSTRUCT LPKATOCALLBACKSTRUCTA
|
|
#define LPKATOCALLBACK LPKATOCALLBACKA
|
|
#define KatoCreate KatoCreateA
|
|
#define KatoSetCallback KatoSetCallbackA
|
|
#define KatoSetServer KatoSetServerA
|
|
#define KatoGetServer KatoGetServerA
|
|
#define KatoBeginLevel KatoBeginLevelA
|
|
#define KatoBeginLevelV KatoBeginLevelVA
|
|
#define KatoEndLevel KatoEndLevelA
|
|
#define KatoEndLevelV KatoEndLevelVA
|
|
#define KatoLog KatoLogA
|
|
#define KatoLogV KatoLogVA
|
|
#define KatoComment KatoCommentA
|
|
#define KatoCommentV KatoCommentVA
|
|
#endif
|
|
|
|
//******************************************************************************
|
|
// CKato - Interface for C++ applications
|
|
//******************************************************************************
|
|
|
|
#ifdef __cplusplus
|
|
|
|
class KATOAPI CKato {
|
|
public:
|
|
// Overlaod new and delete to prevent mismatched heaps (KB:Q122675)
|
|
void* __cdecl operator new(size_t stAllocate);
|
|
void __cdecl operator delete(void *pvMemory);
|
|
|
|
// Construction and destruction
|
|
CKato(LPCWSTR wszName = NULL);
|
|
CKato(LPCSTR szName);
|
|
virtual ~CKato(VOID);
|
|
|
|
// Unicode functions
|
|
INT WINAPIV BeginLevel (DWORD dwLevelID, LPCWSTR wszFormat, ...);
|
|
INT WINAPI BeginLevelV(DWORD dwLevelID, LPCWSTR wszFormat, va_list pArgs);
|
|
INT WINAPIV EndLevel (LPCWSTR wszFormat, ...);
|
|
INT WINAPI EndLevelV(LPCWSTR wszFormat, va_list pArgs);
|
|
BOOL WINAPIV Log (DWORD dwVerbosity, LPCWSTR wszFormat, ...);
|
|
BOOL WINAPI LogV(DWORD dwVerbosity, LPCWSTR wszFormat, va_list pArgs);
|
|
BOOL WINAPIV Comment (DWORD dwVerbosity, LPCWSTR wszFormat, ...);
|
|
BOOL WINAPI CommentV(DWORD dwVerbosity, LPCWSTR wszFormat, va_list pArgs);
|
|
|
|
// ASCII functions
|
|
INT WINAPIV BeginLevel (DWORD dwLevelID, LPCSTR szFormat, ...);
|
|
INT WINAPI BeginLevelV(DWORD dwLevelID, LPCSTR szFormat, va_list pArgs);
|
|
INT WINAPIV EndLevel (LPCSTR szFormat, ...);
|
|
INT WINAPI EndLevelV(LPCSTR szFormat, va_list pArgs);
|
|
BOOL WINAPIV Log (DWORD dwVerbosity, LPCSTR szFormat, ...);
|
|
BOOL WINAPI LogV(DWORD dwVerbosity, LPCSTR szFormat, va_list pArgs);
|
|
BOOL WINAPIV Comment (DWORD dwVerbosity, LPCSTR szFormat, ...);
|
|
BOOL WINAPI CommentV(DWORD dwVerbosity, LPCSTR szFormat, va_list pArgs);
|
|
|
|
// Non-string functions
|
|
BOOL WINAPI SetItemData(DWORD dwItemData);
|
|
DWORD WINAPI GetItemData(VOID);
|
|
BOOL WINAPI SendSystemData(DWORD dwSystemID, LPCVOID lpcvBuffer, DWORD dwSize);
|
|
DWORD WINAPI GetCurrentLevel(VOID);
|
|
INT WINAPI GetVerbosityCount(DWORD dwVerbosity, DWORD dwLevel = -1);
|
|
|
|
// Internal functions and data
|
|
protected:
|
|
friend VOID WINAPI Internal(CKato*, DWORD, LPARAM);
|
|
VOID WINAPI Internal(DWORD, LPARAM);
|
|
LPVOID m_lpvKatoData;
|
|
};
|
|
|
|
#endif // __cplusplus
|
|
|
|
#pragma pack() // restore packing size to previous state
|
|
|
|
#endif // __KATO_H__
|