68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
#ifndef AD5404F9_7A8A_45FF_8ABE_66F7E9E53212
|
|
#define AD5404F9_7A8A_45FF_8ABE_66F7E9E53212
|
|
/*
|
|
*******************************************************************************
|
|
* INCLUDE
|
|
*******************************************************************************
|
|
*/
|
|
#include <cxxabi.h>
|
|
#include <string>
|
|
#include <typeinfo>
|
|
|
|
/*
|
|
*******************************************************************************
|
|
* MACROS
|
|
*******************************************************************************
|
|
*/
|
|
#define PROPERTY_DECLARE(name, type, defaultValue, setAccessibility, getAccessibility) \
|
|
private: \
|
|
type _##name = defaultValue; \
|
|
setAccessibility: \
|
|
void set##name(const type& value) \
|
|
{ \
|
|
_##name = value; \
|
|
} \
|
|
getAccessibility: \
|
|
type get##name() \
|
|
{ \
|
|
return _##name; \
|
|
}
|
|
|
|
#define READONLY_PROPERTY_DECLARE(name, type) \
|
|
private: \
|
|
type _##name; \
|
|
\
|
|
public: \
|
|
const type& name() \
|
|
{ \
|
|
return _##name; \
|
|
}
|
|
|
|
namespace Util
|
|
{
|
|
/*
|
|
*******************************************************************************
|
|
* FUNCTIONS
|
|
*******************************************************************************
|
|
*/
|
|
class ClassAssistant
|
|
{
|
|
public:
|
|
template <typename T> static std::string demangle();
|
|
|
|
template <typename T> static std::string demangle(const T& object);
|
|
|
|
static std::string demangle(const std::type_info& ti);
|
|
};
|
|
|
|
template <typename T> std::string ClassAssistant::demangle()
|
|
{
|
|
return demangle(typeid(T));
|
|
}
|
|
|
|
template <typename T> inline std::string ClassAssistant::demangle(const T& object)
|
|
{
|
|
return demangle(typeid(object));
|
|
}
|
|
}
|
|
#endif
|