libzypp  15.28.6
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 
19 namespace zypp
20 {
22  namespace base
23  {
34  template<class Tp, class TUnaryFunction>
36  {
37  typedef Tp RawType;
38  typedef TUnaryFunction Transformator;
39  typedef typename Transformator::result_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 
72  const Transformator & transformator() const
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 Transformator::result_type TransformedType;
98 
99  public:
101  {}
102 
103  explicit ContainerTransform( Container raw_r )
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 
115  size_type size() const
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 
152  TransformedType transformed( const RawConstIterator & rawIter_r ) const
153  { return _transform( *rawIter_r ); }
154 
156  const Transformator & transformator() const
157  { return _transform; }
158 
159  private:
162  };
163 
164  } // namespace base
166 } // namespace zypp
168 #endif // ZYPP_BASE_VALUETRANSFORM_H
RawConstIterator rawBegin() const
transform_iterator< Transformator, typename Container::const_iterator > TransformedConstIterator
TransformedConstIterator transformedBegin() const
TransformedType transformed(const RawType &raw_r) const
Return a transformed copy of an arbitrary RawType.
TransformedType transformed(const RawConstIterator &rawIter_r) const
Return a transformed copy of a RawConstIterator raw value.
Container::value_type RawType
Container transformed() const
Return copy with transformed variables (expensive)
const Container & raw() const
Get the raw value.
Helper managing raw values with transformed representation.
Helper managing a container of raw values with transformed representation.
ValueTransform(RawType raw_r, Transformator transform_r)
RawConstIterator rawEnd() const
const RawType & raw() const
Get the raw value.
ContainerTransform(Container raw_r, Transformator transform_r)
TransformedType transformed() const
Return a transformed copy of the raw value.
Transformator::result_type TransformedType
Container::size_type size_type
const Transformator & transformator() const
Return the transformator.
Container::const_iterator RawConstIterator
ValueTransform(RawType raw_r)
SolvableIdType size_type
Definition: PoolMember.h:152
TUnaryFunction Transformator
TransformedConstIterator transformedEnd() const
Transformator::result_type TransformedType
const Transformator & transformator() const
Return the transformator.
RawType & raw()
Set the raw value.
ContainerTransform(Container raw_r)
Functor replacing repository variables.
TransformedType transformed(const RawType &raw_r) const
Return a transformed copy of an arbitrary RawType.
Url manipulation class.
Definition: Url.h:87
Container & raw()
Set the raw value.