diff options
author | msherbakov <msherbakov@yandex-team.ru> | 2022-02-10 16:49:17 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:17 +0300 |
commit | a0ffafe83b7d6229709a32fa942c71d672ac989c (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/ipmath/range_set.h | |
parent | c224a621661ddd69699f9476922eb316607ef57e (diff) | |
download | ydb-a0ffafe83b7d6229709a32fa942c71d672ac989c.tar.gz |
Restoring authorship annotation for <msherbakov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/ipmath/range_set.h')
-rw-r--r-- | library/cpp/ipmath/range_set.h | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/library/cpp/ipmath/range_set.h b/library/cpp/ipmath/range_set.h index 23a648fb86..d9e2451822 100644 --- a/library/cpp/ipmath/range_set.h +++ b/library/cpp/ipmath/range_set.h @@ -1,66 +1,66 @@ -#pragma once - -#include "ipmath.h" - -#include <util/generic/set.h> -#include <util/ysaveload.h> - - -/// @brief Maintains a disjoint set of added ranges. Allows for efficient membership queries -/// for an address in a set of IP ranges. -class TIpRangeSet { - struct TRangeLess { - bool operator()(const TIpAddressRange& lhs, const TIpAddressRange& rhs) const; - }; - - using TTree = TSet<TIpAddressRange, TRangeLess>; - -public: - using iterator = TTree::iterator; - using const_iterator = TTree::const_iterator; - using value_type = TTree::value_type; - using TIterator = TTree::iterator; - using TConstIterator = TTree::const_iterator; - - TIpRangeSet(); - ~TIpRangeSet(); - - void Add(TIpAddressRange range); - - template <typename TContainer> - void Add(TContainer&& addrs) { - using T = typename std::decay<TContainer>::type::value_type; - static_assert(std::is_convertible<T, TIpAddressRange>::value); - - for (auto&& addr : addrs) { - Add(addr); - } - } - - TIpAddressRange::TIpType Type() const; - - bool IsEmpty() const; - bool Contains(TIpv6Address addr) const; - TConstIterator Find(TIpv6Address addr) const; - - TConstIterator Begin() const { - return Ranges_.begin(); - } - - TConstIterator End() const { - return Ranges_.end(); - } - - TConstIterator begin() const { - return Begin(); - } - - TConstIterator end() const { - return End(); - } - - Y_SAVELOAD_DEFINE(Ranges_); - -private: - TTree Ranges_; -}; +#pragma once + +#include "ipmath.h" + +#include <util/generic/set.h> +#include <util/ysaveload.h> + + +/// @brief Maintains a disjoint set of added ranges. Allows for efficient membership queries +/// for an address in a set of IP ranges. +class TIpRangeSet { + struct TRangeLess { + bool operator()(const TIpAddressRange& lhs, const TIpAddressRange& rhs) const; + }; + + using TTree = TSet<TIpAddressRange, TRangeLess>; + +public: + using iterator = TTree::iterator; + using const_iterator = TTree::const_iterator; + using value_type = TTree::value_type; + using TIterator = TTree::iterator; + using TConstIterator = TTree::const_iterator; + + TIpRangeSet(); + ~TIpRangeSet(); + + void Add(TIpAddressRange range); + + template <typename TContainer> + void Add(TContainer&& addrs) { + using T = typename std::decay<TContainer>::type::value_type; + static_assert(std::is_convertible<T, TIpAddressRange>::value); + + for (auto&& addr : addrs) { + Add(addr); + } + } + + TIpAddressRange::TIpType Type() const; + + bool IsEmpty() const; + bool Contains(TIpv6Address addr) const; + TConstIterator Find(TIpv6Address addr) const; + + TConstIterator Begin() const { + return Ranges_.begin(); + } + + TConstIterator End() const { + return Ranges_.end(); + } + + TConstIterator begin() const { + return Begin(); + } + + TConstIterator end() const { + return End(); + } + + Y_SAVELOAD_DEFINE(Ranges_); + +private: + TTree Ranges_; +}; |