179 lines
5.2 KiB
C++
179 lines
5.2 KiB
C++
|
|
/*//===============================================================
|
|||
|
|
|
|||
|
|
<< COMMON MACROS >>
|
|||
|
|
|
|||
|
|
PRGM : B4nFter, milkji
|
|||
|
|
|
|||
|
|
FILE : COMMONMACROS.HPP
|
|||
|
|
DESC : System Base <EFBFBD><EFBFBD><EFBFBD>̺귯<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ũ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INIT BUILT DATE : 2005. 10. 15
|
|||
|
|
LAST BUILT DATE : 2007. 11. 19
|
|||
|
|
|
|||
|
|
Copyright<EFBFBD><EFBFBD> 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
|
|||
|
|
|
|||
|
|
*///===============================================================
|
|||
|
|
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// INCLUDE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
// P.S.> SYSBASEBASE.H <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WINDOWS.H <20><> <20>⺻<EFBFBD><E2BABB><EFBFBD><EFBFBD> <20><><EFBFBD>ܽ<EFBFBD>Ŵ)
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// DEFINE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
// <20><>ü <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#if !defined(SAFE_DELETE)
|
|||
|
|
#define SAFE_DELETE(p) { if (p) { delete(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_DELETE
|
|||
|
|
#if !defined(SAFE_DELETEARRAY)
|
|||
|
|
#define SAFE_DELETEARRAY(p) { if (p) { delete[](p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_DELETEARRAY
|
|||
|
|
#if !defined(SAFE_DELETEOBJECT)
|
|||
|
|
#define SAFE_DELETEOBJECT(p) { if (p) { ::DeleteObject(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_DELETEOBJECT
|
|||
|
|
#if !defined(SAFE_RELEASE)
|
|||
|
|
#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_RELEASE
|
|||
|
|
#if !defined(SAFE_CLOSEHANDLE)
|
|||
|
|
#define SAFE_CLOSEHANDLE(p) { if (p !=INVALID_HANDLE_VALUE) { ::CloseHandle(p); (p) = INVALID_HANDLE_VALUE; } }
|
|||
|
|
#endif // SAFE_CLOSEHANDLE
|
|||
|
|
#if !defined(SAFE_CLOSESOCKET)
|
|||
|
|
#define SAFE_CLOSESOCKET(p) { if (p !=INVALID_SOCKET) { ::closesocket(p); (p) = INVALID_SOCKET; } }
|
|||
|
|
#endif // SAFE_CLOSESOCKET
|
|||
|
|
#if !defined(SAFE_FCLOSE)
|
|||
|
|
#define SAFE_FCLOSE(p) { if (p) { ::fclose(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_FCLOSE
|
|||
|
|
#if !defined(SAFE_DESTROYWINDOW)
|
|||
|
|
#define SAFE_DESTROYWINDOW(p) { if (p) { ::DestroyWindow(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_DESTROYWINDOW
|
|||
|
|
#if !defined(SAFE_DESTROYMENU)
|
|||
|
|
#define SAFE_DESTROYMENU(p) { if (p) { ::DestroyMenu(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_DESTROYMENU
|
|||
|
|
#if !defined(SAFE_FREE)
|
|||
|
|
#define SAFE_FREE(p) { if (p) { ::free(p); (p) = NULL; } }
|
|||
|
|
#endif // SAFE_FREE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#if !defined(MIN)
|
|||
|
|
#define MIN(M_A, M_B) (((M_A)>(M_B)) ? (M_B):(M_A))
|
|||
|
|
#endif // MIN
|
|||
|
|
#if !defined(MAX)
|
|||
|
|
#define MAX(M_A, M_B) (((M_A)>(M_B)) ? (M_A):(M_B))
|
|||
|
|
#endif // MAX
|
|||
|
|
#if !defined(EQUARL)
|
|||
|
|
#define EQUARL(M_A, M_B) (((M_A)==(M_B)) ? TRUE:FALSE;)
|
|||
|
|
#endif // EQUARL
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ư<EFBFBD><C6AF> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#define CHECK_LIMIT(C_VALUE, C_MAX) (C_VALUE<0?FALSE:C_VALUE>(C_MAX-1)?FALSE:TRUE) // 0 <20>̻<EFBFBD> C_MAX <20≯<EFBFBD>
|
|||
|
|
#define CHECK_LIMIT_NONZERO(C_VALUE, C_MAX) (C_VALUE<=0?FALSE:C_VALUE>(C_MAX-1)?FALSE:TRUE) // 0 <20>ʰ<EFBFBD> C_MAX <20≯<EFBFBD>
|
|||
|
|
#define CHECK_RANGE(C_VALUE, C_MIN, C_MAX) (C_VALUE<C_MIN?FALSE:C_VALUE>C_MAX?FALSE:TRUE) // C_MIN <20>̻<EFBFBD> C_MAX <20≯<EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#define CUT_LIMIT(C_VALUE, C_MIN, C_MAX) (C_VALUE<C_MIN?C_MIN:C_VALUE>C_MAX?C_MAX:C_VALUE)
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20>迭 <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#define COUNT_OF(ARRAY) (sizeof(ARRAY)/sizeof(ARRAY[0]))
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#define SWAP(LT, RT) ((LT)^=((RT)^=((LT)^=(RT))))
|
|||
|
|
#define LOLONG(l) ((DWORD)((UINT64)(l) & 0xFFFFFFFF))
|
|||
|
|
#define HILONG(l) ((DWORD)((UINT64)(l) >> 32))
|
|||
|
|
#define MAKELONGLONG(A, B) ((INT64)(((DWORD)((UINT64)(A) & 0xFFFFFFFF)) | ((INT64)((DWORD)((UINT64)(B) & 0xFFFFFFFF))) << 32))
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#define CONV_STRINGA(pNM) (#pNM)
|
|||
|
|
#define CONV_STRINGW(pNM) (L#pNM)
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
#define CONV_STRING CONV_STRINGW
|
|||
|
|
#else // _UNICODE
|
|||
|
|
#define CONV_STRING CONV_STRINGA
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9><EFBFBD>Լ<EFBFBD>
|
|||
|
|
#if defined(_DEBUG)
|
|||
|
|
#define MODE_DBG(pDBG) pDBG
|
|||
|
|
#if (_MSC_VER >= 1400)
|
|||
|
|
#define MODE_DBG_EX(pMST, pDBG) pMST, pDBG
|
|||
|
|
#else // #if (_MSC_VER >= 1400)
|
|||
|
|
#define MODE_DBG_EX(pMST, pDBG) pMST
|
|||
|
|
#endif //#if (_MSC_VER >= 1400)
|
|||
|
|
#define MODE_CMP(pDBG, pREL) pDBG
|
|||
|
|
#else // _DEBUG
|
|||
|
|
#define MODE_DBG(pDBG)
|
|||
|
|
#define MODE_DBG_EX(pMST, pDBG) pMST
|
|||
|
|
//#define MODE_DBG_EX(pMST, pDBG) pMST, pDBG
|
|||
|
|
#define MODE_CMP(pDBG, pREL) pREL
|
|||
|
|
#endif // _DEBUG
|
|||
|
|
|
|||
|
|
#if defined(_MT)
|
|||
|
|
#define MODE_MT(pSG, pMT) pMT
|
|||
|
|
#else // _MT
|
|||
|
|
#define MODE_MT(pSG, pMT) pSG
|
|||
|
|
#endif // _MT
|
|||
|
|
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
#define MODE_CHARSET(pMBCS, pUNCD) pUNCD
|
|||
|
|
#else // _UNICODE
|
|||
|
|
#define MODE_CHARSET(pMBCS, pUNCD) pMBCS
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// ǥ<><C7A5> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
#define _tstring std::wstring
|
|||
|
|
#else // _UNICODE
|
|||
|
|
#define _tstring std::string
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
#define _tifstream std::wifstream
|
|||
|
|
#define _tofstream std::wofstream
|
|||
|
|
#else // _UNICODE
|
|||
|
|
#define _tifstream std::ifstream
|
|||
|
|
#define _tofstream std::ofstream
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>ȯ (USES_CONVERSION <20><> <20><><EFBFBD>濡 <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20><> - ATLDBCLI.H)
|
|||
|
|
#define I2A(I) (\
|
|||
|
|
(_lpa = (LPCSTR)alloca(12)),\
|
|||
|
|
(_itoa(I, (LPSTR)_lpa, 10)),\
|
|||
|
|
(_lpa))
|
|||
|
|
|
|||
|
|
#define I2W(I) (\
|
|||
|
|
(_lpw = (LPCWSTR)alloca(24)),\
|
|||
|
|
(_itow(I, (LPWSTR)_lpw, 10)),\
|
|||
|
|
(_lpw))
|
|||
|
|
|
|||
|
|
#if defined(_UNICODE)
|
|||
|
|
#define I2T I2W
|
|||
|
|
#else // _UNICODE
|
|||
|
|
#define I2T I2A
|
|||
|
|
#endif // _UNICODE
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 64<36><34>Ʈ <20><><EFBFBD><EFBFBD> (X64 - _AMD64_ / IA64 - _IA64_)
|
|||
|
|
#if defined(_AMD64_) || defined(_IA64_)
|
|||
|
|
typedef DWORD64 PTRTYPE;
|
|||
|
|
#else // _AMD64_ / _IA64_
|
|||
|
|
typedef DWORD PTRTYPE;
|
|||
|
|
#endif // _AMD64_ / _IA64_
|
|||
|
|
|