Imported Upstream version 17.22.0
[platform/upstream/libzypp.git] / zypp / OnMediaLocation.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/source/OnMediaLocation.cc
10  *
11 */
12 #include <iostream>
13 //#include "zypp/base/Logger.h"
14
15 #include "zypp/OnMediaLocation.h"
16
17 using std::endl;
18
19 ///////////////////////////////////////////////////////////////////
20 namespace zypp
21 {
22   ///////////////////////////////////////////////////////////////////
23   /// \class OnMediaLocation::Impl
24   /// \brief OnMediaLocation implementation.
25   ///////////////////////////////////////////////////////////////////
26   struct OnMediaLocation::Impl
27   {
28   public:
29     Impl()
30     {}
31
32     Impl( Pathname filename_r, unsigned medianr_r )
33     : _filename { std::move(filename_r) }
34     , _medianr { medianr_r }
35     {}
36
37     Pathname _filename;
38     unsigned _medianr = 0U;
39
40     bool _optional = false;
41
42     ByteCount _downloadSize;
43     CheckSum  _checksum;
44
45     ByteCount _openSize;
46     CheckSum  _openChecksum;
47
48     ByteCount _headerSize;
49     CheckSum  _headerChecksum;
50
51   public:
52     /** Offer default Impl. */
53     static shared_ptr<Impl> nullimpl()
54     { static shared_ptr<Impl> _nullimpl( new Impl ); return _nullimpl; }
55   private:
56     friend Impl * rwcowClone<Impl>( const Impl * rhs );
57     /** clone for RWCOW_pointer */
58     Impl * clone() const { return new Impl( *this ); }
59   };
60
61   /** \relates OnMediaLocation::Impl Stream output */
62   inline std::ostream & operator<<( std::ostream & str, const OnMediaLocation::Impl & obj )
63   { return str << "[" << obj._medianr << "]" << obj._filename << "{" << obj._downloadSize << "|" << obj._checksum << "}"; }
64
65   /** \relates OnMediaLocation::Impl Verbose stream output */
66   inline std::ostream & dumpOn( std::ostream & str, const OnMediaLocation::Impl & obj )
67   { return str << obj; }
68
69   ///////////////////////////////////////////////////////////////////
70   //    CLASS NAME : OnMediaLocation
71   ///////////////////////////////////////////////////////////////////
72
73   OnMediaLocation::OnMediaLocation()
74   : _pimpl( Impl::nullimpl() )
75   {}
76
77   OnMediaLocation::OnMediaLocation( Pathname filename_r, unsigned medianr_r )
78   :  _pimpl( new Impl( std::move(filename_r), medianr_r ) )
79   {}
80
81   OnMediaLocation::~OnMediaLocation()
82   {}
83
84
85   const Pathname & OnMediaLocation::filename() const
86   { return _pimpl->_filename; }
87
88   unsigned OnMediaLocation::medianr() const
89   { return _pimpl->_medianr; }
90
91   OnMediaLocation & OnMediaLocation::setLocation( Pathname filename_r, unsigned medianr_r )
92   { _pimpl->_filename = std::move(filename_r); _pimpl->_medianr = medianr_r; return *this; }
93
94   OnMediaLocation & OnMediaLocation::unsetLocation()
95   { _pimpl->_filename = Pathname(); _pimpl->_medianr = 0; return *this; }
96
97   OnMediaLocation & OnMediaLocation::changeFilename( Pathname filename_r )
98   { _pimpl->_filename = std::move(filename_r); return *this; }
99
100   OnMediaLocation & OnMediaLocation::changeMedianr( unsigned medianr_r )
101   { _pimpl->_medianr = medianr_r; return *this; }
102
103   OnMediaLocation & OnMediaLocation::prependPath( const Pathname & prefix_r )
104   { if ( ! prefix_r.emptyOrRoot() ) changeFilename( prefix_r / filename() ); return *this; }
105
106   bool OnMediaLocation::optional() const
107   { return _pimpl->_optional; }
108
109   OnMediaLocation & OnMediaLocation::setOptional( bool val_r )
110   { _pimpl->_optional = val_r; return *this; }
111
112   const ByteCount & OnMediaLocation::downloadSize() const
113   { return _pimpl->_downloadSize; }
114
115   OnMediaLocation & OnMediaLocation::setDownloadSize( ByteCount val_r )
116   { _pimpl->_downloadSize = val_r; return *this; }
117
118   const CheckSum & OnMediaLocation::checksum() const
119   { return _pimpl->_checksum; }
120
121   OnMediaLocation & OnMediaLocation::setChecksum( CheckSum val_r )
122   { _pimpl->_checksum = val_r; return *this; }
123
124   const ByteCount & OnMediaLocation::openSize() const
125   { return _pimpl->_openSize; }
126
127   OnMediaLocation & OnMediaLocation::setOpenSize( ByteCount val_r )
128   { _pimpl->_openSize = val_r; return *this; }
129
130   const CheckSum & OnMediaLocation::openChecksum() const
131   { return _pimpl->_openChecksum; }
132
133   OnMediaLocation & OnMediaLocation::setOpenChecksum( CheckSum val_r )
134   { _pimpl->_openChecksum = val_r; return *this; }
135
136   const ByteCount & OnMediaLocation::headerSize() const
137   { return _pimpl->_headerSize; }
138
139   OnMediaLocation & OnMediaLocation::setHeaderSize( ByteCount val_r )
140   { _pimpl->_headerSize = val_r; return *this; }
141
142   const CheckSum & OnMediaLocation::headerChecksum() const
143   { return _pimpl->_headerChecksum; }
144
145   OnMediaLocation & OnMediaLocation::setHeaderChecksum( CheckSum val_r )
146   { _pimpl->_headerChecksum = val_r; return *this; }
147
148
149   std::ostream & operator<<( std::ostream & str, const OnMediaLocation & obj )
150   { return str << *obj._pimpl; }
151
152   std::ostream & dumpOn( std::ostream & str, const OnMediaLocation & obj )
153   { return dumpOn( str, *obj._pimpl ); }
154
155 } // namespace zypp
156 ///////////////////////////////////////////////////////////////////