qx::trait::get_class_name<T>::get() : return class name of type T under const char * format, T must be registered with QX_REGISTER_CLASS_NAME(T) macro
More...
#include <typeinfo>
#include <QxTraits/remove_attr.h>
Go to the source code of this file.
|
namespace | qx |
| Root namespace for all QxOrm library features.
|
|
namespace | qx::trait |
| QxOrm library traits (template metaprogramming) not available in boost::type_traits library.
|
|
qx::trait::get_class_name<T>::get() : return class name of type T under const char * format, T must be registered with QX_REGISTER_CLASS_NAME(T) macro
- Author
- Lionel Marty
Definition in file get_class_name.h.
◆ QX_GET_CLASS_NAME
#define QX_GET_CLASS_NAME |
( |
| TYPE | ) |
|
Value:
qx::trait::get_class_name<T>::get() : return class name of type T under const char * format,...
Definition at line 60 of file get_class_name.h.
◆ QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG
#define QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG |
( |
| ) |
|
Value:static inline const char * get_xml_tag() \
{ \
static std::string result_xml; \
if (! result_xml.empty()) { return result_xml.c_str(); } \
QString tmp = get_class_name::get(); \
tmp.replace("::", "."); \
tmp.replace(" ", ""); \
result_xml = tmp.toLatin1().constData(); \
return result_xml.c_str(); \
}
#define QX_REGISTER_CLASS_NAME_SEP_INF
#define QX_REGISTER_CLASS_NAME_SEP_NXT
#define QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG
#define QX_REGISTER_CLASS_NAME_SEP_SUP
#define QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG
#define QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG
Definition at line 84 of file get_class_name.h.
◆ QX_GET_CLASS_NAME_STD_STR
#define QX_GET_CLASS_NAME_STD_STR |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME
#define QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_WITH_TYPENAME
#define QX_GET_CLASS_NAME_WITH_TYPENAME |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_XML_TAG
#define QX_GET_CLASS_NAME_XML_TAG |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_XML_TAG_STD_STR
#define QX_GET_CLASS_NAME_XML_TAG_STD_STR |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_XML_TAG_STD_STR_WITH_TYPENAME
#define QX_GET_CLASS_NAME_XML_TAG_STD_STR_WITH_TYPENAME |
( |
| TYPE | ) |
|
◆ QX_GET_CLASS_NAME_XML_TAG_WITH_TYPENAME
#define QX_GET_CLASS_NAME_XML_TAG_WITH_TYPENAME |
( |
| TYPE | ) |
|
◆ QX_REGISTER_CLASS_NAME
#define QX_REGISTER_CLASS_NAME |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <> \
struct get_class_name< className > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Root namespace for all QxOrm library features.
Definition at line 142 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_SEP_INF
#define QX_REGISTER_CLASS_NAME_SEP_INF "<" |
◆ QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG
#define QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG "-" |
◆ QX_REGISTER_CLASS_NAME_SEP_NXT
#define QX_REGISTER_CLASS_NAME_SEP_NXT ", " |
◆ QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG
#define QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG "_" |
◆ QX_REGISTER_CLASS_NAME_SEP_SUP
#define QX_REGISTER_CLASS_NAME_SEP_SUP ">" |
◆ QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG
#define QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG "-" |
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_1
#define QX_REGISTER_CLASS_NAME_TEMPLATE_1 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T> \
struct get_class_name< className<T> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
#define QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME(TYPE)
Definition at line 156 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_2
#define QX_REGISTER_CLASS_NAME_TEMPLATE_2 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2> \
struct get_class_name< className<T1, T2> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 171 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_3
#define QX_REGISTER_CLASS_NAME_TEMPLATE_3 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3> \
struct get_class_name< className<T1, T2, T3> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 187 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_4
#define QX_REGISTER_CLASS_NAME_TEMPLATE_4 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4> \
struct get_class_name< className<T1, T2, T3, T4> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 204 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_5
#define QX_REGISTER_CLASS_NAME_TEMPLATE_5 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4, typename T5> \
struct get_class_name< className<T1, T2, T3, T4, T5> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 222 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_6
#define QX_REGISTER_CLASS_NAME_TEMPLATE_6 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> \
struct get_class_name< className<T1, T2, T3, T4, T5, T6> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 241 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_7
#define QX_REGISTER_CLASS_NAME_TEMPLATE_7 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> \
struct get_class_name< className<T1, T2, T3, T4, T5, T6, T7> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 261 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_8
#define QX_REGISTER_CLASS_NAME_TEMPLATE_8 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> \
struct get_class_name< className<T1, T2, T3, T4, T5, T6, T7, T8> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 282 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_9
#define QX_REGISTER_CLASS_NAME_TEMPLATE_9 |
( |
| className | ) |
|
Value:namespace qx {
namespace trait { \
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> \
struct get_class_name< className<T1, T2, T3, T4, T5, T6, T7, T8, T9> > \
{ \
static inline const char * get() \
{ \
QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className); \
return result.c_str(); \
} \
QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG(); \
}; \
} }
Definition at line 304 of file get_class_name.h.
◆ QX_REGISTER_CLASS_NAME_TEMPLATE_INIT
#define QX_REGISTER_CLASS_NAME_TEMPLATE_INIT |
( |
| className | ) |
|
Value:static std::string result; \
if (! result.empty()) { return result.c_str(); } \
result = std::string(#className);
Definition at line 137 of file get_class_name.h.