Open CASCADE Technology  7.9.3
Data Structures | Macros | Functions
Standard_Type.hxx File Reference
#include <Standard.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Transient.hxx>
#include <Standard_OStream.hxx>
#include <typeinfo>
#include <typeindex>
#include <type_traits>

Data Structures

class  Standard_Type
 This class provides legacy interface (type descriptor) to run-time type information (RTTI) for OCCT classes inheriting from Standard_Transient. More...
 

Macros

#define OCCT_CHECK_BASE_CLASS(Class, Base)
 
#define STANDARD_TYPE(theType)   theType::get_type_descriptor()
 Helper macro to get instance of a type descriptor for a class in a legacy way. More...
 
#define DEFINE_STANDARD_RTTI_INLINE(Class, Base)
 Helper macro to be included in definition of the classes inheriting Standard_Transient to enable use of OCCT RTTI. More...
 
#define DEFINE_STANDARD_RTTIEXT(Class, Base)
 Helper macro to be included in definition of the classes inheriting Standard_Transient to enable use of OCCT RTTI. More...
 
#define IMPLEMENT_STANDARD_RTTIEXT(Class, Base)
 Defines implementation of type descriptor and DynamicType() function. More...
 

Functions

Standard_OStreamoperator<< (Standard_OStream &theStream, const Handle< Standard_Type > &theType)
 Operator printing type descriptor to stream. More...
 

Macro Definition Documentation

#define DEFINE_STANDARD_RTTI_INLINE (   Class,
  Base 
)
Value:
public: \
typedef Base base_type; \
static constexpr const char* get_type_name() \
{ \
OCCT_CHECK_BASE_CLASS(Class, Base); \
return #Class; \
} \
static const Handle(Standard_Type)& get_type_descriptor() \
{ \
static const Handle(Standard_Type) THE_TYPE_INSTANCE = \
Standard_Type::Register(typeid(Class), \
get_type_name(), \
sizeof(Class), \
Base::get_type_descriptor()); \
return THE_TYPE_INSTANCE; \
} \
virtual const Handle(Standard_Type)& DynamicType() const Standard_OVERRIDE \
{ \
return get_type_descriptor(); \
}
#define Standard_OVERRIDE
Should be used in declarations of virtual methods overridden in the derived classes, to cause compilation error in the case if that virtual function disappears or changes its signature in the base class.
Definition: Standard_Macro.hxx:41
This class provides legacy interface (type descriptor) to run-time type information (RTTI) for OCCT c...
Definition: Standard_Type.hxx:120
#define Handle(Class)
Define Handle() macro.
Definition: Standard_Handle.hxx:403

Helper macro to be included in definition of the classes inheriting Standard_Transient to enable use of OCCT RTTI.

Inline version, does not require IMPLEMENT_STANDARD_RTTIEXT, but when used for big hierarchies of classes may cause considerable increase of size of binaries.

#define DEFINE_STANDARD_RTTIEXT (   Class,
  Base 
)
Value:
public: \
typedef Base base_type; \
static constexpr const char* get_type_name() \
{ \
OCCT_CHECK_BASE_CLASS(Class, Base); \
return #Class; \
} \
Standard_EXPORT static const Handle(Standard_Type)& get_type_descriptor(); \
Standard_EXPORT virtual const Handle(Standard_Type)& DynamicType() const Standard_OVERRIDE;
#define Standard_OVERRIDE
Should be used in declarations of virtual methods overridden in the derived classes, to cause compilation error in the case if that virtual function disappears or changes its signature in the base class.
Definition: Standard_Macro.hxx:41
This class provides legacy interface (type descriptor) to run-time type information (RTTI) for OCCT c...
Definition: Standard_Type.hxx:120
#define Handle(Class)
Define Handle() macro.
Definition: Standard_Handle.hxx:403

Helper macro to be included in definition of the classes inheriting Standard_Transient to enable use of OCCT RTTI.

Out-of-line version, requires IMPLEMENT_STANDARD_RTTIEXT.

#define IMPLEMENT_STANDARD_RTTIEXT (   Class,
  Base 
)
Value:
OCCT_CHECK_BASE_CLASS(Class, Base) \
const Handle(Standard_Type)& Class::get_type_descriptor() \
{ \
static const Handle(Standard_Type) THE_TYPE_INSTANCE = \
Standard_Type::Register(typeid(Class), \
get_type_name(), \
sizeof(Class), \
Class::base_type::get_type_descriptor()); \
return THE_TYPE_INSTANCE; \
} \
const Handle(Standard_Type)& Class::DynamicType() const \
{ \
return STANDARD_TYPE(Class); \
}
This class provides legacy interface (type descriptor) to run-time type information (RTTI) for OCCT c...
Definition: Standard_Type.hxx:120
#define STANDARD_TYPE(theType)
Helper macro to get instance of a type descriptor for a class in a legacy way.
Definition: Standard_Type.hxx:36
#define Handle(Class)
Define Handle() macro.
Definition: Standard_Handle.hxx:403
#define OCCT_CHECK_BASE_CLASS(Class, Base)
Definition: Standard_Type.hxx:30

Defines implementation of type descriptor and DynamicType() function.

#define OCCT_CHECK_BASE_CLASS (   Class,
  Base 
)
Value:
"OCCT RTTI definition is incorrect: " #Base " is not base class of " #Class);
GLsizei GLboolean const GLfloat * value
Definition: OpenGl_GLESExtensions.hxx:196
#define STANDARD_TYPE (   theType)    theType::get_type_descriptor()

Helper macro to get instance of a type descriptor for a class in a legacy way.

Function Documentation

Standard_OStream& operator<< ( Standard_OStream theStream,
const Handle< Standard_Type > &  theType 
)
inline

Operator printing type descriptor to stream.