libzypp
10.5.0
|
00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_RESOBJECT_H 00013 #define ZYPP_RESOBJECT_H 00014 00015 #include "zypp/base/Deprecated.h" 00016 00017 #include "zypp/Resolvable.h" 00018 #include "zypp/Date.h" 00019 #include "zypp/Locale.h" 00020 #include "zypp/Vendor.h" 00021 #include "zypp/ByteCount.h" 00022 #include "zypp/DiskUsage.h" 00023 #include "zypp/OnMediaLocation.h" 00024 #include "zypp/Repository.h" 00025 00026 #include "zypp/sat/LookupAttr.h" 00027 #include "zypp/sat/SolvableSet.h" 00028 00030 namespace zypp 00031 { 00032 00034 // 00035 // CLASS NAME : ResObject 00036 // 00044 class ResObject : public Resolvable 00045 { 00046 public: 00047 typedef ResObject Self; 00048 typedef ResTraits<Self> TraitsType; 00049 typedef TraitsType::PtrType Ptr; 00050 typedef TraitsType::constPtrType constPtr; 00051 00052 public: 00053 00066 template<class _Res> 00067 inline typename ResTraits<_Res>::constPtrType asKind() const; 00068 00069 template<class _Res> 00070 inline typename ResTraits<_Res>::PtrType asKind(); 00071 00072 public: 00078 bool supportsLocales() const 00079 { return sat::Solvable::supportsLocales(); } 00080 00082 bool supportsLocale( const Locale & locale_r ) const 00083 { return sat::Solvable::supportsLocale( locale_r ); } 00084 00085 bool supportsLocale( const LocaleSet & locales_r ) const 00086 { return sat::Solvable::supportsLocale( locales_r ); } 00087 00089 bool supportsRequestedLocales() const 00090 { return sat::Solvable::supportsRequestedLocales(); } 00091 00093 LocaleSet getSupportedLocales() const 00094 { return sat::Solvable::getSupportedLocales(); } 00096 00097 public: 00102 std::string summary( const Locale & lang_r = Locale() ) const; 00103 00107 std::string description( const Locale & lang_r = Locale() ) const; 00108 00115 std::string insnotify( const Locale & lang_r = Locale() ) const; 00116 00123 std::string delnotify( const Locale & lang_r = Locale() ) const; 00124 00131 std::string licenseToConfirm( const Locale & lang_r = Locale() ) const; 00132 00138 Vendor vendor() const 00139 { return Resolvable::vendor().asString(); } 00140 00144 std::string distribution() const; 00145 00152 std::string cpeId() const; 00153 00155 ByteCount installSize() const; 00156 00158 ByteCount downloadSize() const; 00159 00161 Repository repository() const 00162 { return sat::Solvable::repository(); } 00163 00167 RepoInfo repoInfo() const 00168 { return repository().info(); } 00169 00174 unsigned mediaNr() const; 00175 00179 Date buildtime() const; 00180 00185 Date installtime() const; 00186 00193 const DiskUsage & diskusage() const; 00194 00195 protected: 00196 friend ResObject::Ptr makeResObject( const sat::Solvable & solvable_r ); 00198 ResObject( const sat::Solvable & solvable_r ); 00200 virtual ~ResObject(); 00202 virtual std::ostream & dumpOn( std::ostream & str ) const; 00203 }; 00205 00222 ResObject::Ptr makeResObject( const sat::Solvable & solvable_r ); 00223 00235 template<class _Res> 00236 inline typename ResTraits<_Res>::PtrType make( const sat::Solvable & solvable_r ) 00237 { return( isKind<_Res>( solvable_r ) ? new _Res( solvable_r ) : 0 ); } 00239 template<> 00240 inline ResObject::Ptr make<ResObject>( const sat::Solvable & solvable_r ) 00241 { return makeResObject( solvable_r ); } 00242 00251 template<class _Res> 00252 inline typename ResTraits<_Res>::PtrType asKind( const ResObject::Ptr & p ) 00253 { return dynamic_pointer_cast<_Res>(p); } 00254 00255 template<class _Res> 00256 inline typename ResTraits<_Res>::constPtrType asKind( const ResObject::constPtr & p ) 00257 { return dynamic_pointer_cast<const _Res>(p); } 00258 00259 template<class _Res> 00260 inline typename ResTraits<_Res>::constPtrType ResObject::asKind() const 00261 { return dynamic_cast<const _Res *>( this ); } 00262 00263 template<class _Res> 00264 inline typename ResTraits<_Res>::PtrType ResObject::asKind() 00265 { return dynamic_cast<_Res *>( this ); } 00266 00268 } // namespace zypp 00270 #endif // ZYPP_RESOBJECT_H