CrossFramework Library

XBase/RuntimeAssert.hpp


実行時アサートを記述する。

作者:
akino
#include <XBase/BuiltInTypes.hpp>
#include <XBase/Console.hpp>
#include <XBase/PointerCheck.hpp>
#include <XBase/RuntimeError.hpp>
#include <XBase/ShortString.hpp>
#include <XBase/ToShortString.hpp>
#include <XBase/ValueInRange.hpp>

ソースコードを見る。

ネームスペース

namespace  XBase
 

XLibraryの基本となるクラス・関数・マクロ群を定義する名前空間。


マクロ定義

実行時アサート
#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であることをチェックする。
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義