constexpr size_t logger_config_get_index(const LogGroup group, const LogLevel level) {
return ((static_cast<size_t>(level)) < static_cast<size_t>(LogLevel::_count))?
((static_cast<size_t>(group)) < static_cast<size_t>(LogGroup::_count))?
((static_cast<size_t>(group) * static_cast<size_t>(LogLevel::_count) + static_cast<size_t>(level)) < LoggerConfigStorageSize)?
(static_cast<size_t>(group) * static_cast<size_t>(LogLevel::_count) + static_cast<size_t>(level))
: (throw std::logic_error("shouldnt happend"))
: (throw std::logic_error("group >= LogGroupSize, u must increase LogGroupSize to fit all LogGroup's value options"))
: (throw std::logic_error("level >= LogLevelSize, u must increase LogLevelSize to fit all LogLevel's value options"));
}
template<size_t N>
constexpr bool __make_logger_config_get_value() {
return false;
}
template<size_t N,
typename __1>
constexpr bool __make_logger_config_get_value(__1 const &_1) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__6 const &_7) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7,
typename __8>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__7 const &_7,
__8 const &_8) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: (logger_config_get_index(_8.group, _8.level) == N)?
_8.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7,
typename __8,
typename __9>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__7 const &_7,
__8 const &_8,
__9 const &_9) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: (logger_config_get_index(_8.group, _8.level) == N)?
_8.on
: (logger_config_get_index(_9.group, _9.level) == N)?
_9.on
: __make_logger_config_get_value<N>();
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7,
typename __8,
typename __9,
typename __10,
typename ...Tail>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__7 const &_7,
__8 const &_8,
__9 const &_9,
__10 const &_10,
Tail const &... tail) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: (logger_config_get_index(_8.group, _8.level) == N)?
_8.on
: (logger_config_get_index(_9.group, _9.level) == N)?
_9.on
: (logger_config_get_index(_10.group, _10.level) == N)?
_10.on
: __make_logger_config_get_value<N>(tail...);
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7,
typename __8,
typename __9,
typename __10,
typename __11,
typename __12,
typename __13,
typename __14,
typename __15,
typename ...Tail>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__7 const &_7,
__8 const &_8,
__9 const &_9,
__10 const &_10,
__11 const &_11,
__12 const &_12,
__13 const &_13,
__14 const &_14,
__15 const &_15,
Tail const &... tail) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: (logger_config_get_index(_8.group, _8.level) == N)?
_8.on
: (logger_config_get_index(_9.group, _9.level) == N)?
_9.on
: (logger_config_get_index(_10.group, _10.level) == N)?
_10.on
: (logger_config_get_index(_11.group, _11.level) == N)?
_11.on
: (logger_config_get_index(_12.group, _12.level) == N)?
_12.on
: (logger_config_get_index(_13.group, _13.level) == N)?
_13.on
: (logger_config_get_index(_14.group, _14.level) == N)?
_14.on
: (logger_config_get_index(_15.group, _15.level) == N)?
_15.on
: __make_logger_config_get_value<N>(tail...);
}
template<size_t N,
typename __1,
typename __2,
typename __3,
typename __4,
typename __5,
typename __6,
typename __7,
typename __8,
typename __9,
typename __10,
typename __11,
typename __12,
typename __13,
typename __14,
typename __15,
typename __16,
typename __17,
typename __18,
typename __19,
typename __20,
typename ...Tail>
constexpr bool __make_logger_config_get_value(__1 const &_1,
__2 const &_2,
__3 const &_3,
__4 const &_4,
__5 const &_5,
__6 const &_6,
__7 const &_7,
__8 const &_8,
__9 const &_9,
__10 const &_10,
__11 const &_11,
__12 const &_12,
__13 const &_13,
__14 const &_14,
__15 const &_15,
__16 const &_16,
__17 const &_17,
__18 const &_18,
__19 const &_19,
__20 const &_20,
Tail const &... tail) {
return (logger_config_get_index(_1.group, _1.level) == N)?
_1.on
: (logger_config_get_index(_2.group, _2.level) == N)?
_2.on
: (logger_config_get_index(_3.group, _3.level) == N)?
_3.on
: (logger_config_get_index(_4.group, _4.level) == N)?
_4.on
: (logger_config_get_index(_5.group, _5.level) == N)?
_5.on
: (logger_config_get_index(_6.group, _6.level) == N)?
_6.on
: (logger_config_get_index(_7.group, _7.level) == N)?
_7.on
: (logger_config_get_index(_8.group, _8.level) == N)?
_8.on
: (logger_config_get_index(_9.group, _9.level) == N)?
_9.on
: (logger_config_get_index(_10.group, _10.level) == N)?
_10.on
: (logger_config_get_index(_11.group, _11.level) == N)?
_11.on
: (logger_config_get_index(_12.group, _12.level) == N)?
_12.on
: (logger_config_get_index(_13.group, _13.level) == N)?
_13.on
: (logger_config_get_index(_14.group, _14.level) == N)?
_14.on
: (logger_config_get_index(_15.group, _15.level) == N)?
_15.on
: (logger_config_get_index(_16.group, _16.level) == N)?
_16.on
: (logger_config_get_index(_17.group, _17.level) == N)?
_17.on
: (logger_config_get_index(_18.group, _18.level) == N)?
_18.on
: (logger_config_get_index(_19.group, _19.level) == N)?
_19.on
: (logger_config_get_index(_20.group, _20.level) == N)?
_20.on
: __make_logger_config_get_value<N>(tail...);
}
template<size_t ...N, typename ...Args>
constexpr LoggerConfigStorage __make_logger_config(index_sequence<N...> &&, Args &&... args) {
return { __make_logger_config_get_value<N>(args...)... };
}
template<typename ...Args>
constexpr LoggerConfigStorage make_default_logger_config(Args &&... args) {
return __make_logger_config(make_index_sequence<LoggerConfigStorageSize>{}, std::forward<Args>(args)...);
}