libzypp 8.13.6
|
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 IdStringSet::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: 00230 typedef IdStringSet::const_iterator OnSystemByUserIterator; 00231 00232 bool onSystemByUserEmpty() const; 00233 size_t onSystemByUserSize() const; 00234 OnSystemByUserIterator onSystemByUserBegin() const; 00235 OnSystemByUserIterator onSystemByUserEnd() const; 00236 00237 bool isOnSystemByUser( IdString ident_r ) const; 00239 00240 public: 00242 ::_Pool * get() const; 00243 private: 00245 Pool() {} 00246 }; 00248 00250 std::ostream & operator<<( std::ostream & str, const Pool & obj ); 00251 00253 inline bool operator==( const Pool & lhs, const Pool & rhs ) 00254 { return lhs.get() == rhs.get(); } 00255 00257 inline bool operator!=( const Pool & lhs, const Pool & rhs ) 00258 { return lhs.get() != rhs.get(); } 00259 00261 } // namespace sat 00264 } // namespace zypp 00266 #endif // ZYPP_SAT_POOL_H