From 161a8e6a768679bde7054fef96dcbb936c866151 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 12 Nov 2019 22:27:49 +0300 Subject: Add add constructor and remove comparison for path_name_value class --- libbutl/path.ixx | 8 ++++---- libbutl/path.mxx | 29 +++++++++-------------------- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/libbutl/path.ixx b/libbutl/path.ixx index e7000ca..b91102a 100644 --- a/libbutl/path.ixx +++ b/libbutl/path.ixx @@ -707,14 +707,14 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. template inline basic_path_name_value

:: basic_path_name_value (basic_path_name_value&& p) - : basic_path_name_value (std::move (p.path_), std::move (p.name)) + : basic_path_name_value (std::move (p.path), std::move (p.name)) { } template inline basic_path_name_value

:: basic_path_name_value (const basic_path_name_value& p) - : basic_path_name_value (p.path_, p.name) + : basic_path_name_value (p.path, p.name) { } @@ -724,7 +724,7 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. { if (this != &p) { - path_ = std::move (p.path_); + path = std::move (p.path); this->name = std::move (p.name); } @@ -737,7 +737,7 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. { if (this != &p) { - path_ = p.path_; + path = p.path; this->name = p.name; } diff --git a/libbutl/path.mxx b/libbutl/path.mxx index 2374fb5..4ed6989 100644 --- a/libbutl/path.mxx +++ b/libbutl/path.mxx @@ -1382,35 +1382,24 @@ LIBBUTL_MODEXPORT namespace butl using path_type = typename base::path_type; using string_type = typename base::string_type; + path_type path; + explicit basic_path_name_value (path_type p, optional n = nullopt) - : base (&path_, std::move (n)), path_ (std::move (p)) {} - - int - compare (const basic_path_name_value& x) const - { - if (int r = path_.compare (x.path_)) - return r; + : base (&path, std::move (n)), path (std::move (p)) {} - return this->name < x.name ? -1 : this->name > x.name ? 1 : 0; - } + // Note that a NULL path is converted to empty path. + // + explicit + basic_path_name_value (const basic_path_name

& v) + : base (&path, v.name), + path (v.path != nullptr ? *v.path : path_type ()) {} basic_path_name_value (basic_path_name_value&&); basic_path_name_value (const basic_path_name_value&); basic_path_name_value& operator= (basic_path_name_value&&); basic_path_name_value& operator= (const basic_path_name_value&); - - private: - P path_; }; - - template - inline bool - operator< (const basic_path_name_value

& x, - const basic_path_name_value

& y) - { - return x.compare (y) < 0; - } } LIBBUTL_MODEXPORT namespace std -- cgit v1.1