31#ifndef DRAIN_TYPE_NAME
32#define DRAIN_TYPE_NAME
59 static const std::string & str();
70 static const std::string nameOLD;
77 const std::string name(
typeid(T).name());
95std::ostream & operator<<(std::ostream & ostr,
const TypeName<T> &t){
104#define DRAIN_TYPENAME_DEF(tname) template <> const std::string TypeName<tname>::nameOLD(#tname)
110#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;}}
111#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;}}
118#define DRAIN_TYPENAME(tname) template <> inline const std::string & drain::TypeName<tname>::str(){static const std::string n(#tname); return n;};
119#define DRAIN_TYPENAME_t(tname) template <> inline const std::string & drain::TypeName<tname##_t>::str(){static const std::string n(#tname); return n;};
133DRAIN_TYPENAME_t(int8);
134DRAIN_TYPENAME_t(uint8);
135DRAIN_TYPENAME_t(int16);
136DRAIN_TYPENAME_t(uint16);
137DRAIN_TYPENAME_t(int32);
138DRAIN_TYPENAME_t(uint32);
139DRAIN_TYPENAME_t(int64);
140DRAIN_TYPENAME_t(uint64);
144DRAIN_TYPENAME(
float);
145DRAIN_TYPENAME(
double);
147DRAIN_TYPENAME(
char *);
148DRAIN_TYPENAME(
const char *);
149DRAIN_TYPENAME(std::string);
173DRAIN_TYPENAME_T0(std::initializer_list, T);
174DRAIN_TYPENAME_T0(std::vector, T);
233 typedef std::string value_t;
240 template <
class S,
class T>
Returns the basic type (integer, float, bool, string, void) as a string.
Definition TypeName.h:229
static T callback()
Definition TypeName.h:242
Definition DataSelector.cpp:1277
Default implementation.
Definition TypeName.h:57