mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 14:41:25 +00:00
Allow passing setting enums as naked int
This commit is contained in:
@@ -373,6 +373,13 @@ namespace ifcopenshell {
|
|||||||
template <std::size_t Index>
|
template <std::size_t Index>
|
||||||
void set_option_(const std::string& name, const value_variant_t& val) {
|
void set_option_(const std::string& name, const value_variant_t& val) {
|
||||||
if (std::tuple_element_t<Index, settings_t>::name == name) {
|
if (std::tuple_element_t<Index, settings_t>::name == name) {
|
||||||
|
if constexpr (std::is_enum_v<typename std::tuple_element_t<Index, settings_t>::base_type>) {
|
||||||
|
if (val.which() == 1) {
|
||||||
|
auto val_as_enum = (typename std::tuple_element_t<Index, settings_t>::base_type) boost::get<int>(val);
|
||||||
|
std::get<Index>(settings).value = val_as_enum;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
std::get<Index>(settings).value = boost::get<typename std::tuple_element_t<Index, settings_t>::base_type>(val);
|
std::get<Index>(settings).value = boost::get<typename std::tuple_element_t<Index, settings_t>::base_type>(val);
|
||||||
} else if constexpr (Index + 1 < std::tuple_size_v<settings_t>) {
|
} else if constexpr (Index + 1 < std::tuple_size_v<settings_t>) {
|
||||||
set_option_<Index + 1>(name, val);
|
set_option_<Index + 1>(name, val);
|
||||||
|
|||||||
Reference in New Issue
Block a user