tuple_mapper<
...>
If T0
, T1
... are
any mapped types, then std::tuple<
T0
,
T1
...>
is a mapped type. It is statically
mapped: its mapper class is always tuple_mapper<
T0
,
T1
...>
.
In addition to mapping std::tuple<
T0
,
T1
...>
s to and from column formats, tuple_mapper<
T0
,
T1
...>
provides a get<
...>()
method, which acts as an analog of std::get<
...>()
as it applies to std::tuple<
T0
,
T1
...>
.
If tm
is an instance of tuple_mapper<
T0
,
T1
...>
, and I
is
an integer constant, then tm
.get<
I
>()
returns a const reference to the
mapper that maps the tuple's I
'th member, counting
from zero. If I
is out of range, that's a compile-time
error.
struct oscar { uint16_t year; std::tuple<movie, cinema, critic> bests; }; QUINCE_MAP_CLASS(oscar, (year)(bests)) extern table<oscar> oscars; const query<critic> best_critics = oscars.select(oscars->bests.get<2>());
When tuples are compared on the server side with the relational operators,
or sorted on the server side with order()
, then the order is lexicographic, with
the zeroth member most significant, followed by the first member, and so
on.
tuple_mapper
represents
data by delegating to each of the member mappers.
When it delegates to the i
'th
member mapper, it adds the numeral i
, in angle-brackets,
to all the column names that the i
'th
member mapper produces, so those names cannot clash with column names that
the other member mapppers produce.