V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
adapters.h
1
// Copyright 2014 The Chromium Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
// Slightly adapted for inclusion in V8.
6
// Copyright 2014 the V8 project authors. All rights reserved.
7
8
#ifndef V8_BASE_ADAPTERS_H_
9
#define V8_BASE_ADAPTERS_H_
10
11
#include <iterator>
12
13
#include "src/base/macros.h"
14
15
namespace
v8
{
16
namespace
base {
17
18
// Internal adapter class for implementing base::Reversed.
19
template
<
typename
T>
20
class
ReversedAdapter
{
21
public
:
22
using
Iterator =
23
std::reverse_iterator<decltype(std::begin(std::declval<T>()))>;
24
25
explicit
ReversedAdapter
(T& t) : t_(t) {}
26
ReversedAdapter
(
const
ReversedAdapter
& ra) =
default
;
27
28
// TODO(clemensh): Use std::rbegin/std::rend once we have C++14 support.
29
Iterator begin()
const
{
return
Iterator(std::end(t_)); }
30
Iterator end()
const
{
return
Iterator(std::begin(t_)); }
31
32
private
:
33
T& t_;
34
35
DISALLOW_ASSIGN(
ReversedAdapter
);
36
};
37
38
// Reversed returns a container adapter usable in a range-based "for" statement
39
// for iterating a reversible container in reverse order.
40
//
41
// Example:
42
//
43
// std::vector<int> v = ...;
44
// for (int i : base::Reversed(v)) {
45
// // iterates through v from back to front
46
// }
47
template
<
typename
T>
48
ReversedAdapter<T>
Reversed(T& t) {
49
return
ReversedAdapter<T>
(t);
50
}
51
52
}
// namespace base
53
}
// namespace v8
54
55
#endif // V8_BASE_ADAPTERS_H_
v8
Definition:
libplatform.h:13
v8::base::ReversedAdapter
Definition:
adapters.h:20
v8
src
base
adapters.h
Generated on Tue Dec 25 2018 14:38:14 by
1.8.14