Range.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_RANGE_H
10#define SQUID_RANGE_H
11
12#include <iosfwd>
13#include <ostream>
14
15/* represents [start, end) */
16
17template <class C, class S = size_t>
18class Range
19{
20
21public:
22 Range ();
23 Range (C start_, C end_);
26 Range intersection (Range const &) const;
27 bool contains(C const &) const;
28 S size() const;
29};
30
31template <class C, class S>
32std::ostream& operator << (std::ostream &os, Range<C, S> const &aRange)
33{
34 os << "[" << aRange.start << "," << aRange.end << ")";
35 return os;
36}
37
38template<class C, class S>
39Range<C, S>::Range () : start(), end() {}
40
41template<class C, class S>
42Range<C, S>::Range (C start_, C end_) : start(start_), end(end_) {}
43
44template<class C, class S>
47{
48 Range<C, S> result (max(start, rhs.start), min(end, rhs.end));
49 return result;
50}
51
52template<class C, class S>
53bool
54Range<C, S>::contains(C const &value) const {
55 assert(start <= end);
56 return (start <= value && value <= end);
57}
58
59template<class C, class S>
60S
62{
63 return (S) (end > start ? end - start : 0);
64}
65
66#endif /* SQUID_RANGE_H */
67
std::ostream & operator<<(std::ostream &os, Range< C, S > const &aRange)
Definition: Range.h:32
#define assert(EX)
Definition: assert.h:17
Definition: Range.h:19
C start
Definition: Range.h:24
bool contains(C const &) const
Definition: Range.h:54
Range intersection(Range const &) const
Definition: Range.h:46
S size() const
Definition: Range.h:61
C end
Definition: Range.h:25
Range()
Definition: Range.h:39
A const & max(A const &lhs, A const &rhs)
A const & min(A const &lhs, A const &rhs)
static uint32 C
Definition: md4.c:43

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors