1#ifndef COVISE_TOKEN_BUFFER_UTIL_H
2#define COVISE_TOKEN_BUFFER_UTIL_H
21template<
size_t Pos,
typename T,
typename U,
typename...Args>
25 return Finder<Pos + 1, T, Args...>{}();
29template<
size_t Pos,
typename T,
typename...Args>
37template<
typename T,
typename...Args>
38const T&
get(
const std::tuple<Args...>&
t) {
39 constexpr size_t pos =
Finder <
size_t{}, T, Args... > {}();
40 return std::get<pos>(
t);
43template<
typename T,
typename...Args>
44T&
get(std::tuple<Args...>&
t) {
45 constexpr size_t pos =
Finder <
size_t{}, T, Args... > {}();
46 return std::get<pos>(
t);
53template<
typename STDTuple>
58template<
typename STDTuple,
typename T,
typename...Args>
60 static_assert(detail::isTBClass<T>(),
"type is not created with CREATE_TB_CLASS");
61 T&
val = detail::get<T>(tuple);
66template<
typename Stream,
size_t I = 0,
typename... Tp>
67inline typename std::enable_if<I ==
sizeof...(Tp),
void>
::type
68print(Stream&
s,
const std::tuple<Tp...>&
t)
71template<
typename Stream, std::size_t I = 0,
typename... Tp>
72inline typename std::enable_if < I <
sizeof...(Tp),
void>
::type
73 print(Stream&
s,
const std::tuple<Tp...>&
t)
76 print<Stream, I + 1, Tp...>(
s,
t);
83template<
typename...Args>
87 const T&
get()
const {
88 return detail::get<T>(
value);
94template<
typename...Args>
101template<
typename Stream,
typename...Args>
108#define CREATE_TB_CLASS(type, name)\
111 operator type()const {return value;}\
113 template<typename Stream>\
114 Stream &operator<<(Stream &s, const name& t){\
115 s << #name << ": " << t.value << ", ";\
120 constexpr bool isTBClass<name>() { return true; }\
GLsizei const GLfloat * value
Definition: khronos-glext.h:6760
GLdouble GLdouble t
Definition: khronos-glext.h:6449
GLuint GLfloat * val
Definition: khronos-glext.h:7898
GLdouble s
Definition: khronos-glext.h:6441
GLenum type
Definition: khronos-glext.h:6279
list of all chemical elements
Definition: coConfig.h:27
QTextStream & operator<<(QTextStream &out, const coConfigEntryStringList list)
Definition: coConfigEntryString.cpp:159
TbReadVal< Args... > readTokenBuffer(covise::TokenBuffer &tb)
Definition: tokenbuffer_util.h:95
std::enable_if< I==sizeof...(Tp), void >::type print(Stream &s, const std::tuple< Tp... > &t)
Definition: tokenbuffer_util.h:68
void readTokenBufferSingle(STDTuple &tuple, covise::TokenBuffer &tb)
Definition: tokenbuffer_util.h:54
T get(TokenBuffer &tb)
Definition: tokenbuffer_util.h:15
constexpr bool isTBClass()
Definition: tokenbuffer_util.h:51
Definition: tokenbuffer.h:79
Definition: tokenbuffer_util.h:23
constexpr size_t operator()() const
Definition: tokenbuffer_util.h:24
constexpr size_t operator()() const
Definition: tokenbuffer_util.h:32
Definition: tokenbuffer_util.h:84
const T & get() const
Definition: tokenbuffer_util.h:87
std::tuple< Args... > value
Definition: tokenbuffer_util.h:85