Pool.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_SAT_POOL_H
00013 #define ZYPP_SAT_POOL_H
00014 
00015 #include <iosfwd>
00016 
00017 #include "zypp/Pathname.h"
00018 
00019 #include "zypp/sat/detail/PoolMember.h"
00020 #include "zypp/Repository.h"
00021 #include "zypp/sat/WhatProvides.h"
00022 
00024 namespace zypp
00025 { 
00026 
00027   class SerialNumber;
00028   class RepoInfo;
00029 
00031   namespace sat
00032   { 
00033 
00035     //
00036     //  CLASS NAME : Pool
00037     //
00042     class Pool : protected detail::PoolMember
00043     {
00044       public:
00045         typedef detail::SolvableIterator SolvableIterator;
00046         typedef zypp::detail::RepositoryIterator     RepositoryIterator;
00047         typedef detail::size_type        size_type;
00048 
00049       public:
00051         static Pool instance()
00052         { return Pool(); }
00053 
00055         Pool( const detail::PoolMember & )
00056         {}
00057 
00058       public:
00060         size_type capacity() const;
00061 
00063         const SerialNumber & serial() const;
00064 
00066         void prepare() const;
00067 
00068       public:
00070         bool reposEmpty() const;
00071 
00073         size_type reposSize() const;
00074 
00076         RepositoryIterator reposBegin() const;
00077 
00079         RepositoryIterator reposEnd() const;
00080 
00085         Repository reposInsert( const std::string & alias_r );
00086 
00090         Repository reposFind( const std::string & alias_r ) const;
00091 
00095         void reposErase( const std::string & alias_r )
00096         { reposFind( alias_r ).eraseFromPool(); }
00097 
00098       public:
00100         static const std::string & systemRepoAlias();
00101 
00103         Repository findSystemRepo() const;
00104 
00106         Repository systemRepo();
00107 
00108       public:
00114         Repository addRepoSolv( const Pathname & file_r, const std::string & name_r );
00116         Repository addRepoSolv( const Pathname & file_r );
00120         Repository addRepoSolv( const Pathname & file_r, const RepoInfo & info_r );
00121 
00122       public:
00129         Repository addRepoHelix( const Pathname & file_r, const std::string & name_r );
00131         Repository addRepoHelix( const Pathname & file_r );
00135         Repository addRepoHelix( const Pathname & file_r, const RepoInfo & info_r );
00136 
00137       public:
00139         bool solvablesEmpty() const;
00140 
00142         size_type solvablesSize() const;
00143 
00145         SolvableIterator solvablesBegin() const;
00146 
00148         SolvableIterator solvablesEnd() const;
00149 
00150       public:
00153         template<class _Filter>
00154         filter_iterator<_Filter,SolvableIterator> filterBegin( const _Filter & filter_r ) const
00155         { return make_filter_iterator( filter_r, solvablesBegin(), solvablesEnd() ); }
00156 
00157         template<class _Filter>
00158         filter_iterator<_Filter,SolvableIterator> filterEnd( const _Filter & filter_r ) const
00159         { return make_filter_iterator( filter_r, solvablesEnd(), solvablesEnd() ); }
00161 
00162      public:
00164         WhatProvides whatProvides( Capability cap_r ) const
00165         { return WhatProvides( cap_r ); }
00166 
00167       public:
00173         void setTextLocale( const Locale & locale_r );
00174 
00179         void setRequestedLocales( const LocaleSet & locales_r );
00180 
00184         bool addRequestedLocale( const Locale & locale_r );
00185 
00189         bool eraseRequestedLocale( const Locale & locale_r );
00190 
00194         const LocaleSet & getRequestedLocales() const;
00195 
00197         bool isRequestedLocale( const Locale & locale_r ) const;
00198 
00203         const LocaleSet & getAvailableLocales() const;
00204 
00206         bool isAvailableLocale( const Locale & locale_r ) const;
00208 
00209       public:
00215         typedef std::tr1::unordered_set<IdString>::const_iterator MultiversionIterator;
00216 
00217         bool multiversionEmpty() const;
00218         size_t multiversionSize() const;
00219         MultiversionIterator multiversionBegin() const;
00220         MultiversionIterator multiversionEnd() const;
00221 
00222         bool isMultiversion( IdString ident_r ) const;
00224 
00225       public:
00227         ::_Pool * get() const;
00228       private:
00230         Pool() {}
00231     };
00233 
00235     std::ostream & operator<<( std::ostream & str, const Pool & obj );
00236 
00238     inline bool operator==( const Pool & lhs, const Pool & rhs )
00239     { return lhs.get() == rhs.get(); }
00240 
00242     inline bool operator!=( const Pool & lhs, const Pool & rhs )
00243     { return lhs.get() != rhs.get(); }
00244 
00246   } // namespace sat
00249 } // namespace zypp
00251 #endif // ZYPP_SAT_POOL_H

doxygen