Bindings::get(): Add convenience method

This allows writing attribute lookups as

    if (auto name = value.attrs->get(state.sName))
      ...
This commit is contained in:
Eelco Dolstra 2018-11-26 19:57:20 +01:00
parent c02da99757
commit f216c76c56
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
2 changed files with 10 additions and 1 deletions

View file

@ -62,7 +62,7 @@ CXXFLAGS=
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
AX_CXX_COMPILE_STDCXX_14
AX_CXX_COMPILE_STDCXX_17
# Use 64-bit file system calls so that we can support files > 2 GiB.

View file

@ -4,6 +4,7 @@
#include "symbol-table.hh"
#include <algorithm>
#include <optional>
namespace nix {
@ -63,6 +64,14 @@ public:
return end();
}
std::optional<Attr *> get(const Symbol & name)
{
Attr key(name, 0);
iterator i = std::lower_bound(begin(), end(), key);
if (i != end() && i->name == name) return &*i;
return {};
}
iterator begin() { return &attrs[0]; }
iterator end() { return &attrs[size_]; }