diff options
-rw-r--r-- | host/include/uhd/CMakeLists.txt | 1 | ||||
-rw-r--r-- | host/include/uhd/exception.hpp | 6 | ||||
-rw-r--r-- | host/include/uhd/property.hpp | 6 | ||||
-rw-r--r-- | host/lib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | host/tests/property_test.cpp | 25 |
5 files changed, 35 insertions, 4 deletions
diff --git a/host/include/uhd/CMakeLists.txt b/host/include/uhd/CMakeLists.txt index c3c51279c..1ee3e69df 100644 --- a/host/include/uhd/CMakeLists.txt +++ b/host/include/uhd/CMakeLists.txt @@ -27,6 +27,7 @@ INSTALL(FILES device.hpp exception.hpp property.hpp + property_tree.hpp version.hpp wax.hpp DESTINATION ${INCLUDE_DIR}/uhd diff --git a/host/include/uhd/exception.hpp b/host/include/uhd/exception.hpp index 10cd8f501..c05861788 100644 --- a/host/include/uhd/exception.hpp +++ b/host/include/uhd/exception.hpp @@ -15,8 +15,8 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. // -#ifndef INCLUDED_UHD_UTILS_EXCEPTION_HPP -#define INCLUDED_UHD_UTILS_EXCEPTION_HPP +#ifndef INCLUDED_UHD_EXCEPTION_HPP +#define INCLUDED_UHD_EXCEPTION_HPP #include <uhd/config.hpp> #include <boost/current_function.hpp> @@ -163,4 +163,4 @@ namespace uhd{ } //namespace uhd -#endif /* INCLUDED_UHD_UTILS_EXCEPTION_HPP */ +#endif /* INCLUDED_UHD_EXCEPTION_HPP */ diff --git a/host/include/uhd/property.hpp b/host/include/uhd/property.hpp index 5b47f9482..e3b917334 100644 --- a/host/include/uhd/property.hpp +++ b/host/include/uhd/property.hpp @@ -25,7 +25,11 @@ namespace uhd{ -template <typename T> class property{ +/*! + * A templated property interface for holding a value + * and registering callbacks when that value changes. + */ +template <typename T> class UHD_API property{ public: typedef boost::function<void(const T &)> subscriber_type; typedef boost::function<T(const T &)> master_type; diff --git a/host/lib/CMakeLists.txt b/host/lib/CMakeLists.txt index ebb211566..60ddbce5b 100644 --- a/host/lib/CMakeLists.txt +++ b/host/lib/CMakeLists.txt @@ -89,6 +89,7 @@ SET_SOURCE_FILES_PROPERTIES( LIBUHD_APPEND_SOURCES( ${CMAKE_CURRENT_SOURCE_DIR}/device.cpp ${CMAKE_CURRENT_SOURCE_DIR}/exception.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/property_tree.cpp ${CMAKE_CURRENT_SOURCE_DIR}/version.cpp ${CMAKE_CURRENT_SOURCE_DIR}/wax.cpp ) diff --git a/host/tests/property_test.cpp b/host/tests/property_test.cpp index c5ef7f1c9..0cea20c8c 100644 --- a/host/tests/property_test.cpp +++ b/host/tests/property_test.cpp @@ -17,7 +17,9 @@ #include <boost/test/unit_test.hpp> #include <uhd/property.hpp> +#include <uhd/property_tree.hpp> #include <boost/bind.hpp> +#include <iostream> struct coercer_type{ int doit(int x){ @@ -73,3 +75,26 @@ BOOST_AUTO_TEST_CASE(test_prop_with_coercion){ BOOST_CHECK_EQUAL(prop.get(), 32); BOOST_CHECK_EQUAL(setter._x, 32); } + +BOOST_AUTO_TEST_CASE(test_prop_tree){ + uhd::property_tree::sptr tree = uhd::property_tree::make(); + + tree->create("/test/prop0", uhd::property<int>()); + tree->create("/test/prop1", uhd::property<int>()); + + BOOST_CHECK(tree->exists("/test")); + BOOST_CHECK(tree->exists("/test/prop0")); + BOOST_CHECK(tree->exists("/test/prop1")); + + tree->access<int>("/test/prop0").set(42); + tree->access<int>("/test/prop1").set(34); + + tree->remove("/test/prop0"); + BOOST_CHECK(not tree->exists("/test/prop0")); + BOOST_CHECK(tree->exists("/test/prop1")); + + tree->remove("/test"); + BOOST_CHECK(not tree->exists("/test/prop0")); + BOOST_CHECK(not tree->exists("/test/prop1")); + +} |