#include <iosfwd>
+#include "zypp/base/ReferenceCounted.h"
#include "zypp/base/NonCopyable.h"
#include "zypp/base/PtrTypes.h"
#include "zypp/APIConfig.h"
* \todo define Exceptions
* ZYpp API main interface
*/
- class ZYpp : private base::NonCopyable
+ class ZYpp : public base::ReferenceCounted, private base::NonCopyable
{
- friend std::ostream & operator<<( std::ostream & str, const ZYpp & obj );
-
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;
+
+ typedef intrusive_ptr<ZYpp> Ptr;
+ typedef intrusive_ptr<const ZYpp> constPtr;
public:
/** 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 );
- private:
- /** Deleted via shared_ptr */
- friend void ::boost::checked_delete<ZYpp>(ZYpp*); // template<class T> inline void checked_delete(T * x)
- /** Dtor */
- ~ZYpp();
+ explicit
+ ZYpp( const Impl_Ptr & impl_r );
private:
/** Pointer to implementation */
RW_pointer<Impl> _pimpl;