#include <iosfwd>
-#include "zypp/base/ReferenceCounted.h"
#include "zypp/base/NonCopyable.h"
#include "zypp/base/PtrTypes.h"
+#include "zypp/APIConfig.h"
+
+#include "zypp/ZConfig.h"
+#include "zypp/ManagedFile.h"
+
+#include "zypp/ZYppCommit.h"
+#include "zypp/ResTraits.h"
+
+#include "zypp/Target.h"
+#include "zypp/Resolver.h"
+#include "zypp/KeyRing.h"
+#include "zypp/DiskUsageCounter.h"
///////////////////////////////////////////////////////////////////
namespace zypp
class ZYppFactory;
class ResPool;
- class ResStore;
+ class ResPoolProxy;
+ class KeyRing;
///////////////////////////////////////////////////////////////////
//
// CLASS NAME : ZYpp
//
- /** */
- class ZYpp : public base::ReferenceCounted, private base::NonCopyable
+ /**
+ * \todo define Exceptions
+ * ZYpp API main interface
+ */
+ class ZYpp : private base::NonCopyable
{
- public:
+ friend std::ostream & operator<<( std::ostream & str, const ZYpp & obj );
- typedef intrusive_ptr<ZYpp> Ptr;
- typedef intrusive_ptr<const ZYpp> constPtr;
+ public:
+ // can't get swig working if shared_ptr is without namespace here
+ typedef ::boost::shared_ptr<ZYpp> Ptr;
+ typedef ::boost::shared_ptr<const ZYpp> constPtr;
public:
- /** */
+
+ /**
+ * Access to the global resolvable pool.
+ * Same as \ref zypp::ResPool::instance
+ */
ResPool pool() const;
-
- void ZYpp::addResolvables (const ResStore& store);
- void ZYpp::removeResolvables (const ResStore& store);
+ /** Pool of ui::Selectable.
+ * Based on the ResPool, ui::Selectable groups ResObjetcs of
+ * same kind and name.
+ */
+ ResPoolProxy poolProxy() const;
+
+ DiskUsageCounter::MountPointSet diskUsage();
+
+ void setPartitions(const DiskUsageCounter::MountPointSet &mp);
+
+ DiskUsageCounter::MountPointSet getPartitions() const;
+
+ public:
+ /**
+ * \throws Exception
+ */
+ Target_Ptr target() const;
+
+ /** Same as \ref target but returns NULL if target is not
+ * initialized, instead of throwing.
+ */
+ Target_Ptr getTarget() const;
+
+ /**
+ * \throws Exception
+ * Just init the target, dont populate store or pool.
+ * If \c doRebuild_r is \c true, an already existing
+ * database is rebuilt (rpm --rebuilddb ).
+ */
+ void initializeTarget(const Pathname & root, bool doRebuild_r = false);
+
+ /**
+ * \throws Exception
+ */
+ void finishTarget();
+
+
+ public:
+ typedef ZYppCommitResult CommitResult;
+
+ /** Commit changes and transactions.
+ * \param \ref CommitPolicy
+ * \return \ref CommitResult
+ * \throws Exception
+ */
+ ZYppCommitResult commit( const ZYppCommitPolicy & policy_r );
+
+ /** Install a source package on the Target.
+ * \throws Exception
+ */
+ void installSrcPackage( const SrcPackage_constPtr & srcPackage_r );
+
+ /** Provides a source package on the Target.
+ * \throws Exception
+ */
+ ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r );
+
+ public:
+ /** */
+ Resolver_Ptr resolver() const;
+ KeyRing_Ptr keyRing() const;
+
+ public:
+ /** Get the path where zypp related plugins store persistent data and caches */
+ Pathname homePath() const;
+
+ /** Get the path where zypp related plugins store temp data */
+ Pathname tmpPath() const;
+
+ /** set the home, if you need to change it */
+ void setHomePath( const Pathname & path );
- protected:
- /** Dtor */
- virtual ~ZYpp();
- /** Stream output */
- virtual std::ostream & dumpOn( std::ostream & str ) const;
private:
/** Factory */
friend class ZYppFactory;
- /** */
typedef zypp_detail::ZYppImpl Impl;
typedef shared_ptr<Impl> Impl_Ptr;
/** Factory ctor */
- explicit
- ZYpp( const Impl_Ptr & impl_r );
+ explicit ZYpp( const Impl_Ptr & impl_r );
+ private:
+ /** Deleted via shared_ptr */
+ friend void ::boost::checked_delete<ZYpp>(ZYpp*); // template<class T> inline void checked_delete(T * x)
+ /** Dtor */
+ ~ZYpp();
private:
/** Pointer to implementation */
RW_pointer<Impl> _pimpl;