1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "base/value_iterators.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker #include "base/values.h"
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker namespace base {
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Worker namespace detail {
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
14*6777b538SAndroid Build Coastguard Worker // dict_iterator.
15*6777b538SAndroid Build Coastguard Worker
pointer(const reference & ref)16*6777b538SAndroid Build Coastguard Worker dict_iterator::pointer::pointer(const reference& ref) : ref_(ref) {}
17*6777b538SAndroid Build Coastguard Worker
18*6777b538SAndroid Build Coastguard Worker dict_iterator::pointer::pointer(const pointer& ptr) = default;
19*6777b538SAndroid Build Coastguard Worker
dict_iterator(DictStorage::iterator dict_iter)20*6777b538SAndroid Build Coastguard Worker dict_iterator::dict_iterator(DictStorage::iterator dict_iter)
21*6777b538SAndroid Build Coastguard Worker : dict_iter_(dict_iter) {}
22*6777b538SAndroid Build Coastguard Worker
23*6777b538SAndroid Build Coastguard Worker dict_iterator::dict_iterator(const dict_iterator& dict_iter) = default;
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard Worker dict_iterator& dict_iterator::operator=(const dict_iterator& dict_iter) =
26*6777b538SAndroid Build Coastguard Worker default;
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard Worker dict_iterator::~dict_iterator() = default;
29*6777b538SAndroid Build Coastguard Worker
operator *()30*6777b538SAndroid Build Coastguard Worker dict_iterator::reference dict_iterator::operator*() {
31*6777b538SAndroid Build Coastguard Worker return {dict_iter_->first, *dict_iter_->second};
32*6777b538SAndroid Build Coastguard Worker }
33*6777b538SAndroid Build Coastguard Worker
operator ->()34*6777b538SAndroid Build Coastguard Worker dict_iterator::pointer dict_iterator::operator->() {
35*6777b538SAndroid Build Coastguard Worker return pointer(operator*());
36*6777b538SAndroid Build Coastguard Worker }
37*6777b538SAndroid Build Coastguard Worker
operator ++()38*6777b538SAndroid Build Coastguard Worker dict_iterator& dict_iterator::operator++() {
39*6777b538SAndroid Build Coastguard Worker ++dict_iter_;
40*6777b538SAndroid Build Coastguard Worker return *this;
41*6777b538SAndroid Build Coastguard Worker }
42*6777b538SAndroid Build Coastguard Worker
operator ++(int)43*6777b538SAndroid Build Coastguard Worker dict_iterator dict_iterator::operator++(int) {
44*6777b538SAndroid Build Coastguard Worker dict_iterator tmp(*this);
45*6777b538SAndroid Build Coastguard Worker ++dict_iter_;
46*6777b538SAndroid Build Coastguard Worker return tmp;
47*6777b538SAndroid Build Coastguard Worker }
48*6777b538SAndroid Build Coastguard Worker
operator --()49*6777b538SAndroid Build Coastguard Worker dict_iterator& dict_iterator::operator--() {
50*6777b538SAndroid Build Coastguard Worker --dict_iter_;
51*6777b538SAndroid Build Coastguard Worker return *this;
52*6777b538SAndroid Build Coastguard Worker }
53*6777b538SAndroid Build Coastguard Worker
operator --(int)54*6777b538SAndroid Build Coastguard Worker dict_iterator dict_iterator::operator--(int) {
55*6777b538SAndroid Build Coastguard Worker dict_iterator tmp(*this);
56*6777b538SAndroid Build Coastguard Worker --dict_iter_;
57*6777b538SAndroid Build Coastguard Worker return tmp;
58*6777b538SAndroid Build Coastguard Worker }
59*6777b538SAndroid Build Coastguard Worker
operator ==(const dict_iterator & lhs,const dict_iterator & rhs)60*6777b538SAndroid Build Coastguard Worker bool operator==(const dict_iterator& lhs, const dict_iterator& rhs) {
61*6777b538SAndroid Build Coastguard Worker return lhs.dict_iter_ == rhs.dict_iter_;
62*6777b538SAndroid Build Coastguard Worker }
63*6777b538SAndroid Build Coastguard Worker
operator !=(const dict_iterator & lhs,const dict_iterator & rhs)64*6777b538SAndroid Build Coastguard Worker bool operator!=(const dict_iterator& lhs, const dict_iterator& rhs) {
65*6777b538SAndroid Build Coastguard Worker return !(lhs == rhs);
66*6777b538SAndroid Build Coastguard Worker }
67*6777b538SAndroid Build Coastguard Worker
68*6777b538SAndroid Build Coastguard Worker // ----------------------------------------------------------------------------
69*6777b538SAndroid Build Coastguard Worker // const_dict_iterator.
70*6777b538SAndroid Build Coastguard Worker
pointer(const reference & ref)71*6777b538SAndroid Build Coastguard Worker const_dict_iterator::pointer::pointer(const reference& ref) : ref_(ref) {}
72*6777b538SAndroid Build Coastguard Worker
73*6777b538SAndroid Build Coastguard Worker const_dict_iterator::pointer::pointer(const pointer& ptr) = default;
74*6777b538SAndroid Build Coastguard Worker
const_dict_iterator(DictStorage::const_iterator dict_iter)75*6777b538SAndroid Build Coastguard Worker const_dict_iterator::const_dict_iterator(DictStorage::const_iterator dict_iter)
76*6777b538SAndroid Build Coastguard Worker : dict_iter_(dict_iter) {}
77*6777b538SAndroid Build Coastguard Worker
78*6777b538SAndroid Build Coastguard Worker const_dict_iterator::const_dict_iterator(const const_dict_iterator& dict_iter) =
79*6777b538SAndroid Build Coastguard Worker default;
80*6777b538SAndroid Build Coastguard Worker
81*6777b538SAndroid Build Coastguard Worker const_dict_iterator& const_dict_iterator::operator=(
82*6777b538SAndroid Build Coastguard Worker const const_dict_iterator& dict_iter) = default;
83*6777b538SAndroid Build Coastguard Worker
84*6777b538SAndroid Build Coastguard Worker const_dict_iterator::~const_dict_iterator() = default;
85*6777b538SAndroid Build Coastguard Worker
operator *() const86*6777b538SAndroid Build Coastguard Worker const_dict_iterator::reference const_dict_iterator::operator*() const {
87*6777b538SAndroid Build Coastguard Worker return {dict_iter_->first, *dict_iter_->second};
88*6777b538SAndroid Build Coastguard Worker }
89*6777b538SAndroid Build Coastguard Worker
operator ->() const90*6777b538SAndroid Build Coastguard Worker const_dict_iterator::pointer const_dict_iterator::operator->() const {
91*6777b538SAndroid Build Coastguard Worker return pointer(operator*());
92*6777b538SAndroid Build Coastguard Worker }
93*6777b538SAndroid Build Coastguard Worker
operator ++()94*6777b538SAndroid Build Coastguard Worker const_dict_iterator& const_dict_iterator::operator++() {
95*6777b538SAndroid Build Coastguard Worker ++dict_iter_;
96*6777b538SAndroid Build Coastguard Worker return *this;
97*6777b538SAndroid Build Coastguard Worker }
98*6777b538SAndroid Build Coastguard Worker
operator ++(int)99*6777b538SAndroid Build Coastguard Worker const_dict_iterator const_dict_iterator::operator++(int) {
100*6777b538SAndroid Build Coastguard Worker const_dict_iterator tmp(*this);
101*6777b538SAndroid Build Coastguard Worker ++dict_iter_;
102*6777b538SAndroid Build Coastguard Worker return tmp;
103*6777b538SAndroid Build Coastguard Worker }
104*6777b538SAndroid Build Coastguard Worker
operator --()105*6777b538SAndroid Build Coastguard Worker const_dict_iterator& const_dict_iterator::operator--() {
106*6777b538SAndroid Build Coastguard Worker --dict_iter_;
107*6777b538SAndroid Build Coastguard Worker return *this;
108*6777b538SAndroid Build Coastguard Worker }
109*6777b538SAndroid Build Coastguard Worker
operator --(int)110*6777b538SAndroid Build Coastguard Worker const_dict_iterator const_dict_iterator::operator--(int) {
111*6777b538SAndroid Build Coastguard Worker const_dict_iterator tmp(*this);
112*6777b538SAndroid Build Coastguard Worker --dict_iter_;
113*6777b538SAndroid Build Coastguard Worker return tmp;
114*6777b538SAndroid Build Coastguard Worker }
115*6777b538SAndroid Build Coastguard Worker
operator ==(const const_dict_iterator & lhs,const const_dict_iterator & rhs)116*6777b538SAndroid Build Coastguard Worker bool operator==(const const_dict_iterator& lhs,
117*6777b538SAndroid Build Coastguard Worker const const_dict_iterator& rhs) {
118*6777b538SAndroid Build Coastguard Worker return lhs.dict_iter_ == rhs.dict_iter_;
119*6777b538SAndroid Build Coastguard Worker }
120*6777b538SAndroid Build Coastguard Worker
operator !=(const const_dict_iterator & lhs,const const_dict_iterator & rhs)121*6777b538SAndroid Build Coastguard Worker bool operator!=(const const_dict_iterator& lhs,
122*6777b538SAndroid Build Coastguard Worker const const_dict_iterator& rhs) {
123*6777b538SAndroid Build Coastguard Worker return !(lhs == rhs);
124*6777b538SAndroid Build Coastguard Worker }
125*6777b538SAndroid Build Coastguard Worker
126*6777b538SAndroid Build Coastguard Worker } // namespace detail
127*6777b538SAndroid Build Coastguard Worker
128*6777b538SAndroid Build Coastguard Worker } // namespace base
129