From c431a66df3df4cff82bfa2d2b2c7b16895a7efd6 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Tue, 19 Aug 2014 16:40:09 +0200 Subject: 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(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"); +} -- cgit v1.2.3