// Copyright Takatoshi Kondo 2020 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #if !defined(MQTT_BROKER_PROPERTY_UTIL_HPP) #define MQTT_BROKER_PROPERTY_UTIL_HPP #include #include #include #include #include MQTT_BROKER_NS_BEGIN template inline optional get_property(v5::properties const& props) { optional result; auto visitor = make_lambda_visitor( [&result](T const& t) { result = t; }, [](auto const&) { } ); for (auto const& p : props) { MQTT_NS::visit(visitor, p); } return result; } template inline void set_property(v5::properties& props, T&& v) { auto visitor = make_lambda_visitor( [&v](T& t) mutable { t = std::forward(v); }, [](auto&) { } ); for (auto& p : props) { MQTT_NS::visit(visitor, p); } } MQTT_BROKER_NS_END #endif // MQTT_BROKER_PROPERTY_UTIL_HPP