/********************************************************************************
*	ファイル名：Tools.h															*
*	用　　　途：汎用ツール														*
*	備　　　考：																*
*	履　　　歴：																*
********************************************************************************/
/****************************
*	 コンパイル環境設定		*
****************************/
#pragma	once
/****************************
*	インクルードファイル	*
****************************/
/****************************
*		 マクロ定数			*
****************************/
/***** GetData, SetDataの型指定引数 *****/ 
#define	DATA_ATTR_NONE			0						/* データ型指定無						*/
#define	DATA_ATTR_BYTE			1						/* BYTE									*/
#define	DATA_ATTR_BOOL			2						/* BOOL									*/
#define	DATA_ATTR_INT32			3						/* ４バイト符号付整数					*/
#define	DATA_ATTR_UINT32		4						/* ４バイト符号無整数					*/
#define	DATA_ATTR_INT64			5						/* ８バイト符号付整数					*/
#define	DATA_ATTR_UINT64		6						/* ８バイト符号無整数					*/
#define	DATA_ATTR_FLOAT			7						/* float								*/
#define	DATA_ATTR_DOUBLE		8						/* double								*/
#define	DATA_ATTR_STRING		9						/* TCHAR *								*/
#define	DATA_ATTR_CSTRING		10						/* CString								*/

/******
	以下のデータ属性は互換性の為にのみ存在する。
	基本的には使用禁止
******/
#define	DATA_ATTR_INT			(DATA_ATTR_INT32)		/* int									*/
#define	DATA_ATTR_UINT			(DATA_ATTR_UINT32)		/* unsigned int							*/
#define	DATA_ATTR_LONG			(DATA_ATTR_INT32)		/* long									*/
#define	DATA_ATTR_ULONG			(DATA_ATTR_UINT32)		/* unsigned long						*/
#define	DATA_ATTR_LONGLONG		(DATA_ATTR_INT64)		/* long long							*/
#define	DATA_ATTR_ULONGLONG		(DATA_ATTR_UINT64)		/* unsigned longlong					*/

/***** カラーコード *****/
#define BLACK					(RGB(0,0,0))
#define BLUE					(RGB(0,0,255))
#define GREEN					(RGB(0,255,0))
#define	CYAN					(RGB(0,255,255))
#define RED						(RGB(255,0,0))
#define	PURPLE					(RGB(128,0,128))
#define BROWN					(RGB(165,42,42))
#define	DARKGRAY				(RGB(169,169,169))
#define SILVER					(RGB(192,192,192))
#define	LIGHTBLUE				(RGB(173,216,230))
#define	LIGHTGREEN				(RGB(144,238,144))
#define LIGHTCYAN				(RGB(224,255,255))
#define	LIGHTRED				(RGB(0xFF,0x40,0x40))
#define	PINK					(RGB(255,192,203))
#define	YELLOW					(RGB(255,255,0))
#define	WHITE					(RGB(255,255,255))
#define	GRAY					(RGB(128,128,128))
#define	LIGHTORANGERED			(RGB(255,128,0))
#define	YELLOWGREEN				(RGB(  0,255,64))
#define	LIGHTMAGENTA			(RGB(255,128,255))	
#define	MAGENTA					(RGB(255,  0,255))	

/***** 演算マクロ *****/
#define	GigaBytes(n)			((UINT64)(n) * (UINT64)(1024 * 1024 * 1024))

/****************************
*		 構造体定義			*
****************************/
BOOL		StringToData(PVOID vpDst, CString &strSrc, INT32 nAttr);
BOOL		DataToString(CString *strDst, PVOID vpSrc, INT32 nAttr);
BOOL		DataToString(CString *strDst, PTCHAR szFormat, PVOID vpSrc, INT32 nAttr);
BOOL		Check(CString &str, INT32 nAttr, PVOID vpMin = 0, PVOID vpMax = 0);
BOOL		IsInteger(CString &str, BOOL bSigned = TRUE);
BOOL		IsFloat(CString &str, BOOL bSigned = TRUE);
COLORREF	CompColor(COLORREF src);
BOOL		DateString(
						PTCHAR	szDst,
						INT32	nSize,
						PTCHAR	szSrc,
						TCHAR	nDateSplitter = _T('/'),
						TCHAR	nTimeSplitter = _T(':'),
						TCHAR	bSplitterFlag = FALSE
					  );
BOOL		DataToData(PVOID vpDst, PVOID vpSrc, INT32 nAttr);
INT32		GCD(INT32 x, INT32 y);		// Greatest Common Divisor (最大公約数)
INT32		LCD(INT32 x, INT32 y);		// 最小公倍数
/****************************
*		 クラス定義			*
****************************/
/****************************
*		 関数　宣言			*
****************************/
/****************************
*		 変数　宣言			*
****************************/
