#ifndef	_AJCDEF_H_
#define	_AJCDEF_H_
/****************************************************************************************************************/

//==============================================================================================================//
//																												//
//	{^Cv`																								//
//																												//
//==============================================================================================================//
#ifndef	AJC_DEFINED_BASICTYPE

typedef		void				VO;			/*	VOID															*/

typedef		signed   char		SB;			/*	@Wrbg itj										*/
typedef		unsigned char		UB;			/*	@@V@@@@ iȂj										*/
typedef		signed   short		SW;			/*	PUrbg itj										*/
typedef		unsigned short		UW;			/*	@@V@@@@ iȂj										*/
typedef		signed   long		SL;			/*	RQrbg itj										*/
typedef		unsigned long		UL;			/*	@@V@@@@ iȂj										*/
typedef		signed   int		SI;			/*	PUrbgȏ̐ itj								*/
typedef		unsigned int		UI;			/*	@@V@@@@ @@@iȂj								*/
typedef		char				BC;			/*	oCg														*/
typedef		wchar_t				WC;			/*	Ch														*/

typedef signed   __int64		SLL;
typedef	unsigned __int64		ULL;

/*----- SX / UX : |C^li[\ȃrbg̐ ---------------------------------------------------------*/
#if _MSC_VER <= 1200
		typedef signed   int		SX;
		typedef	unsigned int		UX;
#else
	#ifdef _WIN64
		typedef signed   __int64	SX;
		typedef	unsigned __int64	UX;
	#else
		typedef _W64 signed   int	SX;
		typedef _W64 unsigned int	UX;
	#endif
#endif

/*----- P O I N T E R ------------------------------------------------------------------------------------------*/
typedef		VO  *VOP;
typedef		SB	*SBP;
typedef		UB	*UBP;
typedef		SW	*SWP;
typedef		UW	*UWP;
typedef		SL	*SLP;
typedef		UL	*ULP;
typedef		SI	*SIP;
typedef		UI	*UIP;
typedef		SX	*SXP;
typedef		UX	*UXP;
typedef		BC	*BCP;
typedef		WC	*WCP;

typedef signed   __int64	*	SLLP;
typedef	unsigned __int64	*	ULLP;

/*----- C O N S T   P O I N T E R ------------------------------------------------------------------------------*/
typedef		const VO	*	C_VOP;
typedef		const SB	*	C_SBP;
typedef		const UB	*	C_UBP;
typedef		const SW	*	C_SWP;
typedef		const UW	*	C_UWP;
typedef		const SL	*	C_SLP;
typedef		const UL	*	C_ULP;
typedef		const SI	*	C_SIP;
typedef		const UI	*	C_UIP;
typedef		const SX	*	C_SXP;
typedef		const UX	*	C_UXP;
typedef		const BC	*	C_BCP;
typedef		const WC	*	C_WCP;

typedef const signed   __int64	*	C_SLLP;
typedef	const unsigned __int64	*	C_ULLP;

/*----- T E X T ------------------------------------------------------------------------------------------------*/
#ifdef	UNICODE
	typedef WC            UT;
	typedef WC        *   UTP;
	typedef const WC  * C_UTP;
#else
	typedef BC            UT;
	typedef BC        *   UTP;
	typedef const BC  * C_UTP;
#endif

#endif  // AJC_DEFINED_BASICTYPE

/*----- f -------------------------------------------------------------------------------------------------*/
typedef struct {
	double re;		//	
	double im;		//	
} AJCCOMPLEX, *PAJCCOMPLEX;
typedef const AJCCOMPLEX *PCAJCCOMPLEX;


//==============================================================================================================//
//																												//
//	ckkC^tF[X`																					//
//																												//
//==============================================================================================================//
#ifdef __cplusplus
	#define AJCEXPORT extern "C" __declspec ( dllexport )
#else
	#define AJCEXPORT            __declspec ( dllexport )
#endif

//==============================================================================================================//
//																												//
//	UNICODE  _UNICODE																							//
//																												//
//==============================================================================================================//
#ifdef UNICODE
	#ifdef _MBCS
		#undef _MBCS
	#endif
	#ifndef _UNICODE
		#define	_UNICODE
	#endif
#endif
//==============================================================================================================//
//																												//
//	USrbgWindows@݊}N																				//
//																												//
//==============================================================================================================//
#if  _MSC_VER >= 1300
//--------------------------------------------------------------------------------------------------------------//
//	For Visual Studio .NET																						//
//--------------------------------------------------------------------------------------------------------------//
#ifdef	_WIN64
	#define	MAjcSetWindowLong(_HWND_, _IDX_, _VAL_)	((LONG_PTR)SetWindowLongPtr(_HWND_, _IDX_, (LONG_PTR)(_VAL_)))
	#define	MAjcGetWindowLong(_HWND_, _IDX_)		((LONG_PTR)GetWindowLongPtr(_HWND_, _IDX_))
	#define	MAjcSetClassLong(_HWND_, _IDX_, _VAL_)	((LONG_PTR)SetClassLongPtr(_HWND_, _IDX_, (LONG_PTR)(_VAL_)))
	#define	MAjcGetClassLong(_HWND_, _IDX_)			((LONG_PTR)GetClassLongPtr(_HWND_, _IDX_))
#else
	#define	MAjcSetWindowLong(_HWND_, _IDX_, _VAL_)	((LONG_PTR)SetWindowLongPtr(_HWND_, _IDX_, (LONG)((_W64 LONG)(_VAL_))))
	#define	MAjcGetWindowLong(_HWND_, _IDX_)		((LONG_PTR)GetWindowLongPtr(_HWND_, _IDX_))
	#define	MAjcSetClassLong(_HWND_, _IDX_, _VAL_)	((LONG_PTR)SetClassLongPtr(_HWND_, _IDX_, (LONG)((_W64 LONG)(_VAL_))))
	#define	MAjcGetClassLong(_HWND_, _IDX_)			((LONG_PTR)GetClassLongPtr(_HWND_, _IDX_))
#endif

#else	// _MSC_VER >= 1300
//--------------------------------------------------------------------------------------------------------------//
//	For Visual Studio 6.0																						//
//--------------------------------------------------------------------------------------------------------------//
#ifndef	GCLP_HBRBACKGROUND
	#define	GCLP_HBRBACKGROUND		GCL_HBRBACKGROUND
	#define	GCLP_HCURSOR			GCL_HCURSOR
	#define	GCLP_HICON				GCL_HICON
	#define	GCLP_HICOMSM			GCL_HICONSM
	#define	GCLP_HMODULE			GCL_HMODULE
	#define	GCLP_MENUNAME			GCL_MENUNAME
	#define	GCLP_WNDPROC			GCL_WNDPROC

	#define	GWLP_WNDPROC			GWL_WNDPROC
	#define	GWLP_HWNDPARENT			GWL_HWNDPARENT
	#define	GWLP_ID					GWL_ID
	#define	GWLP_USERDATA			GWL_USERDATA
	#define	DWLP_DLGPROC			DWL_DLGPROC
	#define	DWLP_MSGRESULT			DWL_MSGRESULT
	#define	DWLP_USER				DWL_USER

	#define	MAjcSetWindowLong(_HWND_, _IDX_, _VAL_)	SetWindowLong(_HWND_, _IDX_, (LONG)(_VAL_))
	#define	MAjcGetWindowLong(_HWND_, _IDX_)		GetWindowLong(_HWND_, _IDX_)
	#define	MAjcSetClassLong(_HWND_, _IDX_, _VAL_)	SetClassLong(_HWND_, _IDX_, (LONG)(_VAL_))
	#define	MAjcGetClassLong(_HWND_, _IDX_)			GetClassLong(_HWND_, _IDX_))
#endif
#endif	// _MSC_VER >= 1300

/****************************************************************************************************************/
#endif
