#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"
///////////////////////////////////////////////////////////////////
class ZYppFactory;
class ResPool;
class ResPoolProxy;
- class SourceFeed_Ref;
- class ResStore;
- class Locale;
+ class KeyRing;
///////////////////////////////////////////////////////////////////
//
//
/**
* \todo define Exceptions
- */
- class ZYpp : public base::ReferenceCounted, private base::NonCopyable
+ * 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:
- /** Pool of ResStatus for individual ResObjetcs. */
+ /**
+ * Access to the global resolvable pool.
+ * Same as \ref zypp::ResPool::instance
+ */
ResPool pool() const;
/** Pool of ui::Selectable.
*/
ResPoolProxy poolProxy() const;
- /** */
- //SourceFeed_Ref sourceFeed() const;
-
- void addResolvables (const ResStore& store, bool installed = false);
-
- void removeResolvables (const ResStore& store);
-
DiskUsageCounter::MountPointSet diskUsage();
void setPartitions(const DiskUsageCounter::MountPointSet &mp);
- public:
- /**
- * Tries to reset the ZYpp instance. It discards the current
- * status without too much house keeping. Might be dangerous to use.
- *
- * \throws Exception
- */
- void reset();
+ DiskUsageCounter::MountPointSet getPartitions() const;
public:
/**
*/
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
- * if commit_only == true, just init, don't populate store or pool
+ * 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 initTarget(const Pathname & root, bool commit_only = false);
+ void initializeTarget(const Pathname & root, bool doRebuild_r = false);
/**
* \throws Exception
public:
- /** Result returned from ZYpp::commit. */
- struct CommitResult;
+ typedef ZYppCommitResult CommitResult;
/** Commit changes and transactions.
- * \param medianr 0 = all/any media
- * > 0 means only the given media number
+ * \param \ref CommitPolicy
* \return \ref CommitResult
* \throws Exception
*/
- CommitResult commit( int medianr_r );
+ ZYppCommitResult commit( const ZYppCommitPolicy & policy_r );
- public:
- /** */
- Resolver_Ptr resolver() const;
+ /** Install a source package on the Target.
+ * \throws Exception
+ */
+ void installSrcPackage( const SrcPackage_constPtr & srcPackage_r );
- public:
- /** Set the preferd locale for translated labels, descriptions,
- * etc. passed to the UI.
+ /** Provides a source package on the Target.
+ * \throws Exception
*/
- void setTextLocale( const Locale & textLocale_r );
- /** */
- Locale getTextLocale() const;
+ ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r );
public:
- typedef std::set<Locale> LocaleSet;
- /** Set the requested locales.
- * Languages to be supported by the system, e.g. language specific
- * packages to be installed.
- */
- void setRequestedLocales( const LocaleSet & locales_r );
/** */
- LocaleSet getRequestedLocales() const;
-
- /**
- * Get the set of available locales.
- * This is computed from the package data so it actually
- * represents all locales packages claim to support.
- */
- LocaleSet getAvailableLocales() const;
-
- /**
- * internal use only
- **/
- void availableLocale( const Locale & locale_r );
+ 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 );
- /** Get the system architecture. */
- Arch architecture() const;
- /** Set the system architecture.
- This should be used for testing/debugging only since the Target backend
- won't be able to install incompatible packages ;-) */
- void setArchitecture( const Arch & arch );
-
- 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;