Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

PMPackage.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                                                                      |
00003 |                      __   __    ____ _____ ____                      |
00004 |                      \ \ / /_ _/ ___|_   _|___ \                     |
00005 |                       \ V / _` \___ \ | |   __) |                    |
00006 |                        | | (_| |___) || |  / __/                     |
00007 |                        |_|\__,_|____/ |_| |_____|                    |
00008 |                                                                      |
00009 |                               core system                            |
00010 |                                                        (C) SuSE GmbH |
00011 \----------------------------------------------------------------------/
00012 
00013     File:       PMPackage.h
00014 
00015     Author:     Michael Andres <ma@suse.de>
00016     Maintainer: Michael Andres <ma@suse.de>
00017 
00018     Purpose: Defines the Package object.
00019 
00020 /-*/
00021 #ifndef PMPackage_h
00022 #define PMPackage_h
00023 
00024 #include <iosfwd>
00025 #include <string>
00026 
00027 #include <y2pm/InstSrcPtr.h>
00028 #include <y2pm/PMPackagePtr.h>
00029 #include <y2pm/PMPackageDataProvider.h> // should introduce all attribute data types.
00030 
00031 #include <y2pm/PMObject.h>
00032 
00033 class PkgDuMaster;
00034 class PkgDuSlave;
00035 class YStringTree;
00036 
00038 //
00039 //      CLASS NAME : PMPackage
00043 class PMPackage : public PMObject {
00044   REP_BODY(PMPackage);
00045 
00046   private:
00047 
00048     PkgDuSlave & _pkgdu;
00049 
00050   public:
00051 
00052     bool du_add( PkgDuMaster & master_r ) const;
00053     bool du_sub( PkgDuMaster & master_r ) const;
00054 
00055   private:
00056 
00061     virtual bool prefererCandidate() const;
00062 
00063   public:
00064 
00069     virtual std::string            summary()         const;
00070     virtual std::list<std::string> description()     const;
00071     virtual std::list<std::string> insnotify()       const;
00072     virtual std::list<std::string> delnotify()       const;
00073     virtual FSize                  size()            const;
00074     virtual bool                   providesSources() const;
00075 
00076     virtual std::string            instSrcLabel()    const;
00077     virtual Vendor                 instSrcVendor()   const;
00078     virtual unsigned               instSrcRank()     const;
00079 
00084     // splitprovides
00085     PkgSplitSet            splitprovides() const;
00086 
00087     Date                   buildtime()    const;
00088     std::string            buildhost()    const;
00089     Date                   installtime()  const;
00090     std::string            distribution() const;
00091     Vendor                 vendor()       const;
00092     std::string            license()      const;
00093     std::list<std::string> licenseToConfirm() const;
00094     std::string            packager()     const;
00095     std::string            group()        const;
00096     YStringTreeItem *      group_ptr()    const;
00097     std::list<std::string> changelog()    const;
00098     std::string            url()          const;
00099     std::string            os()           const;
00100     std::list<std::string> prein()        const;
00101     std::list<std::string> postin()       const;
00102     std::list<std::string> preun()        const;
00103     std::list<std::string> postun()       const;
00104     std::string            sourceloc()    const;
00105     FSize                  sourcesize()   const;
00106     FSize                  archivesize()  const;
00107     std::list<std::string> authors()      const;
00108     std::list<std::string> filenames()    const;
00109     // suse packages values
00110     std::list<std::string> recommends()   const;
00111     std::list<std::string> suggests()     const;
00112     std::string            location()     const;
00113     unsigned int           medianr()      const;
00114     std::list<std::string> keywords()     const;
00115 
00116     // from packages.DU (argument returned for convenience)
00117     PkgDu & du( PkgDu & dudata_r )        const;
00118 
00119     // YOU attributes
00120     std::string            externalUrl()  const;
00121     std::list<PkgEdition>  patchRpmBaseVersions() const;
00122     FSize                  patchRpmSize() const;
00123     bool                   forceInstall() const;
00124 
00125     // if the rpm file comes from remote
00126     // (-> package provide takes some time, use 'provide' callback
00127     bool isRemote (void) const;
00128 
00129     // physical access to the rpm file.
00130     PMError providePkgToInstall( Pathname & ) const;
00131     // physical access to the src.rpm file.
00132     PMError provideSrcPkgToInstall( Pathname & ) const;
00133     // who's providing this package ?
00134     constInstSrcPtr source() const;
00135 
00136   protected:
00137 
00142     friend class InstSrcData;
00143 
00144     PMPackageDataProviderPtr _dataProvider;
00145 
00146   public:
00147 
00148     PMPackage ( const PkgName &    name_r,
00149                 const PkgEdition & edition_r,
00150                 const PkgArch &    arch_r,
00151                 PMPackageDataProviderPtr dataProvider_r );
00152 
00153     virtual ~PMPackage();
00154 
00155   public:
00156 
00157     virtual std::ostream & dumpOn( std::ostream & str ) const;
00158 };
00159 
00161 
00162 #endif // PMPackage_h

Generated on Fri Nov 9 14:30:31 2007 for yast2-packagemanager by doxygen 1.3.6