Base: apply clang format
This commit is contained in:
@@ -31,72 +31,104 @@ using PyObject = struct _object;
|
||||
|
||||
|
||||
/// define for subclassing Base::BaseClass
|
||||
#define TYPESYSTEM_HEADER() \
|
||||
public: \
|
||||
static Base::Type getClassTypeId(void); \
|
||||
virtual Base::Type getTypeId(void) const; \
|
||||
static void init(void);\
|
||||
static void *create(void);\
|
||||
private: \
|
||||
static Base::Type classTypeId
|
||||
#define TYPESYSTEM_HEADER() \
|
||||
public: \
|
||||
static Base::Type getClassTypeId(void); \
|
||||
virtual Base::Type getTypeId(void) const; \
|
||||
static void init(void); \
|
||||
static void* create(void); \
|
||||
\
|
||||
private: \
|
||||
static Base::Type classTypeId
|
||||
|
||||
|
||||
/// Like TYPESYSTEM_HEADER, but declare getTypeId as 'override'
|
||||
#define TYPESYSTEM_HEADER_WITH_OVERRIDE() \
|
||||
public: \
|
||||
static Base::Type getClassTypeId(void); \
|
||||
virtual Base::Type getTypeId(void) const override; \
|
||||
static void init(void);\
|
||||
static void *create(void);\
|
||||
private: \
|
||||
static Base::Type classTypeId
|
||||
#define TYPESYSTEM_HEADER_WITH_OVERRIDE() \
|
||||
public: \
|
||||
static Base::Type getClassTypeId(void); \
|
||||
virtual Base::Type getTypeId(void) const override; \
|
||||
static void init(void); \
|
||||
static void* create(void); \
|
||||
\
|
||||
private: \
|
||||
static Base::Type classTypeId
|
||||
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE_P(_class_) \
|
||||
Base::Type _class_::getClassTypeId(void) { return _class_::classTypeId; } \
|
||||
Base::Type _class_::getTypeId(void) const { return _class_::classTypeId; } \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
void * _class_::create(void){\
|
||||
return new _class_ ();\
|
||||
}
|
||||
#define TYPESYSTEM_SOURCE_P(_class_) \
|
||||
Base::Type _class_::getClassTypeId(void) \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
Base::Type _class_::getTypeId(void) const \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
void* _class_::create(void) \
|
||||
{ \
|
||||
return new _class_(); \
|
||||
}
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE_TEMPLATE_P(_class_) \
|
||||
template<> Base::Type _class_::getClassTypeId(void) { return _class_::classTypeId; } \
|
||||
template<> Base::Type _class_::getTypeId(void) const { return _class_::classTypeId; } \
|
||||
template<> void * _class_::create(void){\
|
||||
return new _class_ ();\
|
||||
}
|
||||
#define TYPESYSTEM_SOURCE_TEMPLATE_P(_class_) \
|
||||
template<> \
|
||||
Base::Type _class_::getClassTypeId(void) \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
template<> \
|
||||
Base::Type _class_::getTypeId(void) const \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
template<> \
|
||||
void* _class_::create(void) \
|
||||
{ \
|
||||
return new _class_(); \
|
||||
}
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE_ABSTRACT_P(_class_) \
|
||||
Base::Type _class_::getClassTypeId(void) { return _class_::classTypeId; } \
|
||||
Base::Type _class_::getTypeId(void) const { return _class_::classTypeId; } \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
void * _class_::create(void){return 0;}
|
||||
#define TYPESYSTEM_SOURCE_ABSTRACT_P(_class_) \
|
||||
Base::Type _class_::getClassTypeId(void) \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
Base::Type _class_::getTypeId(void) const \
|
||||
{ \
|
||||
return _class_::classTypeId; \
|
||||
} \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
void* _class_::create(void) \
|
||||
{ \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_P(_class_)\
|
||||
void _class_::init(void){\
|
||||
initSubclass(_class_::classTypeId, #_class_ , #_parentclass_, &(_class_::create) ); \
|
||||
}
|
||||
#define TYPESYSTEM_SOURCE(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_P(_class_) \
|
||||
void _class_::init(void) \
|
||||
{ \
|
||||
initSubclass(_class_::classTypeId, #_class_, #_parentclass_, &(_class_::create)); \
|
||||
}
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE_TEMPLATE_T(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_P(_class_)\
|
||||
template<> void _class_::init(void){\
|
||||
initSubclass(_class_::classTypeId, #_class_ , #_parentclass_, &(_class_::create) ); \
|
||||
}
|
||||
#define TYPESYSTEM_SOURCE_TEMPLATE_T(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_TEMPLATE_P(_class_) \
|
||||
template<> \
|
||||
void _class_::init(void) \
|
||||
{ \
|
||||
initSubclass(_class_::classTypeId, #_class_, #_parentclass_, &(_class_::create)); \
|
||||
}
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
#define TYPESYSTEM_SOURCE_ABSTRACT(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_ABSTRACT_P(_class_)\
|
||||
void _class_::init(void){\
|
||||
initSubclass(_class_::classTypeId, #_class_ , #_parentclass_, &(_class_::create) ); \
|
||||
}
|
||||
#define TYPESYSTEM_SOURCE_ABSTRACT(_class_, _parentclass_) \
|
||||
TYPESYSTEM_SOURCE_ABSTRACT_P(_class_) \
|
||||
void _class_::init(void) \
|
||||
{ \
|
||||
initSubclass(_class_::classTypeId, #_class_, #_parentclass_, &(_class_::create)); \
|
||||
}
|
||||
|
||||
namespace Base
|
||||
{
|
||||
@@ -104,54 +136,69 @@ namespace Base
|
||||
class BaseExport BaseClass
|
||||
{
|
||||
public:
|
||||
static Type getClassTypeId();
|
||||
virtual Type getTypeId() const;
|
||||
bool isDerivedFrom(const Type type) const {return getTypeId().isDerivedFrom(type);}
|
||||
static Type getClassTypeId();
|
||||
virtual Type getTypeId() const;
|
||||
bool isDerivedFrom(const Type type) const
|
||||
{
|
||||
return getTypeId().isDerivedFrom(type);
|
||||
}
|
||||
|
||||
static void init();
|
||||
static void init();
|
||||
|
||||
virtual PyObject *getPyObject();
|
||||
virtual void setPyObject(PyObject *);
|
||||
virtual PyObject* getPyObject();
|
||||
virtual void setPyObject(PyObject*);
|
||||
|
||||
static void *create(){return nullptr;}
|
||||
static void* create()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool is() const
|
||||
{
|
||||
return getTypeId() == T::getClassTypeId();
|
||||
}
|
||||
template<typename T>
|
||||
bool is() const
|
||||
{
|
||||
return getTypeId() == T::getClassTypeId();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool isDerivedFrom() const
|
||||
{
|
||||
return getTypeId().isDerivedFrom(T::getClassTypeId());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool isDerivedFrom() const
|
||||
{
|
||||
return getTypeId().isDerivedFrom(T::getClassTypeId());
|
||||
}
|
||||
private:
|
||||
static Type classTypeId;
|
||||
static Type classTypeId; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||
|
||||
protected:
|
||||
static void initSubclass(Base::Type &toInit,const char* ClassName, const char *ParentName, Type::instantiationMethod method=nullptr);
|
||||
static void initSubclass(Base::Type& toInit,
|
||||
const char* ClassName,
|
||||
const char* ParentName,
|
||||
Type::instantiationMethod method = nullptr);
|
||||
|
||||
public:
|
||||
/// Construction
|
||||
BaseClass();
|
||||
BaseClass(const BaseClass&) = default;
|
||||
BaseClass& operator=(const BaseClass&) = default;
|
||||
/// Destruction
|
||||
virtual ~BaseClass();
|
||||
|
||||
/// Construction
|
||||
BaseClass();
|
||||
BaseClass(const BaseClass&) = default;
|
||||
BaseClass& operator=(const BaseClass&) = default;
|
||||
BaseClass(BaseClass&&) = default;
|
||||
BaseClass& operator=(BaseClass&&) = default;
|
||||
/// Destruction
|
||||
virtual ~BaseClass();
|
||||
};
|
||||
|
||||
/**
|
||||
* Template that works just like dynamic_cast, but expects the argument to
|
||||
* inherit from Base::BaseClass.
|
||||
*
|
||||
*/
|
||||
template<typename T> T * freecad_dynamic_cast(Base::BaseClass * t)
|
||||
* Template that works just like dynamic_cast, but expects the argument to
|
||||
* inherit from Base::BaseClass.
|
||||
*
|
||||
*/
|
||||
template<typename T>
|
||||
T* freecad_dynamic_cast(Base::BaseClass* t)
|
||||
{
|
||||
if (t && t->isDerivedFrom(T::getClassTypeId()))
|
||||
if (t && t->isDerivedFrom(T::getClassTypeId())) {
|
||||
return static_cast<T*>(t);
|
||||
else
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,16 +206,18 @@ template<typename T> T * freecad_dynamic_cast(Base::BaseClass * t)
|
||||
* inherit from a const Base::BaseClass.
|
||||
*
|
||||
*/
|
||||
template<typename T> const T * freecad_dynamic_cast(const Base::BaseClass * t)
|
||||
template<typename T>
|
||||
const T* freecad_dynamic_cast(const Base::BaseClass* t)
|
||||
{
|
||||
if (t && t->isDerivedFrom(T::getClassTypeId()))
|
||||
if (t && t->isDerivedFrom(T::getClassTypeId())) {
|
||||
return static_cast<const T*>(t);
|
||||
else
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} //namespace Base
|
||||
|
||||
#endif // BASE_BASECLASS_H
|
||||
} // namespace Base
|
||||
|
||||
#endif // BASE_BASECLASS_H
|
||||
|
||||
Reference in New Issue
Block a user