17namespace jsonv::detail
26template <
typename TIterator,
27 typename TConstIterator = TIterator
32 typedef TIterator iterator;
33 typedef TConstIterator const_iterator;
34 typedef std::reverse_iterator<iterator> reverse_iterator;
35 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
36 typedef typename std::iterator_traits<iterator>::value_type value_type;
37 typedef typename std::iterator_traits<iterator>::reference reference;
38 typedef typename std::iterator_traits<iterator>::pointer pointer;
41 basic_view(iterator begin_, iterator end_) :
46 iterator begin() {
return _begin; }
47 const_iterator begin()
const {
return _begin; }
48 iterator end() {
return _end; }
49 const_iterator end()
const {
return _end; }
51 const_iterator cbegin()
const {
return _begin; }
52 const_iterator cend()
const {
return _end; }
54 reverse_iterator rbegin() {
return reverse_iterator(end()); };
55 const_reverse_iterator rbegin()
const {
return const_reverse_iterator(end()); }
56 reverse_iterator rend() {
return reverse_iterator(begin()); }
57 const_reverse_iterator rend()
const {
return reverse_iterator(begin()); }
59 const_reverse_iterator crbegin()
const {
return const_reverse_iterator(end()); }
60 const_reverse_iterator crend()
const {
return reverse_iterator(begin()); }
73 explicit basic_owner(T&& x) :
82template <
typename TContainer,
84 typename TConstIterator = TIterator
86class basic_owning_view :
87 private basic_owner<TContainer>,
88 public basic_view<TIterator, TConstIterator>
90 using basic_owner<TContainer>::_value;
93 template <
typename FBegin,
typename FEnd>
94 basic_owning_view(TContainer&& container, FBegin begin, FEnd end) :
95 basic_owner<TContainer>(
std::move(container)),
96 basic_view<TIterator, TConstIterator>(begin(_value), end(_value))
Copyright (c) 2014-2020 by Travis Gockel.