libzypp 17.31.23
ValueTransform.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
11#ifndef ZYPP_BASE_VALUETRANSFORM_H
12#define ZYPP_BASE_VALUETRANSFORM_H
13
14#include <iosfwd>
15
16#include <zypp/base/Iterator.h>
17
19namespace zypp
20{
22 namespace base
23 {
34 template<class Tp, class TUnaryFunction>
36 {
37 typedef Tp RawType;
38 typedef TUnaryFunction Transformator;
39 typedef typename std::result_of<Transformator(RawType)>::type TransformedType;
40
41 public:
43 {}
44
45 explicit ValueTransform( RawType raw_r )
46 : _raw( std::move(raw_r) )
47 {}
48
49 ValueTransform( RawType raw_r, Transformator transform_r )
50 : _raw( std::move(raw_r) ), _transform( std::move(transform_r) )
51 {}
52
53 public:
55 const RawType & raw() const
56 { return _raw; }
57
60 { return _raw; }
61
62 public:
65 { return _transform( _raw ); }
66
68 TransformedType transformed( const RawType & raw_r ) const
69 { return _transform( raw_r ); }
70
73 { return _transform; }
74
75 private:
78 };
79
90 template<class TContainer, class TUnaryFunction>
92 {
93 typedef TContainer Container;
94 typedef TUnaryFunction Transformator;
95 typedef typename Container::size_type size_type;
96 typedef typename Container::value_type RawType;
97 typedef typename std::result_of<Transformator(RawType)>::type TransformedType;
98
99 public:
101 {}
102
104 : _raw( std::move(raw_r) )
105 {}
106
108 : _raw( std::move(raw_r) ), _transform( std::move(transform_r) )
109 {}
110
111 public:
112 bool empty() const
113 { return _raw.empty(); }
114
116 { return _raw.size(); }
117
118 typedef typename Container::const_iterator RawConstIterator;
119
121 { return _raw.begin(); }
122
124 { return _raw.end(); }
125
127 const Container & raw() const
128 { return _raw; }
129
132 { return _raw; }
133
134 public:
135 typedef transform_iterator<Transformator, typename Container::const_iterator> TransformedConstIterator;
136
138 { return make_transform_iterator( _raw.begin(), _transform ); }
139
141 { return make_transform_iterator( _raw.end(), _transform ); }
142
145 { return Container( transformedBegin(), transformedEnd() ); }
146
148 TransformedType transformed( const RawType & raw_r ) const
149 { return _transform( raw_r ); }
150
153 { return _transform( *rawIter_r ); }
154
157 { return _transform; }
158
159 private:
162 };
163
164 } // namespace base
166} // namespace zypp
168#endif // ZYPP_BASE_VALUETRANSFORM_H
Definition: Arch.h:361
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
Helper managing a container of raw values with transformed representation.
TransformedType transformed(const RawConstIterator &rawIter_r) const
Return a transformed copy of a RawConstIterator raw value.
TransformedConstIterator transformedBegin() const
ContainerTransform(Container raw_r)
Container transformed() const
Return copy with transformed variables (expensive)
Container::const_iterator RawConstIterator
const Container & raw() const
Get the raw value.
RawConstIterator rawBegin() const
Container::value_type RawType
RawConstIterator rawEnd() const
Container::size_type size_type
const Transformator & transformator() const
Return the transformator.
transform_iterator< Transformator, typename Container::const_iterator > TransformedConstIterator
TransformedType transformed(const RawType &raw_r) const
Return a transformed copy of an arbitrary RawType.
std::result_of< Transformator(RawType)>::type TransformedType
TransformedConstIterator transformedEnd() const
Container & raw()
Set the raw value.
ContainerTransform(Container raw_r, Transformator transform_r)
Helper managing raw values with transformed representation.
ValueTransform(RawType raw_r, Transformator transform_r)
std::result_of< Transformator(RawType)>::type TransformedType
TUnaryFunction Transformator
const RawType & raw() const
Get the raw value.
TransformedType transformed() const
Return a transformed copy of the raw value.
RawType & raw()
Set the raw value.
const Transformator & transformator() const
Return the transformator.
TransformedType transformed(const RawType &raw_r) const
Return a transformed copy of an arbitrary RawType.
ValueTransform(RawType raw_r)