RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
iterator_range.h
Go to the documentation of this file.
1
/*
2
RawSpeed - RAW file decoder.
3
4
Copyright (C) 2022 Roman Lebedev
5
6
This library is free software; you can redistribute it and/or
7
modify it under the terms of the GNU Lesser General Public
8
License as published by the Free Software Foundation; either
9
version 2 of the License, or (at your option) any later version.
10
11
This library is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
Lesser General Public License for more details.
15
16
You should have received a copy of the GNU Lesser General Public
17
License along with this library; if not, write to the Free Software
18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#pragma once
22
23
#include <utility>
24
25
namespace
rawspeed
{
26
27
template
<
typename
Iter>
class
iterator_range
final {
28
Iter
begin_iterator
;
29
Iter
end_iterator
;
30
31
public
:
32
iterator_range
(Iter begin_iterator_, Iter end_iterator_)
33
:
begin_iterator
(std::move(begin_iterator_)),
34
end_iterator
(std::move(end_iterator_)) {}
35
36
[[nodiscard]] Iter
begin
()
const
{
return
begin_iterator
; }
37
[[nodiscard]] Iter
end
()
const
{
return
end_iterator
; }
38
[[nodiscard]]
bool
empty
()
const
{
return
begin_iterator
==
end_iterator
; }
39
};
40
41
template
<
class
T>
iterator_range<T>
make_range
(
T
x
,
T
y
) {
42
return
iterator_range<T>
(std::move(
x
), std::move(
y
));
43
}
44
45
template
<
typename
T>
iterator_range<T>
make_range
(std::pair<T, T> p) {
46
return
iterator_range<T>
(std::move(p.first), std::move(p.second));
47
}
48
49
}
// namespace rawspeed
y
dim y
Definition
Common.cpp:51
x
dim x
Definition
Common.cpp:50
rawspeed::iterator_range
Definition
iterator_range.h:27
rawspeed::iterator_range::iterator_range
iterator_range(Iter begin_iterator_, Iter end_iterator_)
Definition
iterator_range.h:32
rawspeed::iterator_range::begin_iterator
Iter begin_iterator
Definition
iterator_range.h:28
rawspeed::iterator_range::empty
bool empty() const
Definition
iterator_range.h:38
rawspeed::iterator_range::end
Iter end() const
Definition
iterator_range.h:37
rawspeed::iterator_range::begin
Iter begin() const
Definition
iterator_range.h:36
rawspeed::iterator_range::end_iterator
Iter end_iterator
Definition
iterator_range.h:29
rawspeed
Definition
CoalescingOutputIteratorBenchmark.cpp:35
rawspeed::T
throw T(buf.data())
rawspeed::make_range
iterator_range< T > make_range(T x, T y)
Definition
iterator_range.h:41
librawspeed
adt
iterator_range.h
Generated by
1.15.0