Repository: mesos Updated Branches: refs/heads/master 1794d4e0f -> 8c3748abd
MESOS-1733 Variadic Path Join This change takes an un-complicated/naive route (no trimming of values etc) at making path::join(...) variadic mainly in order to preserve the earlier over-loaded join functionality. Review: https://reviews.apache.org/r/35179 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8c3748ab Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8c3748ab Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8c3748ab Branch: refs/heads/master Commit: 8c3748abd41650e1cf9db281eb6f85e6b9558eb9 Parents: 1794d4e Author: Anand Mazumdar <[email protected]> Authored: Thu Jun 18 00:53:24 2015 +0000 Committer: Adam B <[email protected]> Committed: Fri Jun 19 16:55:47 2015 +0000 ---------------------------------------------------------------------- .../3rdparty/stout/include/stout/path.hpp | 88 ++------------------ .../3rdparty/stout/tests/path_tests.cpp | 4 + 2 files changed, 11 insertions(+), 81 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/8c3748ab/3rdparty/libprocess/3rdparty/stout/include/stout/path.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/path.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/path.hpp index d4df650..59595c9 100644 --- a/3rdparty/libprocess/3rdparty/stout/include/stout/path.hpp +++ b/3rdparty/libprocess/3rdparty/stout/include/stout/path.hpp @@ -15,6 +15,7 @@ #define __STOUT_PATH_HPP__ #include <string> +#include <utility> #include <stout/strings.hpp> @@ -42,96 +43,21 @@ inline std::ostream& operator << ( namespace path { +// Base case. inline std::string join(const std::string& path1, const std::string& path2) { - return - strings::remove(path1, "/", strings::SUFFIX) + "/" + - strings::remove(path2, "/", strings::PREFIX); + return strings::remove(path1, "/", strings::SUFFIX) + "/" + + strings::remove(path2, "/", strings::PREFIX); } +template <typename... Paths> inline std::string join( const std::string& path1, const std::string& path2, - const std::string& path3) + Paths&&... paths) { - return join(path1, join(path2, path3)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4) -{ - return join(path1, join(path2, path3, path4)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4, - const std::string& path5) -{ - return join(path1, join(path2, path3, path4, path5)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4, - const std::string& path5, - const std::string& path6) -{ - return join(path1, join(path2, path3, path4, path5, path6)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4, - const std::string& path5, - const std::string& path6, - const std::string& path7) -{ - return join(path1, join(path2, path3, path4, path5, path6, path7)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4, - const std::string& path5, - const std::string& path6, - const std::string& path7, - const std::string& path8) -{ - return join(path1, join(path2, path3, path4, path5, path6, path7, path8)); -} - - -inline std::string join( - const std::string& path1, - const std::string& path2, - const std::string& path3, - const std::string& path4, - const std::string& path5, - const std::string& path6, - const std::string& path7, - const std::string& path8, - const std::string& path9) -{ - return join(path1, join( - path2, path3, path4, path5, path6, path7, path8, path9)); + return join(path1, join(path2, std::forward<Paths>(paths)...)); } http://git-wip-us.apache.org/repos/asf/mesos/blob/8c3748ab/3rdparty/libprocess/3rdparty/stout/tests/path_tests.cpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/stout/tests/path_tests.cpp b/3rdparty/libprocess/3rdparty/stout/tests/path_tests.cpp index cf35412..7dd2664 100644 --- a/3rdparty/libprocess/3rdparty/stout/tests/path_tests.cpp +++ b/3rdparty/libprocess/3rdparty/stout/tests/path_tests.cpp @@ -36,6 +36,10 @@ TEST(PathTest, Join) // Interesting corner cases around being the first, middle, last. EXPECT_EQ("/asdf", path::join("/", "asdf")); EXPECT_EQ("/", path::join("", "/", "")); + EXPECT_EQ("ab/", path::join("ab/", "", "/")); + EXPECT_EQ("/ab", path::join("/", "/", "ab")); + EXPECT_EQ("ab/", path::join("ab", "/", "/")); + EXPECT_EQ("/ab", path::join("/", "", "/ab")); // Check trailing and leading slashes get cleaned up. EXPECT_EQ("a/b/c/", path::join("a/", "b/", "c/"));
