CrossFramework Library

XBase:デバッグ・エラー処理

構成

struct  XBase::Console
 コンソールに関する関数を定義する空間。 [詳細]
class  XBase::IConsoleCallback
 コンソール用コールバックインターフェースクラス。 [詳細]
class  XBase::IRuntimeErrorCallback
 実行時エラー用コールバックインターフェースクラス。 [詳細]
struct  XBase::PointerCheck
 ポインタについて調べる処理を扱う空間。 [詳細]
struct  XBase::RuntimeError
 実行時エラーを扱う空間。 [詳細]

マクロ定義

#define XBASE_ENUM_IS_INVALID(aEnumType, aEnumValue)   ( aEnumValue < aEnumType##_MIN || aEnumType##_MAX < aEnumValue )
 Enumの値がMIN未満 or MAXより大きいことをチェックするマクロ。
#define XBASE_ENUM_IS_VALID(aEnumType, aEnumValue)   ( aEnumType##_MIN <= aEnumValue && aEnumValue <= aEnumType##_MAX )
 Enumの値がMIN以上MAX以下であることをチェックするマクロ。

コンソール出力

#define XBASE_COUT(...)   XBASE_COUT_CORE( __VA_ARGS__ )
 printfフォーマットの文字列をコンソールに書き込む。
#define XBASE_COUT_TIME()   do{}while(false)
 現在時刻をコンソールに書き込む。
#define XBASE_COUT_END_LINE()   do{}while(false)
 改行コードをコンソールに書き込む。
#define XBASE_COUTLINE(...)
 printfフォーマットの文字列をコンソールに改行書き込みする。
#define XBASE_COUT_WITH_TIME(...)
 現在時間と共にprintfフォーマットの文字列をコンソールに書き込む。
#define XBASE_COUTLINE_WITH_TIME(...)
 現在時間と共にprintfフォーマットの文字列をコンソールに改行書き込みする。
#define XBASE_CHECKPOINT()   XBASE_COUTLINE_WITH_TIME( "%s at %lu\n" , __FILE__ , __LINE__ )
 現在時刻と共にファイル名と行番号をコンソールに改行書き込みする。
#define XBASE_DUMP(aVal)   XBASE_COUTLINE_WITH_TIME( "%s : %s\n" , #aVal , XBASE_TO_SHORT_STRING( aVal ).readPtr() )
 現在時刻と共に変数の名前・値をコンソールに改行書き込みする。

0除算チェック

#define XBASE_DIV_ASSIGN(lhs, rhs)
 lhs /= rhs, operator /=の0除算チェック。
#define XBASE_DIV(aLHS, aRHS)   ( aRHS != 0 ? ( aLHS / aRHS ) : ::XBase::DivideCheck::Error( aLHS ) )
 lhs / rhsの0除算チェック。

関数属性

#define XBASE_OVERRIDE(...)   __VA_ARGS__
 オーバーライドチェック。
#define XBASE_FINAL(...)   __VA_ARGS__
 オーバーライド禁止チェック。

実行時アサート

#define XBASE_ASSERT_MSG(aCond, aMsg)   XBASE_RUNTIME_ASSERT( aCond , "%s" , aMsg )
 メッセージ付きアサート。指定の条件式がtrueであることをチェックする。
#define XBASE_ASSERT_MSGFMT(aCond, aFormat,...)   XBASE_RUNTIME_ASSERT( aCond , aFormat , __VA_ARGS__ )
 printfフォーマットのメッセージ付きアサート。指定の条件式がtrueであることをチェックする。
#define XBASE_ASSERT(aCond)   XBASE_ASSERT_MSG( aCond , #aCond )
 指定の条件式がtrueであることをチェックする。
#define XBASE_SHOULD_NULL_ASSERT(aVal)
 NULLであるべき値をチェックする。
#define XBASE_NOT_NULL_ASSERT(aVal)   XBASE_ASSERT_MSG( (aVal)!=0 , "Value is Null\n" )
 NULLじゃない値をさしているかチェックする。
#define XBASE_POINTER_ASSERT(aVal)   do { if ( !::XBase::PointerCheck::IsValid( aVal ) ) { XBASE_INVALID_VALUE_ERROR( reinterpret_cast< ::XBase::pword_t >( aVal ) ); } } while(false)
 ポインタとして有効な値であることをチェックする。
#define XBASE_NOT_REACH_ASSERT_MSGFMT(aFormat,...)   XBASE_ASSERT_MSGFMT( false , aFormat , __VA_ARGS__ )
 到達したらエラーにする。
#define XBASE_NOT_REACH_ASSERT_MSG(aMsg)   XBASE_ASSERT_MSG( false , aMsg )
#define XBASE_NOT_REACH_ASSERT()   XBASE_NOT_REACH_ASSERT_MSG( "Should nod reach here.\n" )
 到達したらエラーにする。
#define XBASE_INVALID_VALUE_ERROR(aVal)
 不正な値としてその値をコンソールにダンプしつつエラーにする。
#define XBASE_EQUALS_ASSERT(aVal1, aVal2)
 2つの値が等しいことをチェックする。
#define XBASE_NOT_EQUALS_ASSERT(aVal1, aVal2)
 2つの値が等しくないことをチェックする。
#define XBASE_TEST(aCond)   do{}while(false)
 テストコマンドを実行する。
#define XBASE_RANGE_ASSERT_EMAX(aVal, aMaxVal)   XBASE_RANGE_ASSERT_CORE_FVM( XBASE_IS_VALUE_IN_RANGE_EMAX , aVal , aMaxVal )
 aVal <= aMaxValであることをチェックする。
#define XBASE_RANGE_ASSERT_EMIN(aMinVal, aVal)   XBASE_RANGE_ASSERT_CORE_FMV( XBASE_IS_VALUE_IN_RANGE_EMIN , aMinVal , aVal )
 aVal <= aMaxValであることをチェックする。
#define XBASE_RANGE_ASSERT_EMIN_EMAX(aMinVal, aVal, aMaxVal)   XBASE_RANGE_ASSERT_CORE_FMVM( XBASE_IS_VALUE_IN_RANGE_EMIN_EMAX , aMinVal , aVal , aMaxVal )
 aMinVal <= aVal <= aMaxValであることをチェックする。
#define XBASE_RANGE_ASSERT_EMIN_MAX(aMinVal, aVal, aMaxVal)   XBASE_RANGE_ASSERT_CORE_FMVM( XBASE_IS_VALUE_IN_RANGE_EMIN_MAX , aMinVal , aVal , aMaxVal )
 aMinVal <= aVal < aMaxValであることをチェックする。
#define XBASE_RANGE_ASSERT_MAX(aVal, aMaxVal)   XBASE_RANGE_ASSERT_CORE_FVM( XBASE_IS_VALUE_IN_RANGE_MAX , aVal , aMaxVal )
 aVal < aMaxValであることをチェックする。
#define XBASE_RANGE_ASSERT_MIN(aMinVal, aVal)   XBASE_RANGE_ASSERT_CORE_FMV( XBASE_IS_VALUE_IN_RANGE_MIN , aMinVal , aVal )
 aMinVal < aVal であることをチェックする。
#define XBASE_RANGE_ASSERT_MIN_EMAX(aMinVal, aVal, aMaxVal)   XBASE_RANGE_ASSERT_CORE_FMVM( XBASE_IS_VALUE_IN_RANGE_MIN_EMAX , aMinVal , aVal , aMaxVal )
 aMinVal < aVal <= aMaxValであることをチェックする。
#define XBASE_ENUM_ASSERT(aEnumType, aEnumValue)   XBASE_RANGE_ASSERT_EMIN_EMAX( int( aEnumType##_MIN ) , int( aEnumValue ) , int( aEnumType##_MAX ) )
 aEnumValueがMIN <= aEnumValue <= MAXであることをチェックする。

コンパイル時アサート

#define XBASE_STATIC_ASSERT_MSG(aCond, aMsg)
 メッセージ付きコンパイル時アサート。
#define XBASE_STATIC_ASSERT(aCond)   XBASE_STATIC_ASSERT_MSG( aCond , "Static assert failure." )
 コンパイル時アサート。
#define XBASE_STATIC_ASSERT_FAILURE   XBASE_STATIC_ASSERT_MSG( false )
 コンパイルを止めるアサート。
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義