mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 08:34:40 +00:00
partly addresses https://msdn.microsoft.com/en-us/library/y775w13y.aspx?f=255&MSPPError=-2147217396 violations
This commit is contained in:
parent
86e0e67496
commit
4bba5d87d0
5 changed files with 71 additions and 17 deletions
|
|
@ -318,6 +318,10 @@ const EngineTypeInfo* _MAPTYPE() { return TYPE< T >(); }
|
||||||
DECLARE_ENUM( type ); \
|
DECLARE_ENUM( type ); \
|
||||||
DefineConsoleType( Type ## type, type );
|
DefineConsoleType( Type ## type, type );
|
||||||
|
|
||||||
|
#define DefineEnumType_R( type ) \
|
||||||
|
DECLARE_ENUM_R( type ); \
|
||||||
|
DefineConsoleType( Type ## type, type );
|
||||||
|
|
||||||
#define _ConsoleEnumType( typeName, type, nativeType ) \
|
#define _ConsoleEnumType( typeName, type, nativeType ) \
|
||||||
S32 type; \
|
S32 type; \
|
||||||
ImplementConsoleTypeCasters( type, nativeType ) \
|
ImplementConsoleTypeCasters( type, nativeType ) \
|
||||||
|
|
@ -347,6 +351,10 @@ const EngineTypeInfo* _MAPTYPE() { return TYPE< T >(); }
|
||||||
DECLARE_BITFIELD( type ); \
|
DECLARE_BITFIELD( type ); \
|
||||||
DefineConsoleType( Type ## type, type );
|
DefineConsoleType( Type ## type, type );
|
||||||
|
|
||||||
|
#define DefineBitfieldType_R( type ) \
|
||||||
|
DECLARE_BITFIELD_R( type ); \
|
||||||
|
DefineConsoleType( Type ## type, type );
|
||||||
|
|
||||||
#define _ConsoleBitfieldType( typeName, type, nativeType ) \
|
#define _ConsoleBitfieldType( typeName, type, nativeType ) \
|
||||||
S32 type; \
|
S32 type; \
|
||||||
ImplementConsoleTypeCasters( type, nativeType ) \
|
ImplementConsoleTypeCasters( type, nativeType ) \
|
||||||
|
|
|
||||||
|
|
@ -34,14 +34,14 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DECLARE_PRIMITIVE( bool );
|
DECLARE_PRIMITIVE_R( bool );
|
||||||
DECLARE_PRIMITIVE( S8 );
|
DECLARE_PRIMITIVE_R(S8);
|
||||||
DECLARE_PRIMITIVE( U8 );
|
DECLARE_PRIMITIVE_R(U8);
|
||||||
DECLARE_PRIMITIVE( S32 );
|
DECLARE_PRIMITIVE_R(S32);
|
||||||
DECLARE_PRIMITIVE( U32 );
|
DECLARE_PRIMITIVE_R(U32);
|
||||||
DECLARE_PRIMITIVE( F32 );
|
DECLARE_PRIMITIVE_R(F32);
|
||||||
DECLARE_PRIMITIVE( F64 );
|
DECLARE_PRIMITIVE_R(F64);
|
||||||
DECLARE_PRIMITIVE( void* );
|
DECLARE_PRIMITIVE_R(void*);
|
||||||
|
|
||||||
|
|
||||||
//FIXME: this allows String to be used as a struct field type
|
//FIXME: this allows String to be used as a struct field type
|
||||||
|
|
@ -52,7 +52,7 @@ DECLARE_PRIMITIVE( void* );
|
||||||
// are considered to be owned by the API layer itself. The rule here is that such
|
// are considered to be owned by the API layer itself. The rule here is that such
|
||||||
// a string is only valid until the next API call is made. Usually, control layers
|
// a string is only valid until the next API call is made. Usually, control layers
|
||||||
// will immediately copy and convert strings to their own string type.
|
// will immediately copy and convert strings to their own string type.
|
||||||
_DECLARE_TYPE( String );
|
_DECLARE_TYPE_R(String);
|
||||||
template<>
|
template<>
|
||||||
struct EngineTypeTraits< String > : public _EnginePrimitiveTypeTraits< String >
|
struct EngineTypeTraits< String > : public _EnginePrimitiveTypeTraits< String >
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,11 @@ class ColorI;
|
||||||
class ColorF;
|
class ColorF;
|
||||||
|
|
||||||
|
|
||||||
DECLARE_STRUCT( Vector< bool > );
|
DECLARE_STRUCT_R(Vector< bool >);
|
||||||
DECLARE_STRUCT( Vector< S32 > );
|
DECLARE_STRUCT_R(Vector< S32 >);
|
||||||
DECLARE_STRUCT( Vector< F32 > );
|
DECLARE_STRUCT_R(Vector< F32 >);
|
||||||
DECLARE_STRUCT( Torque::UUID );
|
DECLARE_STRUCT_R(Torque::UUID);
|
||||||
DECLARE_STRUCT( ColorI );
|
DECLARE_STRUCT_R(ColorI);
|
||||||
DECLARE_STRUCT( ColorF );
|
DECLARE_STRUCT_R(ColorF);
|
||||||
|
|
||||||
#endif // !_ENGINESTRUCTS_H_
|
#endif // !_ENGINESTRUCTS_H_
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ enum EngineTypeKind
|
||||||
EngineTypeKindClass ///< Pointer to opaque EngineObject.
|
EngineTypeKindClass ///< Pointer to opaque EngineObject.
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ENUM( EngineTypeKind );
|
DECLARE_ENUM_R( EngineTypeKind );
|
||||||
|
|
||||||
/// Flags for an EngineTypeInfo.
|
/// Flags for an EngineTypeInfo.
|
||||||
enum EngineTypeFlags
|
enum EngineTypeFlags
|
||||||
|
|
|
||||||
|
|
@ -416,6 +416,16 @@ namespace _Private {
|
||||||
|
|
||||||
|
|
||||||
#define _DECLARE_TYPE( type ) \
|
#define _DECLARE_TYPE( type ) \
|
||||||
|
template<> const EngineTypeInfo* TYPE< type >(); \
|
||||||
|
template<> struct _SCOPE< type > { \
|
||||||
|
EngineExportScope& operator()() const { \
|
||||||
|
return *static_cast< EngineExportScope* >( \
|
||||||
|
const_cast< EngineTypeInfo* >( ( TYPE< type >() ) ) \
|
||||||
|
); \
|
||||||
|
} \
|
||||||
|
};
|
||||||
|
|
||||||
|
#define _DECLARE_TYPE_R( type ) \
|
||||||
template<> const EngineTypeInfo* TYPE< type >(); \
|
template<> const EngineTypeInfo* TYPE< type >(); \
|
||||||
template<> struct _SCOPE< type > { \
|
template<> struct _SCOPE< type > { \
|
||||||
EngineExportScope& operator()() const { \
|
EngineExportScope& operator()() const { \
|
||||||
|
|
@ -432,22 +442,42 @@ namespace _Private {
|
||||||
_DECLARE_TYPE( type ) \
|
_DECLARE_TYPE( type ) \
|
||||||
template<> \
|
template<> \
|
||||||
struct EngineTypeTraits< type > : public _EnginePrimitiveTypeTraits< type > {};
|
struct EngineTypeTraits< type > : public _EnginePrimitiveTypeTraits< type > {};
|
||||||
|
|
||||||
|
#define _DECLARE_PRIMITIVE_R( type ) \
|
||||||
|
_DECLARE_TYPE_R( type ) \
|
||||||
|
template<> \
|
||||||
|
struct EngineTypeTraits< type > : public _EnginePrimitiveTypeTraits< type > {};
|
||||||
|
|
||||||
#define _DECLARE_ENUM( type ) \
|
#define _DECLARE_ENUM( type ) \
|
||||||
_DECLARE_TYPE( type ) \
|
_DECLARE_TYPE( type ) \
|
||||||
template<> \
|
template<> \
|
||||||
struct _EngineTypeTraits< type > : public _EngineEnumTypeTraits< type > {};
|
struct _EngineTypeTraits< type > : public _EngineEnumTypeTraits< type > {};
|
||||||
|
|
||||||
|
#define _DECLARE_ENUM_R( type ) \
|
||||||
|
_DECLARE_TYPE_R( type ) \
|
||||||
|
template<> \
|
||||||
|
struct _EngineTypeTraits< type > : public _EngineEnumTypeTraits< type > {};
|
||||||
|
|
||||||
#define _DECLARE_BITFIELD( type ) \
|
#define _DECLARE_BITFIELD( type ) \
|
||||||
_DECLARE_TYPE( type ) \
|
_DECLARE_TYPE( type ) \
|
||||||
template<> \
|
template<> \
|
||||||
struct _EngineTypeTraits< type > : public _EngineBitfieldTypeTraits< type > {};
|
struct _EngineTypeTraits< type > : public _EngineBitfieldTypeTraits< type > {};
|
||||||
|
|
||||||
|
#define _DECLARE_BITFIELD_R( type ) \
|
||||||
|
_DECLARE_TYPE_R( type ) \
|
||||||
|
template<> \
|
||||||
|
struct _EngineTypeTraits< type > : public _EngineBitfieldTypeTraits< type > {};
|
||||||
|
|
||||||
|
|
||||||
#define _DECLARE_STRUCT( type ) \
|
#define _DECLARE_STRUCT( type ) \
|
||||||
_DECLARE_TYPE( type ) \
|
_DECLARE_TYPE( type ) \
|
||||||
template<> \
|
template<> \
|
||||||
struct _EngineTypeTraits< type > : public _EngineStructTypeTraits< type > {};
|
struct _EngineTypeTraits< type > : public _EngineStructTypeTraits< type > {};
|
||||||
|
|
||||||
|
#define _DECLARE_STRUCT_R( type ) \
|
||||||
|
_DECLARE_TYPE_R( type ) \
|
||||||
|
template<> \
|
||||||
|
struct _EngineTypeTraits< type > : public _EngineStructTypeTraits< type > {};
|
||||||
|
|
||||||
#define _IMPLEMENT_TYPE( type, exportName ) \
|
#define _IMPLEMENT_TYPE( type, exportName ) \
|
||||||
template<> \
|
template<> \
|
||||||
|
|
@ -524,6 +554,10 @@ namespace _Private {
|
||||||
#define DECLARE_PRIMITIVE( type ) \
|
#define DECLARE_PRIMITIVE( type ) \
|
||||||
_DECLARE_PRIMITIVE( type )
|
_DECLARE_PRIMITIVE( type )
|
||||||
|
|
||||||
|
///
|
||||||
|
#define DECLARE_PRIMITIVE_R( type ) \
|
||||||
|
_DECLARE_PRIMITIVE_R( type )
|
||||||
|
|
||||||
///
|
///
|
||||||
#define IMPLEMENT_PRIMITIVE( type, exportName, scope, doc ) \
|
#define IMPLEMENT_PRIMITIVE( type, exportName, scope, doc ) \
|
||||||
_IMPLEMENT_PRIMITIVE( type, exportName, scope, doc )
|
_IMPLEMENT_PRIMITIVE( type, exportName, scope, doc )
|
||||||
|
|
@ -531,11 +565,19 @@ namespace _Private {
|
||||||
///
|
///
|
||||||
#define DECLARE_ENUM( type ) \
|
#define DECLARE_ENUM( type ) \
|
||||||
_DECLARE_ENUM( type )
|
_DECLARE_ENUM( type )
|
||||||
|
|
||||||
|
///
|
||||||
|
#define DECLARE_ENUM_R( type ) \
|
||||||
|
_DECLARE_ENUM_R( type )
|
||||||
|
|
||||||
///
|
///
|
||||||
#define DECLARE_BITFIELD( type ) \
|
#define DECLARE_BITFIELD( type ) \
|
||||||
_DECLARE_BITFIELD( type )
|
_DECLARE_BITFIELD( type )
|
||||||
|
|
||||||
|
///
|
||||||
|
#define DECLARE_BITFIELD_R( type ) \
|
||||||
|
_DECLARE_BITFIELD_R( type )
|
||||||
|
|
||||||
///
|
///
|
||||||
#define IMPLEMENT_ENUM( type, exportName, scope, doc ) \
|
#define IMPLEMENT_ENUM( type, exportName, scope, doc ) \
|
||||||
_IMPLEMENT_ENUM( type, exportName, scope, doc )
|
_IMPLEMENT_ENUM( type, exportName, scope, doc )
|
||||||
|
|
@ -556,6 +598,10 @@ namespace _Private {
|
||||||
#define DECLARE_STRUCT( type ) \
|
#define DECLARE_STRUCT( type ) \
|
||||||
_DECLARE_STRUCT( type )
|
_DECLARE_STRUCT( type )
|
||||||
|
|
||||||
|
///
|
||||||
|
#define DECLARE_STRUCT_R( type ) \
|
||||||
|
_DECLARE_STRUCT_R( type )
|
||||||
|
|
||||||
///
|
///
|
||||||
#define IMPLEMENT_STRUCT( type, exportName, scope, doc ) \
|
#define IMPLEMENT_STRUCT( type, exportName, scope, doc ) \
|
||||||
_IMPLEMENT_STRUCT( type, exportName, scope, doc )
|
_IMPLEMENT_STRUCT( type, exportName, scope, doc )
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue