Loading...
Searching...
No Matches
Go to the documentation of this file.
3#define ISZERO( X ) ( ( X ) == 0 )
4#define NOTZERO( X ) ( !ISZERO( X ) )
5#define HASANYFLAG( STATE, FLAG ) ( ( ( STATE ) & ( FLAG ) ) != 0 )
6#define HASALLFLAGS( STATE, FLAGS ) ( ( ( STATE ) & ( FLAGS ) ) == ( FLAGS ) )
7#define STRINGIFY8( X ) #X
8#define STRINGIFY16( x ) L##x
9#define STRINGIFY( X ) STRINGIFY8( X )
10#define BITFLAG( x ) ( 1U << ( x ) )
11#define CONCATTOKEN( x, y ) x##y
12#define OVERRIDE override
14#define TVERSION( VER_MAJOR, VER_MINOR ) ( ( VER_MAJOR << 16U ) | VER_MINOR )
16#define RETURN_ARG_COUNT( _1_, _2_, _3_, _4_, _5_, count, ... ) count
17#define EXPAND_ARGS( args ) RETURN_ARG_COUNT args
18#define COUNT_ARGS_MAX5( ... ) EXPAND_ARGS( ( __VA_ARGS__, 5, 4, 3, 2, 1, 0 ) )
20#define OVERLOAD_MACRO2( name, count ) name##count
21#define OVERLOAD_MACRO1( name, count ) OVERLOAD_MACRO2( name, count )
22#define OVERLOAD_MACRO( name, count ) OVERLOAD_MACRO1( name, count )
24#define GLUE( x, y ) x y
25#define CALL_OVERLOAD( name, ... ) GLUE( OVERLOAD_MACRO( name, COUNT_ARGS_MAX5( __VA_ARGS__ ) ), ( __VA_ARGS__ ) )
27#ifdef TOSHI_DYNAMIC_LINKING
29# ifdef TOSHI_USER_ENGINE
31# define TOSHI_API declspec( dllexport )
35# define TOSHI_API declspec( dllimport )
45#define TOSHI_NAMESPACE Toshi
46#define TOSHI_NAMESPACE_USING using namespace TOSHI_NAMESPACE;
47#define TOSHI_NAMESPACE_START \
48 namespace TOSHI_NAMESPACE \
50#define TOSHI_NAMESPACE_END }
57# ifdef TOSHI_SKU_WINDOWS
58# define TBREAK() __debugbreak()
59# define TOSHI_ENABLE_ASSERTS
67#define TSTATICASSERT( ... ) static_assert( __VA_ARGS__, "Compile time assert failed: " #__VA_ARGS__ )
68#define TREINTERPRETCAST( TYPE, VALUE ) ( reinterpret_cast<TYPE>( VALUE ) )
69#define TSTATICCAST( POINTERTYPE, VALUE ) ( static_cast<POINTERTYPE*>( VALUE ) )
70#define TARRAYSIZE( ARRAY ) ( sizeof( ARRAY ) / sizeof( *ARRAY ) )
71#define TOFFSETOF( CLASS, MEMBER ) offsetof( CLASS, MEMBER )
72#define TALIGNAS( VALUE ) alignas( VALUE )
74#define TFORCEINLINE __forceinline
76#define TANONYMOUSVAR_1( Y ) CONCATTOKEN( _anonymous, Y )
77#define TANONYMOUSVAR( TYPE ) TYPE TANONYMOUSVAR_1( __COUNTER__ )
78#define TANONYMOUSVARC( TYPE, COUNTER ) TYPE TANONYMOUSVAR_1( COUNTER )
79#define TANONYMOUSVARC_GET( TYPE, COUNTER ) TANONYMOUSVAR_1( COUNTER )
81#define TDEPRECATED [[deprecated]]
82#define TDEPRECATED_REASON( REASON ) [[deprecated( REASON )]]
84#define TDECLARE_POINTER_HANDLE( NAME ) typedef void* NAME
86#ifdef TOSHI_ENABLE_ASSERTS
87# define TCALL_ONCE_IF( CONDITION ) \
88 static TBOOL s_bFlag; \
89 if ( !s_bFlag && ( CONDITION ) && ( s_bFlag = TTRUE ) )
92 TCALL_ONCE_IF( TTRUE ) \
94 TWARN( "Work in progress: '%s', at line %d\n", __FUNCTION__, __LINE__ ); \
97# define TTODO( DESC ) \
99 TCALL_ONCE_IF( TTRUE ) \
101 TWARN( "TODO: %s ('%s', at line %d)\n", DESC, __FUNCTION__, __LINE__ ); \
104# define TFIXME( DESC ) \
106 TCALL_ONCE_IF( TTRUE ) \
108 TWARN( "FIXME: %s ('%s', at line %d)\n", DESC, __FUNCTION__, __LINE__ ); \
111# define TIMPLEMENT() \
113 TCALL_ONCE_IF( TTRUE ) \
115 TWARN( "%s is not implemented\n", __FUNCTION__ ); \
118# define TIMPLEMENT_D( DESC ) \
120 TCALL_ONCE_IF( TTRUE ) \
122 TWARN( "%s is not implemented: %s\n", __FUNCTION__, DESC ); \
125# define TASSERT( X, ... ) \
127 TCALL_ONCE_IF( !( X ) ) \
128 if ( 1 == TDebug_AssertHandler( #X, __FILE__, __LINE__, __VA_ARGS__ ) ) \
131# define TVALIDPTR( PTR ) TASSERT( TDebug_IsValidAddress( PTR ) )
134# define TTODO( DESC )
135# define TFIXME( DESC )
137# define TIMPLEMENT_D( DESC )
138# define TASSERT( X, ... ) ( TFALSE )
139# define TVALIDPTR( PTR )
142#define TUNREACHABLE() \
144 TASSERT( TFALSE, "Unreachable code is reached!" ); \
149# define TLOGUP() Toshi::TUtil::LogUp();
150# define TLOGDOWN() Toshi::TUtil::LogDown();
151# define TINFO( ... ) Toshi::TUtil::Log( Toshi::TUtil::LogType_Info, __VA_ARGS__ )
152# define TWARN( ... ) Toshi::TUtil::Log( Toshi::TUtil::LogType_Warning, __VA_ARGS__ )
153# define TERROR( ... ) Toshi::TUtil::Log( Toshi::TUtil::LogType_Error, __VA_ARGS__ )
154# define TCRITICAL( ... ) Toshi::TUtil::Log( Toshi::TUtil::LogType_Critical, __VA_ARGS__ )
155# define TTRACE( ... ) TDebug_FinalPrintf( __VA_ARGS__ )
161# define TERROR( ... )
162# define TCRITICAL( ... )
163# define TTRACE( ... )
166#ifndef TOSHI_USER_ENGINE
167# define TOSHI_USER_CLIENT