summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2014-08-19 16:40:09 +0200
committerMartin Braun <martin.braun@ettus.com>2014-09-23 16:02:14 -0700
commitc431a66df3df4cff82bfa2d2b2c7b16895a7efd6 (patch)
treede7fc65147c688b3b4b18de4f787e3dca897b2ce
parent4547d1c74a6c875057f23f8ea77033b9cd191539 (diff)
downloaduhd-c431a66df3df4cff82bfa2d2b2c7b16895a7efd6.tar.gz
uhd-c431a66df3df4cff82bfa2d2b2c7b16895a7efd6.tar.bz2
uhd-c431a66df3df4cff82bfa2d2b2c7b16895a7efd6.zip
uhd: Added an operator/ for (fs_path, size_t)
This is useful when constructing property tree paths. With this path, the following code would be valid: size_t mb_index = 0; fs_path mb_root = "/mboards"; mb_root = mb_root / mb_index; This is a shortcut for the (in UHD very common) mb_root = mb_root / boost::lexical_cast<std::string(mb_index);
-rw-r--r--host/include/uhd/property_tree.hpp1
-rw-r--r--host/lib/property_tree.cpp6
-rw-r--r--host/tests/property_test.cpp21
3 files changed, 28 insertions, 0 deletions
diff --git a/host/include/uhd/property_tree.hpp b/host/include/uhd/property_tree.hpp
index f889ba235..3c24de7e6 100644
--- a/host/include/uhd/property_tree.hpp
+++ b/host/include/uhd/property_tree.hpp
@@ -113,6 +113,7 @@ struct fs_path : std::string{
};
UHD_API fs_path operator/(const fs_path &, const fs_path &);
+UHD_API fs_path operator/(const fs_path &, size_t);
/*!
* The property tree provides a file system structure for accessing properties.
diff --git a/host/lib/property_tree.cpp b/host/lib/property_tree.cpp
index 50e82a6ba..5666e2639 100644
--- a/host/lib/property_tree.cpp
+++ b/host/lib/property_tree.cpp
@@ -65,6 +65,12 @@ fs_path uhd::operator/(const fs_path &lhs, const fs_path &rhs){
return fs_path(lhs + "/" + rhs);
}
+fs_path uhd::operator/(const fs_path &lhs, size_t rhs)
+{
+ fs_path rhs_str = boost::lexical_cast<std::string>(rhs);
+ return lhs / rhs_str;
+}
+
/***********************************************************************
* Property tree implementation
**********************************************************************/
diff --git a/host/tests/property_test.cpp b/host/tests/property_test.cpp
index 04d3a831c..00bb3c022 100644
--- a/host/tests/property_test.cpp
+++ b/host/tests/property_test.cpp
@@ -173,3 +173,24 @@ BOOST_AUTO_TEST_CASE(test_prop_subtree){
BOOST_CHECK_EQUAL_COLLECTIONS(tree_dirs2.begin(), tree_dirs2.end(), subtree2_dirs.begin(), subtree2_dirs.end());
}
+
+
+BOOST_AUTO_TEST_CASE(test_prop_operators)
+{
+ uhd::fs_path path1 = "/root/";
+ path1 = path1 / "leaf";
+ BOOST_CHECK_EQUAL(path1, "/root/leaf");
+
+ uhd::fs_path path2 = "/root";
+ path2 = path2 / "leaf";
+ BOOST_CHECK_EQUAL(path2, "/root/leaf");
+
+ uhd::fs_path path3 = "/root/";
+ path3 = path3 / "/leaf/";
+ BOOST_CHECK_EQUAL(path3, "/root/leaf/");
+
+ uhd::fs_path path4 = "/root/";
+ size_t x = 2;
+ path4 = path4 / x;
+ BOOST_CHECK_EQUAL(path4, "/root/2");
+}