#ifndef AD5404F9_7A8A_45FF_8ABE_66F7E9E53212 #define AD5404F9_7A8A_45FF_8ABE_66F7E9E53212 /* ******************************************************************************* * INCLUDE ******************************************************************************* */ #include #include #include /* ******************************************************************************* * 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 static std::string demangle(); template static std::string demangle(const T& object); static std::string demangle(const std::type_info& ti); }; template std::string ClassAssistant::demangle() { return demangle(typeid(T)); } template inline std::string ClassAssistant::demangle(const T& object) { return demangle(typeid(object)); } } #endif