Pool.h
Go to the documentation of this file.00001
00002
00003
00004
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
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 }
00249 }
00251 #endif // ZYPP_SAT_POOL_H