From 42205f27fc820ddc64616d55c04e2ffde1948043 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 22 May 2020 01:54:20 +0100 Subject: refactor(3p/nix/libexpr): Use absl::btree_map::iterator type Instead of using a custom Args* iterator, use the one belonging to the map type directly. --- third_party/nix/src/libexpr/attr-path.cc | 2 +- third_party/nix/src/libexpr/attr-set.cc | 11 ++++++++--- third_party/nix/src/libexpr/attr-set.hh | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/third_party/nix/src/libexpr/attr-path.cc b/third_party/nix/src/libexpr/attr-path.cc index 3a467504aa63..1815b5e510d3 100644 --- a/third_party/nix/src/libexpr/attr-path.cc +++ b/third_party/nix/src/libexpr/attr-path.cc @@ -81,7 +81,7 @@ Value* findAlongAttrPath(EvalState& state, const std::string& attrPath, format("attribute '%1%' in selection path '%2%' not found") % attr % attrPath); } - v = &*a->value; + v = &*(a->second).value; } else if (apType == apIndex) { diff --git a/third_party/nix/src/libexpr/attr-set.cc b/third_party/nix/src/libexpr/attr-set.cc index e0fac9234b14..2df6bc9a2155 100644 --- a/third_party/nix/src/libexpr/attr-set.cc +++ b/third_party/nix/src/libexpr/attr-set.cc @@ -31,12 +31,17 @@ std::vector Bindings::lexicographicOrder() { } Bindings::iterator Bindings::find(const Symbol& name) { - return &attributes_[name]; + return attributes_.find(name); } -Bindings::iterator Bindings::begin() { return &(attributes_.begin()->second); } +Bindings::iterator Bindings::begin() { + return attributes_.begin(); +} + +Bindings::iterator Bindings::end() { + return attributes_.end(); +} -Bindings::iterator Bindings::end() { return &(attributes_.end()->second); } void Bindings::merge(Bindings* other) { // We want the values from the other attribute set to take // precedence, but .merge() works the other way around. diff --git a/third_party/nix/src/libexpr/attr-set.hh b/third_party/nix/src/libexpr/attr-set.hh index 39af7c482eab..4ae908964cd1 100644 --- a/third_party/nix/src/libexpr/attr-set.hh +++ b/third_party/nix/src/libexpr/attr-set.hh @@ -31,7 +31,7 @@ inline bool operator==(const Attr& lhs, const Attr& rhs) { class Bindings { public: - typedef Attr* iterator; // TODO: type, and also 'using'? + typedef absl::btree_map::iterator iterator; // Return the number of contained elements. size_t size(); @@ -71,4 +71,5 @@ class Bindings { private: absl::btree_map attributes_; }; + } // namespace nix -- cgit 1.4.1