Main Page | Namespace List | Class Hierarchy | Class List | Directories | 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 #include <y2pm/PMPackageDelta.h>
00034 
00035 class PkgDuMaster;
00036 class PkgDuSlave;
00037 class YStringTree;
00038 
00040 //
00041 //      CLASS NAME : PMPackage
00045 class PMPackage : public PMObject {
00046   REP_BODY(PMPackage);
00047 
00048   private:
00049 
00050     PkgDuSlave & _pkgdu;
00051 
00052   public:
00053 
00054     bool du_add( PkgDuMaster & master_r ) const;
00055     bool du_sub( PkgDuMaster & master_r ) const;
00056 
00057   private:
00058 
00063     virtual bool prefererCandidate() const;
00064 
00065   public:
00066 
00071     virtual std::string            summary()         const;
00072     virtual std::list<std::string> description()     const;
00073     virtual std::list<std::string> insnotify()       const;
00074     virtual std::list<std::string> delnotify()       const;
00075     virtual FSize                  size()            const;
00076     virtual bool                   providesSources() const;
00077 
00078     virtual std::string            instSrcLabel()    const;
00079     virtual Vendor                 instSrcVendor()   const;
00080     virtual unsigned               instSrcRank()     const;
00081 
00086     // splitprovides
00087     PkgSplitSet            splitprovides() const;
00088 
00089     Date                   buildtime()    const;
00090     std::string            buildhost()    const;
00091     Date                   installtime()  const;
00092     std::string            distribution() const;
00093     Vendor                 vendor()       const;
00094     std::string            license()      const;
00095     std::list<std::string> licenseToConfirm() const;
00096     std::string            packager()     const;
00097     std::string            group()        const;
00098     YStringTreeItem *      group_ptr()    const;
00099     std::list<std::string> changelog()    const;
00100     std::string            url()          const;
00101     std::string            os()           const;
00102     std::list<std::string> prein()        const;
00103     std::list<std::string> postin()       const;
00104     std::list<std::string> preun()        const;
00105     std::list<std::string> postun()       const;
00106     std::string            sourceloc()    const;
00107     FSize                  sourcesize()   const;
00108     FSize                  archivesize()  const;
00109     std::list<std::string> authors()      const;
00110     std::list<std::string> filenames()    const;
00111     // suse packages values
00112     std::list<std::string> recommends()   const;
00113     std::list<std::string> suggests()     const;
00114     std::string            location()     const;
00115     unsigned int           medianr()      const;
00116     std::list<std::string> keywords()     const;
00117     std::string            md5sum()       const;
00118 
00119     // from packages.DU (argument returned for convenience)
00120     PkgDu & du( PkgDu & dudata_r )        const;
00121 
00122     // YOU attributes
00123     std::string            externalUrl()  const;
00124     std::list<PkgEdition>  patchRpmBaseVersions() const;
00125     FSize                  patchRpmSize() const;
00126     bool                   forceInstall() const;
00127     std::string            patchRpmMD5()  const;
00128 
00129     std::list<PMPackageDelta> deltas() const;
00130 
00131     // if the rpm file comes from remote
00132     // (-> package provide takes some time, use 'provide' callback
00133     bool isRemote (void) const;
00134 
00135     // physical access to the rpm file.
00136     PMError providePkgToInstall( Pathname & ) const;
00137     // physical access to the src.rpm file.
00138     PMError provideSrcPkgToInstall( Pathname & ) const;
00139     // who's providing this package ?
00140     constInstSrcPtr source() const;
00141 
00142   protected:
00143 
00148     friend class InstSrcData;
00149 
00150     PMPackageDataProviderPtr _dataProvider;
00151 
00152   public:
00153 
00154     PMPackage ( const PkgName &    name_r,
00155                 const PkgEdition & edition_r,
00156                 const PkgArch &    arch_r,
00157                 PMPackageDataProviderPtr dataProvider_r );
00158 
00159     virtual ~PMPackage();
00160 
00161   public:
00162 
00163     virtual std::ostream & dumpOn( std::ostream & str ) const;
00164 };
00165 
00167 
00168 #endif // PMPackage_h

Generated on Mon Sep 12 21:52:13 2005 for yast2-packagemanager by  doxygen 1.4.4