Static Value-Flow Analysis
Loading...
Searching...
No Matches
svf
include
Util
iterator_range.h
Go to the documentation of this file.
1
//===- iter_range.h - A range adaptor for iterators ---------*- C++ -*-===//
2
//
3
// From the LLVM Project with some modifications, under the Apache License v2.0
4
// with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
16
//===----------------------------------------------------------------------===//
17
18
#ifndef UTIL_ITERATOR_RANGE_H
19
#define UTIL_ITERATOR_RANGE_H
20
21
#include <utility>
22
23
namespace
SVF
24
{
25
30
template
<
typename
IteratorT>
31
class
iter_range
32
{
33
IteratorT
begin_iterator
,
end_iterator
;
34
35
public
:
36
//TODO: Add SFINAE to test that the Container's iterators match the range's
37
// iterators.
38
template
<
typename
Container>
39
iter_range
(Container &&c)
40
//TODO: Consider ADL/non-member begin/end calls.
41
:
begin_iterator
(c.
begin
()),
end_iterator
(c.
end
()) {}
42
iter_range
(IteratorT
begin_iterator
, IteratorT
end_iterator
)
43
:
begin_iterator
(std::move(
begin_iterator
)),
44
end_iterator
(std::move(
end_iterator
)) {}
45
46
IteratorT
begin
()
const
47
{
48
return
begin_iterator
;
49
}
50
IteratorT
end
()
const
51
{
52
return
end_iterator
;
53
}
54
bool
empty
()
const
55
{
56
return
begin_iterator
==
end_iterator
;
57
}
58
};
59
64
template
<
class
T>
iter_range<T>
make_range
(T x, T y)
65
{
66
return
iter_range<T>
(std::move(x), std::move(y));
67
}
68
69
template
<
typename
T>
iter_range<T>
make_range
(std::pair<T, T>
p
)
70
{
71
return
iter_range<T>
(std::move(
p
.first), std::move(
p
.second));
72
}
73
74
}
75
76
#endif
p
cJSON * p
Definition
cJSON.cpp:2559
SVF::iter_range
Definition
iterator_range.h:32
SVF::iter_range::begin
IteratorT begin() const
Definition
iterator_range.h:46
SVF::iter_range::begin_iterator
IteratorT begin_iterator
Definition
iterator_range.h:33
SVF::iter_range::end
IteratorT end() const
Definition
iterator_range.h:50
SVF::iter_range::iter_range
iter_range(IteratorT begin_iterator, IteratorT end_iterator)
Definition
iterator_range.h:42
SVF::iter_range::iter_range
iter_range(Container &&c)
Definition
iterator_range.h:39
SVF::iter_range::end_iterator
IteratorT end_iterator
Definition
iterator_range.h:33
SVF::iter_range::empty
bool empty() const
Definition
iterator_range.h:54
SVF
for isBitcode
Definition
BasicTypes.h:70
SVF::make_range
iter_range< T > make_range(T x, T y)
Definition
iterator_range.h:64
Generated by
1.15.0