- Prepare ResPool being a singleton ontop of sat::Pool.
[platform/upstream/libzypp.git] / zypp / ResPool.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ResPool.cc
10  *
11 */
12 #include <iostream>
13 //#include "zypp/base/Logger.h"
14
15 #include "zypp/base/SerialNumber.h"
16
17 #include "zypp/ResPool.h"
18 #include "zypp/pool/PoolImpl.h"
19
20 using std::endl;
21
22 ///////////////////////////////////////////////////////////////////
23 namespace zypp
24 { /////////////////////////////////////////////////////////////////
25
26   namespace
27   {
28     /** the empty pool used by ResPool::ResPool() */
29     pool::PoolTraits::Impl_constPtr noPool()
30     {
31       static pool::PoolTraits::Impl_constPtr _noPool( new pool::PoolImpl );
32       return _noPool;
33     }
34   }
35
36   ///////////////////////////////////////////////////////////////////
37   //
38   //    METHOD NAME : ResPool::ResPool
39   //    METHOD TYPE : Ctor
40   //
41   ResPool::ResPool()
42   : _pimpl( noPool() )
43   {}
44
45   ///////////////////////////////////////////////////////////////////
46   //
47   //    METHOD NAME : ResPool::ResPool
48   //    METHOD TYPE : Ctor
49   //
50   ResPool::ResPool( pool::PoolTraits::Impl_constPtr impl_r )
51   : _pimpl( impl_r )
52   {}
53
54   ///////////////////////////////////////////////////////////////////
55   //
56   // Forward to impementation:
57   //
58   ///////////////////////////////////////////////////////////////////
59
60   ResPoolProxy ResPool::proxy() const
61   { return _pimpl->proxy( *this ); }
62
63   bool ResPool::empty() const
64   { return _pimpl->empty(); }
65
66   PoolItem ResPool::find( const sat::Solvable & slv_r ) const
67   { return _pimpl->find( slv_r ); }
68
69   ResPool::size_type ResPool::size() const
70   { return _pimpl->size(); }
71
72   ResPool::const_iterator ResPool::begin() const
73   { return _pimpl->begin(); }
74
75   ResPool::const_iterator ResPool::end() const
76   { return _pimpl->end(); }
77
78   ResPool::byName_iterator ResPool::byNameBegin( const std::string & name_r ) const
79   { return _pimpl->_namehash.begin( name_r ); }
80
81   ResPool::byName_iterator ResPool::byNameEnd( const std::string & name_r ) const
82   { return _pimpl->_namehash.end( name_r ); }
83
84   ResPool::byCapabilityIndex_iterator ResPool::byCapabilityIndexBegin( const std::string & index_r, Dep depType_r ) const
85   { return _pimpl->_caphash.begin( index_r, depType_r ); }
86
87   ResPool::byCapabilityIndex_iterator ResPool::byCapabilityIndexEnd( const std::string & index_r, Dep depType_r ) const
88   { return _pimpl->_caphash.end( index_r, depType_r ); }
89
90   ResPool::size_type ResPool::knownRepositoriesSize() const
91   { return _pimpl->knownRepositories().size(); }
92
93   ResPool::repository_iterator ResPool::knownRepositoriesBegin() const
94   { return _pimpl->knownRepositories().begin(); }
95
96   ResPool::repository_iterator ResPool::knownRepositoriesEnd() const
97   { return _pimpl->knownRepositories().end(); }
98
99   void ResPool::setAdditionalRequire( const AdditionalCapabilities & capset ) const
100   { _pimpl->setAdditionalRequire( capset ); }
101   ResPool::AdditionalCapabilities & ResPool::additionalRequire() const
102   { return _pimpl->additionalRequire(); }
103
104   void ResPool::setAdditionalConflict( const AdditionalCapabilities & capset ) const
105   { _pimpl->setAdditionalConflict( capset ); }
106   ResPool::AdditionalCapabilities & ResPool::additionaConflict() const
107   { return _pimpl->additionaConflict(); }
108
109   void ResPool::setAdditionalProvide( const AdditionalCapabilities & capset ) const
110   { _pimpl->setAdditionalProvide( capset ); }
111   ResPool::AdditionalCapabilities & ResPool::additionaProvide() const
112   { return _pimpl->additionaProvide(); }
113
114   const SerialNumber & ResPool::serial() const
115   { return _pimpl->serial(); }
116
117   /******************************************************************
118   **
119   **    FUNCTION NAME : operator<<
120   **    FUNCTION TYPE : std::ostream &
121   */
122   std::ostream & operator<<( std::ostream & str, const ResPool & obj )
123   {
124     return str << *obj._pimpl;
125   }
126
127   /////////////////////////////////////////////////////////////////
128 } // namespace zypp
129 ///////////////////////////////////////////////////////////////////