mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-19 14:43:47 +00:00
This commit is broken, but has a lot of important stuff in it. Trying to figure out why my constructor thinks it doesn't take any parameters
This commit is contained in:
parent
92e4376b7e
commit
41cb22421b
2 changed files with 108 additions and 1466 deletions
|
|
@ -87,693 +87,40 @@ struct EngineFunctionDefaultArguments
|
|||
// Structure encapsulating default arguments to an engine API function.
|
||||
template< typename T >
|
||||
struct _EngineFunctionDefaultArguments {};
|
||||
template<>
|
||||
struct _EngineFunctionDefaultArguments< void() > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
};
|
||||
template< typename A >
|
||||
struct _EngineFunctionDefaultArguments< void( A ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( A a )
|
||||
: a( a )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
};
|
||||
template< typename A, typename B >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( B b )
|
||||
: b( b )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( A a, B b )
|
||||
: a( a ),
|
||||
b( b )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
};
|
||||
template< typename A, typename B, typename C >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( C c )
|
||||
: c( c )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( B b, C c )
|
||||
: b( b ),
|
||||
c( c )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( D d )
|
||||
: d( d )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( C c, D d )
|
||||
: c( c ),
|
||||
d( d )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( E e )
|
||||
: e( e )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( D d, E e )
|
||||
: d( d ),
|
||||
e( e )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( F f )
|
||||
: f( f )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( E e, F f )
|
||||
: e( e ),
|
||||
f( f )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( G g )
|
||||
: g( g )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( F f, G g )
|
||||
: f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G, H ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
typename EngineTypeTraits< H >::DefaultArgumentValueStoreType h;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( H h )
|
||||
: h( h )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( G g, H h )
|
||||
: g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( F f, G g, H h )
|
||||
: f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g, H h )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g, H h )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g, H h )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g, H h )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g, H h )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h )
|
||||
{ mNumDefaultArgs = 8; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G, H, I ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
typename EngineTypeTraits< H >::DefaultArgumentValueStoreType h;
|
||||
typename EngineTypeTraits< I >::DefaultArgumentValueStoreType i;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( I i )
|
||||
: i( i )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( H h, I i )
|
||||
: h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( G g, H h, I i )
|
||||
: g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( F f, G g, H h, I i )
|
||||
: f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g, H h, I i )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g, H h, I i )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g, H h, I i )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g, H h, I i )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 8; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g, H h, I i )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i )
|
||||
{ mNumDefaultArgs = 9; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G, H, I, J ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
typename EngineTypeTraits< H >::DefaultArgumentValueStoreType h;
|
||||
typename EngineTypeTraits< I >::DefaultArgumentValueStoreType i;
|
||||
typename EngineTypeTraits< J >::DefaultArgumentValueStoreType j;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( J j )
|
||||
: j( j )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( I i, J j )
|
||||
: i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( H h, I i, J j )
|
||||
: h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( G g, H h, I i, J j )
|
||||
: g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( F f, G g, H h, I i, J j )
|
||||
: f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g, H h, I i, J j )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g, H h, I i, J j )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g, H h, I i, J j )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 8; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g, H h, I i, J j )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 9; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j )
|
||||
{ mNumDefaultArgs = 10; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G, H, I, J, K ) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
typename EngineTypeTraits< H >::DefaultArgumentValueStoreType h;
|
||||
typename EngineTypeTraits< I >::DefaultArgumentValueStoreType i;
|
||||
typename EngineTypeTraits< J >::DefaultArgumentValueStoreType j;
|
||||
typename EngineTypeTraits< K >::DefaultArgumentValueStoreType k;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( K k )
|
||||
: k( k )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( J j, K k )
|
||||
: j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( I i, J j, K k )
|
||||
: i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( H h, I i, J j, K k )
|
||||
: h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( G g, H h, I i, J j, K k )
|
||||
: g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( F f, G g, H h, I i, J j, K k )
|
||||
: f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g, H h, I i, J j, K k )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g, H h, I i, J j, K k )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 8; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g, H h, I i, J j, K k )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 9; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g, H h, I i, J j, K k )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 10; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k )
|
||||
{ mNumDefaultArgs = 11; }
|
||||
};
|
||||
template< typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L >
|
||||
struct _EngineFunctionDefaultArguments< void( A, B, C, D, E, F, G, H, I, J, K, L ) > : public EngineFunctionDefaultArguments
|
||||
template<typename ...ArgTs>
|
||||
struct _EngineFunctionDefaultArguments< void(ArgTs...) > : public EngineFunctionDefaultArguments
|
||||
{
|
||||
typename EngineTypeTraits< A >::DefaultArgumentValueStoreType a;
|
||||
typename EngineTypeTraits< B >::DefaultArgumentValueStoreType b;
|
||||
typename EngineTypeTraits< C >::DefaultArgumentValueStoreType c;
|
||||
typename EngineTypeTraits< D >::DefaultArgumentValueStoreType d;
|
||||
typename EngineTypeTraits< E >::DefaultArgumentValueStoreType e;
|
||||
typename EngineTypeTraits< F >::DefaultArgumentValueStoreType f;
|
||||
typename EngineTypeTraits< G >::DefaultArgumentValueStoreType g;
|
||||
typename EngineTypeTraits< H >::DefaultArgumentValueStoreType h;
|
||||
typename EngineTypeTraits< I >::DefaultArgumentValueStoreType i;
|
||||
typename EngineTypeTraits< J >::DefaultArgumentValueStoreType j;
|
||||
typename EngineTypeTraits< K >::DefaultArgumentValueStoreType k;
|
||||
typename EngineTypeTraits< L >::DefaultArgumentValueStoreType l;
|
||||
|
||||
_EngineFunctionDefaultArguments()
|
||||
{ mNumDefaultArgs = 0; }
|
||||
_EngineFunctionDefaultArguments( L l )
|
||||
: l( l )
|
||||
{ mNumDefaultArgs = 1; }
|
||||
_EngineFunctionDefaultArguments( K k, L l )
|
||||
: k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 2; }
|
||||
_EngineFunctionDefaultArguments( J j, K k, L l )
|
||||
: j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 3; }
|
||||
_EngineFunctionDefaultArguments( I i, J j, K k, L l )
|
||||
: i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 4; }
|
||||
_EngineFunctionDefaultArguments( H h, I i, J j, K k, L l )
|
||||
: h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 5; }
|
||||
_EngineFunctionDefaultArguments( G g, H h, I i, J j, K k, L l )
|
||||
: g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 6; }
|
||||
_EngineFunctionDefaultArguments( F f, G g, H h, I i, J j, K k, L l )
|
||||
: f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 7; }
|
||||
_EngineFunctionDefaultArguments( E e, F f, G g, H h, I i, J j, K k, L l )
|
||||
: e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 8; }
|
||||
_EngineFunctionDefaultArguments( D d, E e, F f, G g, H h, I i, J j, K k, L l )
|
||||
: d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 9; }
|
||||
_EngineFunctionDefaultArguments( C c, D d, E e, F f, G g, H h, I i, J j, K k, L l )
|
||||
: c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 10; }
|
||||
_EngineFunctionDefaultArguments( B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l )
|
||||
: b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 11; }
|
||||
_EngineFunctionDefaultArguments( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l )
|
||||
: a( a ),
|
||||
b( b ),
|
||||
c( c ),
|
||||
d( d ),
|
||||
e( e ),
|
||||
f( f ),
|
||||
g( g ),
|
||||
h( h ),
|
||||
i( i ),
|
||||
j( j ),
|
||||
k( k ),
|
||||
l( l )
|
||||
{ mNumDefaultArgs = 12; }
|
||||
|
||||
|
||||
template<typename T> using DefVST = typename EngineTypeTraits<T>::DefaultArgumentValueStoreType;
|
||||
|
||||
std::tuple<DefVST<ArgTs> ...> mArgs;
|
||||
private:
|
||||
using SelfType = _EngineFunctionDefaultArguments< void(ArgTs...) >;
|
||||
|
||||
template<size_t ...> struct Seq {};
|
||||
template<size_t N, size_t ...S> struct Gens : Gens<N-1, N-1, S...> {};
|
||||
|
||||
template<size_t ...I> struct Gens<0, I...>{ typedef Seq<I...> type; };
|
||||
|
||||
template<typename ...TailTs, size_t ...I>
|
||||
void copyHelper(std::tuple<DefVST<TailTs> ...> defaultArgs, Seq<I...>) {
|
||||
constexpr size_t offset = (sizeof...(ArgTs) - sizeof...(TailTs));
|
||||
std::tie(std::get<I + offset>(mArgs)...) = defaultArgs;
|
||||
}
|
||||
|
||||
template<typename ...TailTs> using MaybeVoidEnabled = typename std::enable_if<sizeof...(TailTs) <= sizeof...(ArgTs), void>::type;
|
||||
|
||||
template<typename ...TailTs> MaybeVoidEnabled<TailTs...> tailInit(DefVST<TailTs> ...tail) {
|
||||
mNumDefaultArgs = sizeof...(TailTs);
|
||||
copyHelper(std::make_tuple(tail...), typename Gens<sizeof...(TailTs)>::type());
|
||||
};
|
||||
public:
|
||||
template<typename ...TailTs> _EngineFunctionDefaultArguments(DefVST<TailTs> ...tail)
|
||||
{
|
||||
tailInit(tail...);
|
||||
}
|
||||
};
|
||||
|
||||
#pragma pack( pop )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue