refactor iterator range utility class

This commit is contained in:
Dennis Luxen 2015-02-20 11:59:03 +01:00
parent e9e12b88f8
commit 8adab95973

View File

@ -1,6 +1,6 @@
/* /*
Copyright (c) 2013, Project OSRM contributors Copyright (c) 2015, Project OSRM contributors
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
@ -25,17 +25,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef RANGE_HPP_ #ifndef ITERATOR_RANGE_HPP
#define RANGE_HPP_ #define ITERATOR_RANGE_HPP
namespace osrm namespace osrm
{ {
namespace util template <typename Iterator> class iter_range
{
template <typename Iterator> class Range
{ {
public: public:
Range(Iterator begin, Iterator end) : begin_(begin), end_(end) {} iter_range(Iterator begin, Iterator end) : begin_(begin), end_(end) {}
Iterator begin() const { return begin_; } Iterator begin() const { return begin_; }
Iterator end() const { return end_; } Iterator end() const { return end_; }
@ -48,25 +46,25 @@ template <typename Iterator> class Range
// Convenience functions for template parameter inference, // Convenience functions for template parameter inference,
// akin to std::make_pair. // akin to std::make_pair.
template <typename Iterator> Range<Iterator> range(Iterator begin, Iterator end) template <typename Iterator> iter_range<Iterator> integer_range(Iterator begin, Iterator end)
{ {
return Range<Iterator>(begin, end); return iter_range<Iterator>(begin, end);
} }
template <typename Reversable> template <typename Reversable>
Range<typename Reversable::reverse_iterator> reverse(Reversable *reversable) iter_range<typename Reversable::reverse_iterator> reverse(Reversable *reversable)
{ {
return Range<typename Reversable::reverse_iterator>(reversable->rbegin(), reversable->rend()); return iter_range<typename Reversable::reverse_iterator>(reversable->rbegin(),
reversable->rend());
} }
template <typename ConstReversable> template <typename ConstReversable>
Range<typename ConstReversable::const_reverse_iterator> iter_range<typename ConstReversable::const_reverse_iterator>
const_reverse(const ConstReversable *const_reversable) const_reverse(const ConstReversable *const_reversable)
{ {
return Range<typename ConstReversable::const_reverse_iterator>(const_reversable->crbegin(), return iter_range<typename ConstReversable::const_reverse_iterator>(const_reversable->crbegin(),
const_reversable->crend()); const_reversable->crend());
}
} }
} }
#endif // RANGE_HPP_ #endif // ITERATOR_RANGE_HPP