backup
authorMichael Andres <ma@suse.de>
Mon, 23 Jan 2006 18:04:17 +0000 (18:04 +0000)
committerMichael Andres <ma@suse.de>
Mon, 23 Jan 2006 18:04:17 +0000 (18:04 +0000)
17 files changed:
configure.ac
devel/devel.ma/Main.cc
devel/devel.ma/ma_test
zypp/Makefile.am
zypp/ResPool.cc
zypp/ResPool.h
zypp/ZYpp.cc [new file with mode: 0644]
zypp/ZYpp.h [new file with mode: 0644]
zypp/ZYppFactory.cc [new file with mode: 0644]
zypp/ZYppFactory.h [new file with mode: 0644]
zypp/base/Iterator.h
zypp/pool/PoolItem.cc
zypp/pool/PoolItem.h
zypp/zypp_detail/.cvsignore [new file with mode: 0644]
zypp/zypp_detail/Makefile.am [new file with mode: 0644]
zypp/zypp_detail/ZYppImpl.cc [new file with mode: 0644]
zypp/zypp_detail/ZYppImpl.h [new file with mode: 0644]

index 455e6b6..95b225a 100644 (file)
@@ -232,6 +232,7 @@ AC_OUTPUT(  \
        zypp/target/rpm/Makefile        \
        zypp/target/store/Makefile      \
        zypp/target/hal/Makefile        \
+       zypp/zypp_detail/Makefile       \
        zmd/Makefile                    \
        zmd/backend/Makefile
 
index 4b25cd2..c12c96e 100644 (file)
@@ -27,7 +27,9 @@
 
 #include <zypp/ResFilters.h>
 #include <zypp/ResStatus.h>
-#include <zypp/Bit.h>
+#include <zypp/ResPool.h>
+
+#include <zypp/ZYppFactory.h>
 
 using namespace std;
 using namespace zypp;
@@ -99,35 +101,11 @@ std::ostream & operator<<( std::ostream & str, const Rstats & obj )
 
 ///////////////////////////////////////////////////////////////////
 
-struct SelItem
-{
-  SelItem( ResObject::Ptr ptr_r )
-  : _status( 0 )
-  , _ptr( ptr_r )
-  {}
-
-  unsigned       _status;
-  ResObject::Ptr _ptr;
-
-  operator ResObject::Ptr()
-  { return _ptr; }
-
-  operator ResObject::constPtr() const
-  { return _ptr; }
-
-  ResObject::Ptr operator->()
-  { return _ptr; }
-
-  ResObject::constPtr operator->() const
-  { return _ptr; }
-
-  bool operator<( const SelItem & rhs ) const
-  { return _ptr < rhs._ptr; }
-};
-
-
 struct FakeConv : public std::unary_function<Resolvable::Ptr, void>
 {
+  typedef pool::PoolItem    ValueT;
+  typedef std::set<ValueT>  ContainerT;
+
   void operator()( Resolvable::Ptr ptr )
   {
     if ( ptr->name()[0] == 's' )
@@ -138,13 +116,9 @@ struct FakeConv : public std::unary_function<Resolvable::Ptr, void>
       {
         ptr = fakeResKind<detail::PatchImpl>( ptr );
       }
-    _store.insert( SelItem(asKind<ResObject>(ptr)) );
+    _store.insert( ValueT(asKind<ResObject>(ptr)) );
   }
 
-
-  typedef SelItem           ValueT;
-  typedef std::set<ValueT>  ContainerT;
-
   ContainerT _store;
 
   typedef ContainerT::iterator       IteratorT;
@@ -177,6 +151,8 @@ struct FakeConv : public std::unary_function<Resolvable::Ptr, void>
 
 ///////////////////////////////////////////////////////////////////
 
+
+
 /******************************************************************
 **
 **      FUNCTION NAME : main
@@ -192,17 +168,33 @@ int main( int argc, char * argv[] )
   Source src( SourceFactory().createFrom( new source::susetags::SuseTagsImpl(infile) ) );
   MIL << src.resolvables().size() << endl;
 
+  ResPool pool;
+  pool.insert( src.resolvables().begin(), src.resolvables().end() );
+  MIL << pool << endl;
+
+#if 0
   FakeConv fakeconv;
-  for_each( src.resolvables().begin(), src.resolvables().end(), functorRef(fakeconv) );
+
+  std::copy( src.resolvables().begin(), src.resolvables().end(),
+             make_function_output_iterator( functorRef(fakeconv) ) );
+
+  //for_each( src.resolvables().begin(), src.resolvables().end(),
+  //          functorRef(fakeconv) );
 
   Rstats rstats = Rstats();
   for_each( fakeconv.begin( byKind<Package>() ),
             fakeconv.end( byKind<Package>() ),
             functorRef(rstats) );
+
   MIL << rstats << endl;
 
-  SelItem it( *fakeconv.begin() );
+  FakeConv::ValueT it( *fakeconv.begin() );
   SEC << it->kind() << it->name() << endl;
+  SEC << it.status() << endl;
+#endif
+
+  ZYpp::Ptr appl( ZYppFactory().letsTest() );
+  MIL << *appl;
 
 
   INT << "===[END]============================================" << endl;
index 016be37..d1f6e33 100755 (executable)
@@ -23,7 +23,7 @@ if ! fuser $LPIPE >/dev/null; then
         ~ma/bin/sy2l.tcl $LPIPE &
 fi
 
-if ps axl | grep -q '[/]usr/sbin/iceczc'; then
+if ps axl | grep -q '[/]usr/sbin/iceccd'; then
        MAKE="make -j 15"
 else
        MAKE=make
index d906fc5..bcfa494 100644 (file)
@@ -1,7 +1,8 @@
 ## Process this file with automake to produce Makefile.in
 ## ##################################################
 
-SUBDIRS = base url media capability detail pool parser source target solver
+SUBDIRS = base url media capability detail pool parser \
+       source target solver zypp_detail
 
 ## ##################################################
 
@@ -56,7 +57,9 @@ pkginclude_HEADERS = NeedAType.h \
        CheckSum.h      \
        BaseVersion.h   \
        PatchRpm.h      \
-       DeltaRpm.h
+       DeltaRpm.h      \
+       ZYpp.h          \
+       ZYppFactory.h
 
 ## ##################################################
 
@@ -104,7 +107,9 @@ lib@PACKAGE@_la_SOURCES = \
        Digest.cc       \
        Url.cc          \
        TmpPath.cc      \
-       DiskUsage.cc
+       DiskUsage.cc    \
+       ZYpp.cc         \
+       ZYppFactory.cc
 
 lib@PACKAGE@_la_LDFLAGS =      @LIBZYPP_VERSION_INFO@
 
@@ -118,6 +123,7 @@ lib@PACKAGE@_la_LIBADD =        base/lib@PACKAGE@_base.la   \
                                url/lib@PACKAGE@_url.la         \
                                target/lib@PACKAGE@_target.la   \
                                solver/lib@PACKAGE@_solver.la   \
+                               zypp_detail/lib@PACKAGE@_zypp_detail.la \
                                \
                                -lutil
 
index 0736a67..38c65c5 100644 (file)
@@ -19,7 +19,7 @@ using std::endl;
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
-
+#if 0
   ///////////////////////////////////////////////////////////////////
   //
   //   CLASS NAME : ResPool::Impl
@@ -49,7 +49,7 @@ namespace zypp
   {
     return str << "ResPool::Impl";
   }
-
+#endif
   ///////////////////////////////////////////////////////////////////
   //
   //   CLASS NAME : ResPool
@@ -62,7 +62,8 @@ namespace zypp
   //   METHOD TYPE : Ctor
   //
   ResPool::ResPool()
-  : _pimpl( Impl::nullimpl() )
+  : _inserter( _store )
+  , _deleter( _store )
   {}
 
   ///////////////////////////////////////////////////////////////////
@@ -80,7 +81,7 @@ namespace zypp
   */
   std::ostream & operator<<( std::ostream & str, const ResPool & obj )
   {
-    return str << *obj._pimpl;
+    return str << "ResPool";
   }
 
   /////////////////////////////////////////////////////////////////
index c1f5e0b..d807453 100644 (file)
 #ifndef ZYPP_RESPOOL_H
 #define ZYPP_RESPOOL_H
 
+#include <iostream>
+#include "zypp/base/Logger.h"
+
 #include <iosfwd>
+#include <set>
 
-#include "zypp/base/PtrTypes.h"
+#include "zypp/base/Iterator.h"
+#include "zypp/pool/PoolItem.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -30,8 +35,18 @@ namespace zypp
     friend std::ostream & operator<<( std::ostream & str, const ResPool & obj );
 
   public:
-    /** Implementation  */
-    class Impl;
+    /** */
+    typedef pool::PoolItem Item;
+
+  private:
+    /** */
+    typedef std::set<Item>  ContainerT;
+
+  public:
+
+    typedef ContainerT::size_type      size_type;
+    typedef ContainerT::iterator       iterator;
+    typedef ContainerT::const_iterator const_iterator;
 
   public:
     /** Default ctor */
@@ -39,11 +54,98 @@ namespace zypp
     /** Dtor */
     ~ResPool();
 
-  public:
+  public: // qeries based on Item.
+    /**  */
+    bool empty() const
+    { return store().empty(); }
+    /**  */
+    size_type size() const
+    { return store().size(); }
+
+    /** */
+    const_iterator begin() const
+    { return store().begin(); }
+    /** */
+    const_iterator end() const
+    { return store().end(); }
+
+    /** */
+    template<class _Filter>
+      filter_iterator<_Filter, const_iterator> begin() const
+      { return make_filter_iterator( _Filter(), begin(), end() ); }
+    /** */
+    template<class _Filter>
+      filter_iterator<_Filter, const_iterator> begin( _Filter f ) const
+      { return make_filter_iterator( f, begin(), end() ); }
+
+    /** */
+    template<class _Filter>
+      filter_iterator<_Filter, const_iterator> end() const
+      { return make_filter_iterator( _Filter(), end(), end() ); }
+    /** */
+    template<class _Filter>
+      filter_iterator<_Filter, const_iterator> end( _Filter f ) const
+      { return make_filter_iterator( f, end(), end() ); }
+
+  public: // insert/erase based on ResObject::constPtr.
+    /**  */
+    void insert( ResObject::constPtr ptr_r )
+    { _inserter( ptr_r ); }
+
+    /**  */
+    template <class _InputIterator>
+      void insert( _InputIterator first_r, _InputIterator last_r )
+      { std::for_each( first_r, last_r, _inserter ); }
+
+    /**  */
+    void erase( ResObject::constPtr ptr_r )
+    { _deleter( ptr_r ); }
+
+    /**  */
+    void erase( iterator first_r, iterator last_r )
+    { std::for_each( first_r, last_r, _deleter ); }
+
+    /**  */
+    void clear()
+    { store().clear(); }
+
+  private:
+    struct Inserter
+    {
+      void operator()( ResObject::constPtr ptr_r )
+      { INT << "+++ " << *ptr_r << std::endl; }
+
+      Inserter( ContainerT & store_r )
+      : _store( store_r )
+      {}
+      ContainerT & _store;
+    };
+
+    struct Deleter
+    {
+      void operator()( ResObject::constPtr ptr_r )
+      { SEC << "--- " << *ptr_r << std::endl; }
+
+      Deleter( ContainerT & store_r )
+      : _store( store_r )
+      {}
+      ContainerT & _store;
+    };
+
+    /**  */
+    ContainerT & store()
+    { return _store; }
+    /**  */
+    const ContainerT & store() const
+    { return _store; }
 
   private:
-    /** Pointer to implementation */
-    RWCOW_pointer<Impl> _pimpl;
+    /**  */
+    ContainerT _store;
+    /**  */
+    Inserter _inserter;
+    /**  */
+    Deleter  _deleter;
   };
   ///////////////////////////////////////////////////////////////////
 
diff --git a/zypp/ZYpp.cc b/zypp/ZYpp.cc
new file mode 100644 (file)
index 0000000..6aab141
--- /dev/null
@@ -0,0 +1,62 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/ZYpp.cc
+ *
+*/
+#include <iostream>
+//#include "zypp/base/Logger.h"
+
+#include "zypp/ZYpp.h"
+#include "zypp/zypp_detail/ZYppImpl.h"
+
+using std::endl;
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   METHOD NAME : ZYpp::ZYpp
+  //   METHOD TYPE : Ctor
+  //
+  ZYpp::ZYpp( const Impl_Ptr & impl_r )
+  : _pimpl( impl_r )
+  {}
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   METHOD NAME : ZYpp::~ZYpp
+  //   METHOD TYPE : Dtor
+  //
+  ZYpp::~ZYpp()
+  {}
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   METHOD NAME : ZYpp::dumpOn
+  //   METHOD TYPE : std::ostream &
+  //
+  std::ostream & ZYpp::dumpOn( std::ostream & str ) const
+  {
+    return str << *_pimpl;
+  }
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  // Forward to Impl:
+  //
+  ///////////////////////////////////////////////////////////////////
+
+  const ResPool & ZYpp::pool() const
+  { return _pimpl->pool(); }
+
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
diff --git a/zypp/ZYpp.h b/zypp/ZYpp.h
new file mode 100644 (file)
index 0000000..42b1ba6
--- /dev/null
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/ZYpp.h
+ *
+*/
+#ifndef ZYPP_ZYPP_H
+#define ZYPP_ZYPP_H
+
+#include <iosfwd>
+
+#include "zypp/base/ReferenceCounted.h"
+#include "zypp/base/NonCopyable.h"
+#include "zypp/base/PtrTypes.h"
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+
+  namespace zypp_detail
+  {
+    class ZYppImpl;
+  }
+
+  class ZYppFactory;
+  class ResPool;
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   CLASS NAME : ZYpp
+  //
+  /** */
+  class ZYpp : public base::ReferenceCounted, private base::NonCopyable
+  {
+  public:
+
+    typedef intrusive_ptr<ZYpp>       Ptr;
+    typedef intrusive_ptr<const ZYpp> constPtr;
+
+  public:
+    /**  */
+    const ResPool & pool() const;
+
+  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:
+    /** Pointer to implementation */
+    RW_pointer<Impl> _pimpl;
+  };
+  ///////////////////////////////////////////////////////////////////
+
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_ZYPP_H
diff --git a/zypp/ZYppFactory.cc b/zypp/ZYppFactory.cc
new file mode 100644 (file)
index 0000000..fc817b6
--- /dev/null
@@ -0,0 +1,66 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/ZYppFactory.cc
+ *
+*/
+#include <iostream>
+#include "zypp/base/Logger.h"
+
+#include "zypp/ZYppFactory.h"
+#include "zypp/zypp_detail/ZYppImpl.h"
+
+using std::endl;
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   CLASS NAME : ZYppFactory
+  //
+  ///////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   METHOD NAME : ZYppFactory::ZYppFactory
+  //   METHOD TYPE : Ctor
+  //
+  ZYppFactory::ZYppFactory()
+  {}
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   METHOD NAME : ZYppFactory::~ZYppFactory
+  //   METHOD TYPE : Dtor
+  //
+  ZYppFactory::~ZYppFactory()
+  {}
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  ZYpp::Ptr ZYppFactory::letsTest() const
+  {
+    static ZYpp::Ptr _instance( new ZYpp( ZYpp::Impl_Ptr(new ZYpp::Impl) ) );
+    return _instance;
+  }
+
+  /******************************************************************
+  **
+  **   FUNCTION NAME : operator<<
+  **   FUNCTION TYPE : std::ostream &
+  */
+  std::ostream & operator<<( std::ostream & str, const ZYppFactory & obj )
+  {
+    return str << "ZYppFactory";
+  }
+
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
diff --git a/zypp/ZYppFactory.h b/zypp/ZYppFactory.h
new file mode 100644 (file)
index 0000000..5f3f88e
--- /dev/null
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/ZYppFactory.h
+ *
+*/
+#ifndef ZYPP_ZYPPFACTORY_H
+#define ZYPP_ZYPPFACTORY_H
+
+#include <iosfwd>
+
+#include "zypp/ZYpp.h"
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////////////////////////////////////////
+  //
+  //   CLASS NAME : ZYppFactory
+  //
+  /** ZYpp factory class (Singleton)
+  */
+  class ZYppFactory
+  {
+    friend std::ostream & operator<<( std::ostream & str, const ZYppFactory & obj );
+
+  public:
+    /** Default ctor */
+    ZYppFactory();
+    /** Dtor */
+    ~ZYppFactory();
+
+  public:
+    /** Dummy */
+    ZYpp::Ptr letsTest() const;
+  };
+  ///////////////////////////////////////////////////////////////////
+
+  /** \relates ZYppFactory Stream output */
+  std::ostream & operator<<( std::ostream & str, const ZYppFactory & obj );
+
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_ZYPPFACTORY_H
index 04b2889..a978dcd 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <boost/iterator/filter_iterator.hpp>
 #include <boost/iterator/transform_iterator.hpp>
+#include <boost/function_output_iterator.hpp>
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -106,9 +107,26 @@ namespace zypp
    *   make_transform_iterator(Iterator it);
    * \endcode
   */
-  using boost::transform_iterator;
+  using boost::function_output_iterator;
   using boost::make_transform_iterator;
 
+  /** \class function_output_iterator
+   * An output iterator wrapping a unary function object; each time an
+   * element is written into the dereferenced iterator, it is passed as
+   * a parameter to the function object.
+   *
+   * Provides boost::function_output_iterator and boost::make_function_output_iterator
+   * convenience function.
+   * \see http://www.boost.org/libs/iterator/doc/function_output_iterator.html
+   * \code
+   * template <class UnaryFunction>
+   *   function_output_iterator<UnaryFunction>
+   *   make_function_output_iterator(const UnaryFunction& f = UnaryFunction());
+   * \endcode
+  */
+  using boost::function_output_iterator;
+  using boost::make_function_output_iterator;
+
   //@}
   /////////////////////////////////////////////////////////////////
 } // namespace zypp
index c347185..6d2da20 100644 (file)
@@ -94,6 +94,12 @@ namespace zypp
     PoolItem::~PoolItem()
     {}
 
+    ///////////////////////////////////////////////////////////////////
+    //
+    // Forward to Impl:
+    //
+    ///////////////////////////////////////////////////////////////////
+
     ResStatus & PoolItem::status() const
     { return _pimpl->status(); }
 
index 9453896..a4386be 100644 (file)
@@ -30,7 +30,7 @@ namespace zypp
     //
     // CLASS NAME : PoolItem
     //
-    /**
+    /** Connects ResObject and ResStatus.
     */
     class PoolItem
     {
diff --git a/zypp/zypp_detail/.cvsignore b/zypp/zypp_detail/.cvsignore
new file mode 100644 (file)
index 0000000..5c94a2f
--- /dev/null
@@ -0,0 +1,8 @@
+Makefile.in
+Makefile
+.deps
+.libs
+*.o
+*.lo
+*.a
+*.la
diff --git a/zypp/zypp_detail/Makefile.am b/zypp/zypp_detail/Makefile.am
new file mode 100644 (file)
index 0000000..1734a7c
--- /dev/null
@@ -0,0 +1,22 @@
+## Process this file with automake to produce Makefile.in
+## ##################################################
+
+SUBDIRS =
+
+## ##################################################
+
+baseincludedir = $(pkgincludedir)/zypp_detail
+
+baseinclude_HEADERS =  \
+       ZYppImpl.h
+
+noinst_LTLIBRARIES =   lib@PACKAGE@_zypp_detail.la
+
+## ##################################################
+
+lib@PACKAGE@_zypp_detail_la_SOURCES =  \
+       ZYppImpl.cc
+
+# lib@PACKAGE@_zypp_detail_la_LIBADD =
+
+## ##################################################
diff --git a/zypp/zypp_detail/ZYppImpl.cc b/zypp/zypp_detail/ZYppImpl.cc
new file mode 100644 (file)
index 0000000..6e3636b
--- /dev/null
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/zypp_detail/ZYppImpl.cc
+ *
+*/
+#include <iostream>
+//#include "zypp/base/Logger.h"
+
+#include "zypp/zypp_detail/ZYppImpl.h"
+
+using std::endl;
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////
+  namespace zypp_detail
+  { /////////////////////////////////////////////////////////////////
+
+    ///////////////////////////////////////////////////////////////////
+    //
+    // METHOD NAME : ZYppImpl::ZYppImpl
+    // METHOD TYPE : Constructor
+    //
+    ZYppImpl::ZYppImpl()
+    {
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    //
+    // METHOD NAME : ZYppImpl::~ZYppImpl
+    // METHOD TYPE : Destructor
+    //
+    ZYppImpl::~ZYppImpl()
+    {
+    }
+
+    /******************************************************************
+     **
+     **        FUNCTION NAME : operator<<
+     **        FUNCTION TYPE : std::ostream &
+    */
+    std::ostream & operator<<( std::ostream & str, const ZYppImpl & obj )
+    {
+      return str << "ZYppImpl";
+    }
+
+    /////////////////////////////////////////////////////////////////
+  } // namespace zypp_detail
+  ///////////////////////////////////////////////////////////////////
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
diff --git a/zypp/zypp_detail/ZYppImpl.h b/zypp/zypp_detail/ZYppImpl.h
new file mode 100644 (file)
index 0000000..a0b9b1f
--- /dev/null
@@ -0,0 +1,61 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/zypp_detail/ZYppImpl.h
+ *
+*/
+#ifndef ZYPP_ZYPP_DETAIL_ZYPPIMPL_H
+#define ZYPP_ZYPP_DETAIL_ZYPPIMPL_H
+
+#include <iosfwd>
+
+#include "zypp/ResPool.h"
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{ /////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////
+  namespace zypp_detail
+  { /////////////////////////////////////////////////////////////////
+
+    ///////////////////////////////////////////////////////////////////
+    //
+    // CLASS NAME : ZYppImpl
+    //
+    /** */
+    class ZYppImpl
+    {
+      friend std::ostream & operator<<( std::ostream & str, const ZYppImpl & obj );
+
+    public:
+      /** Default ctor */
+      ZYppImpl();
+      /** Dtor */
+      ~ZYppImpl();
+
+    public:
+      /** */
+      const ResPool & pool() const
+      { return _pool; }
+
+    private:
+      /** */
+      ResPool _pool;
+    };
+    ///////////////////////////////////////////////////////////////////
+
+    /** \relates ZYppImpl Stream output */
+    std::ostream & operator<<( std::ostream & str, const ZYppImpl & obj );
+
+    /////////////////////////////////////////////////////////////////
+  } // namespace zypp_detail
+  ///////////////////////////////////////////////////////////////////
+  /////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_ZYPP_DETAIL_ZYPPIMPL_H