ResObject.h

Go to the documentation of this file.
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

doxygen