Open CASCADE Technology 6.6.0
Defines
Standard_DefineHandle.hxx File Reference
#include <Standard_Macro.hxx>

Defines

#define IMPLEMENT_DOWNCAST(C1, BC)
#define DEFINE_STANDARD_HANDLECLASS(C1, C2, BC)
#define DEFINE_STANDARD_HANDLE(C1, C2)   DEFINE_STANDARD_HANDLECLASS(C1,C2,Standard_Transient)
#define IMPLEMENT_STANDARD_HANDLE(C1, C2)   IMPLEMENT_DOWNCAST(C1,Standard_Transient)
#define DEFINE_STANDARD_PHANDLE(C1, C2)   DEFINE_STANDARD_HANDLECLASS(C1,C2,Standard_Persistent)
#define IMPLEMENT_STANDARD_PHANDLE(C1, C2)   IMPLEMENT_DOWNCAST(C1,Standard_Persistent)
#define DEFINE_STANDARD_RTTI(C1)   Standard_EXPORT virtual const Handle(Standard_Type)& DynamicType() const;
#define IMPLEMENT_STANDARD_RTTI(C1)
#define IMPLEMENT_STANDARD_TYPE(C1)
#define IMPLEMENT_STANDARD_SUPERTYPE(Cn)
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY()   static Handle(Standard_Transient) _Ancestors[]= {
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY(Cn)   STANDARD_TYPE(Cn),
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END()
#define IMPLEMENT_STANDARD_TYPE_END(C1)
#define IMPLEMENT_STANDARD_RTTIEXT(C1, C2)

Define Documentation

#define DEFINE_STANDARD_HANDLE (   C1,
  C2 
)    DEFINE_STANDARD_HANDLECLASS(C1,C2,Standard_Transient)
#define DEFINE_STANDARD_HANDLECLASS (   C1,
  C2,
  BC 
)
Value:
class C1; \
Standard_EXPORT const Handle(Standard_Type)& STANDARD_TYPE(C1); \
 \
class Handle(C1) : public Handle(C2) { \
public: \
  Handle(C1)():Handle(C2)() {} \
  \
  Handle(C1)(const Handle(C1)& aHandle) : Handle(C2)(aHandle) {} \
  \
  Handle(C1)(const C1* anItem) : Handle(C2)((C2 *)anItem) {} \
  \
  Handle(C1)& operator=(const Handle(C1)& aHandle) \
  { \
    Assign(aHandle.Access()); \
    return *this; \
  } \
  \
  Handle(C1)& operator=(const C1* anItem) \
  { \
    Assign((BC *)anItem); \
    return *this; \
  } \
  \
  C1* operator->() const \
  { \
    return (C1 *)ControlAccess(); \
  } \
  \
  Standard_EXPORT static Handle(C1) DownCast(const Handle(BC)& AnObject); \
};
#define DEFINE_STANDARD_PHANDLE (   C1,
  C2 
)    DEFINE_STANDARD_HANDLECLASS(C1,C2,Standard_Persistent)
#define DEFINE_STANDARD_RTTI (   C1)    Standard_EXPORT virtual const Handle(Standard_Type)& DynamicType() const;
#define IMPLEMENT_DOWNCAST (   C1,
  BC 
)
Value:
Handle(C1) Handle(C1)::DownCast(const Handle(BC)& AnObject)  \
{ \
  Handle(C1) _anOtherObject; \
 \
  if (!AnObject.IsNull()) { \
    if (AnObject->IsKind(STANDARD_TYPE(C1))) { \
      _anOtherObject = Handle(C1)((Handle(C1)&)AnObject); \
    } \
  } \
 \
  return _anOtherObject ; \
}
#define IMPLEMENT_STANDARD_HANDLE (   C1,
  C2 
)    IMPLEMENT_DOWNCAST(C1,Standard_Transient)
#define IMPLEMENT_STANDARD_PHANDLE (   C1,
  C2 
)    IMPLEMENT_DOWNCAST(C1,Standard_Persistent)
#define IMPLEMENT_STANDARD_RTTI (   C1)
Value:
const Handle(Standard_Type)& C1::DynamicType() const \
{ \
  return STANDARD_TYPE(C1); \
}
#define IMPLEMENT_STANDARD_RTTIEXT (   C1,
  C2 
)
#define IMPLEMENT_STANDARD_SUPERTYPE (   Cn)
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY ( )    static Handle(Standard_Transient) _Ancestors[]= {
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END ( )
Value:
NULL \
};
#define IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY (   Cn)    STANDARD_TYPE(Cn),
#define IMPLEMENT_STANDARD_TYPE (   C1)
Value:
static Handle(Standard_Type) aType##C1 = STANDARD_TYPE(C1); \
 \
const Handle(Standard_Type)& STANDARD_TYPE(C1) \
{
#define IMPLEMENT_STANDARD_TYPE_END (   C1)
Value:
static Handle(Standard_Type) _aType = new Standard_Type(#C1,sizeof(C1),1, \
                                                        (Standard_Address)_Ancestors, \
                                                        (Standard_Address)NULL); \
  return _aType; \
}
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines