31#ifndef DRAIN_TYPE_NAME
32#define DRAIN_TYPE_NAME
56 static const std::string & str();
67 static const std::string nameOLD;
74 const std::string name(
typeid(T).name());
92std::ostream & operator<<(std::ostream & ostr,
const TypeName<T> &t){
101#define DRAIN_TYPENAME_DEF(tname) template <> const std::string TypeName<tname>::nameOLD(#tname)
107#define DRAIN_TYPENAME_T(cname,T) template <class T> struct TypeName<cname<T> > {static const std::string & str(){static const std::string n=drain::StringBuilder<>(#cname, '<', drain::TypeName<T>::str(),'>'); return n;}}
108#define DRAIN_TYPENAME_T0(cname,T) template <class T> struct TypeName<cname<T> > {static const std::string & str(){static const std::string n=std::string(#cname)+'<'+drain::TypeName<T>::str()+'>'; return n;}}
115#define DRAIN_TYPENAME(tname) template <> inline const std::string & drain::TypeName<tname>::str(){static const std::string n(#tname); return n;};
116#define DRAIN_TYPENAME_t(tname) template <> inline const std::string & drain::TypeName<tname##_t>::str(){static const std::string n(#tname); return n;};
130DRAIN_TYPENAME_t(int8);
131DRAIN_TYPENAME_t(uint8);
132DRAIN_TYPENAME_t(int16);
133DRAIN_TYPENAME_t(uint16);
134DRAIN_TYPENAME_t(int32);
135DRAIN_TYPENAME_t(uint32);
136DRAIN_TYPENAME_t(int64);
137DRAIN_TYPENAME_t(uint64);
141DRAIN_TYPENAME(
float);
142DRAIN_TYPENAME(
double);
144DRAIN_TYPENAME(
char *);
145DRAIN_TYPENAME(
const char *);
146DRAIN_TYPENAME(std::string);
170DRAIN_TYPENAME_T0(std::initializer_list, T);
171DRAIN_TYPENAME_T0(std::vector, T);
230 typedef std::string value_t;
237 template <
class S,
class T>
Returns the basic type (integer, float, bool, string, void) as a string.
Definition TypeName.h:226
static T callback()
Definition TypeName.h:239
Definition DataSelector.cpp:1277
Default implementation.
Definition TypeName.h:54