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