QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches

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.

Classes

struct  qx::trait::get_class_name< T >
 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...
 

Namespaces

namespace  qx
 Root namespace for all QxOrm library features.
 
namespace  qx::trait
 QxOrm library traits (template metaprogramming) not available in boost::type_traits library.
 

Macros

#define QX_REGISTER_CLASS_NAME_SEP_INF   "<"
 
#define QX_REGISTER_CLASS_NAME_SEP_SUP   ">"
 
#define QX_REGISTER_CLASS_NAME_SEP_NXT   ", "
 
#define QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG   "-"
 
#define QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG   "-"
 
#define QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG   "_"
 
#define QX_GET_CLASS_NAME(TYPE)   qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get()
 
#define QX_GET_CLASS_NAME_STD_STR(TYPE)   std::string(qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get())
 
#define QX_GET_CLASS_NAME_XML_TAG(TYPE)   qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get_xml_tag()
 
#define QX_GET_CLASS_NAME_XML_TAG_STD_STR(TYPE)   std::string(qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get_xml_tag())
 
#define QX_GET_CLASS_NAME_WITH_TYPENAME(TYPE)   qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get()
 
#define QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME(TYPE)   std::string(qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get())
 
#define QX_GET_CLASS_NAME_XML_TAG_WITH_TYPENAME(TYPE)   qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get_xml_tag()
 
#define QX_GET_CLASS_NAME_XML_TAG_STD_STR_WITH_TYPENAME(TYPE)   std::string(qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get_xml_tag())
 
#define QX_GET_CLASS_NAME_IMPLEMENT_FCT_GET_XML_TAG()
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_INIT(className)
 
#define QX_REGISTER_CLASS_NAME(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_1(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_2(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_3(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_4(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_5(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_6(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_7(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_8(className)
 
#define QX_REGISTER_CLASS_NAME_TEMPLATE_9(className)
 

Detailed Description

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.

Macro Definition Documentation

◆ QX_GET_CLASS_NAME

#define QX_GET_CLASS_NAME ( TYPE)    qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get()

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)    std::string(qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get())

Definition at line 63 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME

#define QX_GET_CLASS_NAME_STD_STR_WITH_TYPENAME ( TYPE)    std::string(qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get())

Definition at line 75 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_WITH_TYPENAME

#define QX_GET_CLASS_NAME_WITH_TYPENAME ( TYPE)    qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get()

Definition at line 72 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_XML_TAG

#define QX_GET_CLASS_NAME_XML_TAG ( TYPE)    qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get_xml_tag()

Definition at line 66 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_XML_TAG_STD_STR

#define QX_GET_CLASS_NAME_XML_TAG_STD_STR ( TYPE)    std::string(qx::trait::get_class_name< qx::trait::remove_attr< TYPE >::type >::get_xml_tag())

Definition at line 69 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_XML_TAG_STD_STR_WITH_TYPENAME

#define QX_GET_CLASS_NAME_XML_TAG_STD_STR_WITH_TYPENAME ( TYPE)    std::string(qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get_xml_tag())

Definition at line 81 of file get_class_name.h.

◆ QX_GET_CLASS_NAME_XML_TAG_WITH_TYPENAME

#define QX_GET_CLASS_NAME_XML_TAG_WITH_TYPENAME ( TYPE)    qx::trait::get_class_name< typename qx::trait::remove_attr< TYPE >::type >::get_xml_tag()

Definition at line 78 of file get_class_name.h.

◆ 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.
static const char * get()

Definition at line 142 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_INF

#define QX_REGISTER_CLASS_NAME_SEP_INF   "<"

Definition at line 52 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG

#define QX_REGISTER_CLASS_NAME_SEP_INF_XML_TAG   "-"

Definition at line 56 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_NXT

#define QX_REGISTER_CLASS_NAME_SEP_NXT   ", "

Definition at line 54 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG

#define QX_REGISTER_CLASS_NAME_SEP_NXT_XML_TAG   "_"

Definition at line 58 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_SUP

#define QX_REGISTER_CLASS_NAME_SEP_SUP   ">"

Definition at line 53 of file get_class_name.h.

◆ QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG

#define QX_REGISTER_CLASS_NAME_SEP_SUP_XML_TAG   "-"

Definition at line 57 of file get_class_name.h.

◆ 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.