привет!
хочу избавиться от макроса
YAS_OBJECT().
этот макрос из этого:
YAS_OBJECT("object name", i1, d2), генерит это:
int main() {
int i1, d2;
auto o = ::yas::make_object< // make_object - https://github.com/niXman/yas/blob/master/include/yas/object.hpp#L154
typename ::yas::detail::mergesort< // mergesort - https://github.com/niXman/yas/blob/master/include/yas/detail/tools/ctsort.hpp#L153
::yas::detail::predic_less,
std::tuple<
std::pair<
std::integral_constant<std::uint32_t, ::yas::detail::fnv1a("i1")>, // считаем хеш ключей в компайлтайм.
std::integral_constant<std::uint8_t, 0>
>,
std::pair<
std::integral_constant<std::uint32_t, ::yas::detail::fnv1a("d2")>,
std::integral_constant<std::uint8_t, 1>
>
>
>::type
> // параметры закончились.
( // аргументы.
"object name",
::yas::make_val("i1", i1), // make_val - https://github.com/niXman/yas/blob/master/include/yas/object.hpp#L96
::yas::make_val("d2", d2)
);
}
yas::make_object<>() — шаблонная функция, в качестве параметров принимает набор пар, где
first — хеш ключа, а
second — порядковый номер. этот набор пар сортируется в компайлтайм при помощи
yas::detail::mergesort(ссылка в коде). сортировка нужна чтоб в компайлтайм инициализировать
мапу, которая используется для сопоставления ключей значениям в json.
yas::make_object<>() возвращает тип
yas::object<> —
https://github.com/niXman/yas/blob/master/include/yas/object.hpp#L112
вобщем, хочется как-то избавиться от макроса и при этом получить какой-то человеческий синтаксис, что-то типа:
yas::object o = {
"object name",
{"i1", i1},
{"d2", d2}
};
какие идеи?
спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)