Skip to content

Commit

Permalink
Merge pull request #578 from Type1J/develop_feature_first_second
Browse files Browse the repository at this point in the history
Adding first and second properties to iteration_proxy_internal
  • Loading branch information
nlohmann authored May 10, 2017
2 parents 15ef9b8 + 6a656ed commit 5beea35
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion src/json.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7877,6 +7877,44 @@ class basic_json
class iteration_proxy
{
private:
/// helper class for first "property"
template<typename ProxyType>
class iterator_key_property
{
private:
/// the reference to the proxy
ProxyType& proxy;

public:
explicit iterator_key_property(ProxyType& proxyRef) noexcept
: proxy(proxyRef) {}

/// conversion operator (calls key())
operator typename basic_json::string_t() const
{
return proxy.key();
}
};

/// helper class for second "property"
template<typename ProxyType>
class iterator_value_property
{
private:
/// the reference to the proxy
ProxyType& proxy;

public:
explicit iterator_value_property(ProxyType& proxyRef) noexcept
: proxy(proxyRef) {}

/// conversion operator (calls value())
operator typename IteratorType::reference() const
{
return proxy.value();
}
};

/// helper class for iteration
class iteration_proxy_internal
{
Expand All @@ -7887,8 +7925,11 @@ class basic_json
size_t array_index = 0;

public:
iterator_key_property<iteration_proxy_internal> first;
iterator_value_property<iteration_proxy_internal> second;

explicit iteration_proxy_internal(IteratorType it) noexcept
: anchor(it)
: anchor(it), first(*this), second(*this)
{}

/// dereference operator (needed for range-based for)
Expand Down

0 comments on commit 5beea35

Please sign in to comment.