+ Package::maybeUnsupported
[platform/upstream/libzypp.git] / zypp / Package.h
index 048f80e..fbfa572 100644 (file)
 #ifndef ZYPP_PACKAGE_H
 #define ZYPP_PACKAGE_H
 
-#include <list>
-
-#include "zypp/base/ReferenceCounted.h"
-#include "zypp/base/NonCopyable.h"
-
-#include "zypp/Resolvable.h"
+#include "zypp/ResObject.h"
+#include "zypp/PackageKeyword.h"
+#include "zypp/Changelog.h"
+#include "zypp/VendorSupportOptions.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
-  ///////////////////////////////////////////////////////////////////
-  namespace detail
-  { /////////////////////////////////////////////////////////////////
-    DEFINE_PTR_TYPE(PackageImpl)
-    /////////////////////////////////////////////////////////////////
-  } // namespace detail
-  ///////////////////////////////////////////////////////////////////
-  DEFINE_PTR_TYPE(Package)
+
+  DEFINE_PTR_TYPE(Package);
 
   ///////////////////////////////////////////////////////////////////
   //
   //   CLASS NAME : Package
   //
-  /** */
-  class Package : public Resolvable
+  /** Package interface.
+  */
+  class Package : public ResObject
   {
   public:
-    /** Default ctor */
-    Package( detail::PackageImplPtr impl_r );
-    /** Dtor */
-    virtual ~Package();
+    typedef Package                  Self;
+    typedef ResTraits<Self>          TraitsType;
+    typedef TraitsType::PtrType      Ptr;
+    typedef TraitsType::constPtrType constPtr;
+
+  public:
+    typedef sat::ArrayAttr<PackageKeyword,IdString> Keywords;
 
   public:
 
+    /**
+     * Returns the level of supportability the vendor
+     * gives to this package.
+     * 
+     * This is one value from \ref VendorSupportOption
+     */
+    VendorSupportOption vendorSupport() const;
+
+    /**
+     * True if the vendor support for this package
+     * is unknown or explictly unsupported.
+     */
+    bool maybeUnsupported() const;
+
+    /** Get the package change log */
+    Changelog changelog() const;
+    /** */
+    std::string buildhost() const;
     /** */
-    std::string summary() const;
+    std::string distribution() const;
     /** */
-    std::list<std::string> description() const;
+    std::string license() const;
+    /** */
+    std::string packager() const;
+    /** */
+    std::string group() const;
+    /** */
+    Keywords keywords() const;
+    /** Don't ship it as class Url, because it might be
+     * in fact anything but a legal Url. */
+    std::string url() const;
+    /** Size of corresponding the source package. */
+    ByteCount sourcesize() const;
+    /** */
+    std::list<std::string> authors() const;
+    /** */
+    std::list<std::string> filenames() const;
+
+    /** Name of the source rpm this package was built from.
+     */
+    std::string sourcePkgName() const;
 
-  private:
-    /** Pointer to implementation */
-    detail::PackageImplPtr _pimpl;
+    /** Edition of the source rpm this package was built from.
+     */
+    Edition sourcePkgEdition() const;
+
+    /**
+     * Checksum the source says this package should have.
+     * \see \ref location
+     */
+    CheckSum checksum() const;
+
+    /** Location of the resolvable in the repository.
+     * \ref OnMediaLocation conatins all information required to
+     * retrieve the packge (url, checksum, etc.).
+     */
+    OnMediaLocation location() const;
+
+  protected:
+    friend Ptr make<Self>( const sat::Solvable & solvable_r );
+    /** Ctor */
+    Package( const sat::Solvable & solvable_r );
+    /** Dtor */
+    virtual ~Package();
   };
+
   ///////////////////////////////////////////////////////////////////
 
   /////////////////////////////////////////////////////////////////