/*---------------------------------------------------------------------------

    NN Debug for DXG20

    Copyright (C) 2002 - 2004 SEGA Corporation Creative Center Graphics Sect.
    All Rights Reserved.

    Module  : NN Debug Library for DXG20
    File    : nnldebugxe.h
    Create  : 2003/06/05
    Modify  : 2003/06/05
    Modify  : 2003/07/14 Xbox,PC共通化向けの修正
    Modify  : 2004/04/30 nnprintxe.hに移動
    Modify  : 2004/06/17 NNM_BREAK()をwhile(1)からDebugBreak()に変更
    Modify  : 2009/05/12 ヘッダ整理
    Version : 1.14.21
    Note    :

---------------------------------------------------------------------------*/
#ifndef __NNLDEBUGDXG20_H__
#define __NNLDEBUGDXG20_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* Debug */
#ifdef NN_DEBUG
// break命令で処理を停止させるマクロ
#define NNM_BREAK()	DebugBreak();
// トレース用の文字列表示
#define NNM_TRACE		__nndebug_printf
// エラー出力用の文字列表示
// ここではトレースと同じ__nndebug_printf関数
#define NNM_ERROUT		__nndebug_printf
// ASSERT処理:ファイル名とライン番号を表示して停止
#define NNM_ASSERT(f,s) 								\
	if (!(f)) {										\
		if((s)){									\
			NNM_TRACE(s);							\
		}											\
		NNM_TRACE("Assertion failed.\n");			\
		NNM_BREAK();								\
	}

#else

#define NNM_BREAK()		((void)0)
#define NNM_TRACE		1 ? (void)0 : __nndebug_printf
#define NNM_ERROUT		1 ? (void)0 : __nndebug_printf
#define NNM_ASSERT(f,s)	((void)0)

#endif /* NN_DEBUG */

#if 1 // 2008.05.20
#define NNM_COMPILE_TIME_ASSERT(f)		typedef char NNS_COMPILE_TIME_ASSERT[ (f) ? 1 : -1 ]
#endif

void __nndebug_printf(char *fmt, ...);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif //__NNLDEBUGDXG20_H__

/* End of file */
