| #pragma once | 
 |  | 
 | #include "types.hpp" | 
 |  | 
 | namespace phosphor | 
 | { | 
 | namespace fan | 
 | { | 
 | namespace monitor | 
 | { | 
 |  | 
 | /** | 
 |  * @brief Create a condition function object | 
 |  * | 
 |  * @param[in] condition - The condition being created | 
 |  * | 
 |  * @return - The created condition function object | 
 |  */ | 
 | template <typename T> | 
 | auto make_condition(T&& condition) | 
 | { | 
 |     return Condition(std::forward<T>(condition)); | 
 | } | 
 |  | 
 | namespace condition | 
 | { | 
 |  | 
 | /** | 
 |  * @brief A condition that checks all properties match the given values | 
 |  * @details Checks each property entry against its given value where all | 
 |  * property values must match their given value for the condition to pass | 
 |  * | 
 |  * @param[in] propStates - List of property identifiers and their value | 
 |  * | 
 |  * @return Condition lambda function | 
 |  *     A Condition function that checks all properties match | 
 |  */ | 
 | Condition propertiesMatch(std::vector<PropertyState>&& propStates); | 
 |  | 
 | } // namespace condition | 
 | } // namespace monitor | 
 | } // namespace fan | 
 | } // namespace phosphor |