added Source to ResObjectImplIf interface
authorJiri Srain <jsrain@suse.cz>
Thu, 26 Jan 2006 13:23:44 +0000 (13:23 +0000)
committerJiri Srain <jsrain@suse.cz>
Thu, 26 Jan 2006 13:23:44 +0000 (13:23 +0000)
related adaptations of code

zypp/ResObject.cc
zypp/ResObject.h
zypp/detail/ResObjectImplIf.cc
zypp/detail/ResObjectImplIf.h
zypp/source/SourceImpl.cc
zypp/source/SourceImpl.h

index 91069586e5e2ca7f054551f93c3e4b79537c3b00..1b97ee2848f2310918314471db4f9520e05d4cb3 100644 (file)
@@ -10,6 +10,7 @@
  *
 */
 #include "zypp/ResObject.h"
+#include "zypp/detail/ResObjectImplIf.h"
 
 using namespace std;
 
index 878375e7e39292e889424f9bc2e25f104de235dd..86681d99e1267073bff02640d81c38ef5b562312 100644 (file)
 #define ZYPP_RESOBJECT_H
 
 #include "zypp/Resolvable.h"
-#include "zypp/detail/ResObjectImplIf.h"
+//#include "zypp/detail/ResObjectImplIf.h"
+#include "zypp/NeedAType.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
+  namespace detail {
+    class ResObjectImplIf;
+  }
 
   ///////////////////////////////////////////////////////////////////
   //
index f196919fab2d4fc11296b5fdeb5d0808ccfdc274..acfd58e86941d12cf87e076105fe9936b3644bbc 100644 (file)
@@ -10,6 +10,8 @@
  *
 */
 #include "zypp/detail/ResObjectImplIf.h"
+#include "zypp/source/SourceImpl.h"
+#include "zypp/SourceFactory.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -41,6 +43,9 @@ namespace zypp
       bool ResObjectImplIf::providesSources() const
       { return false; }
 
+      Source ResObjectImplIf::source() const
+      { return SourceFactory().createFrom(source::SourceImpl::nullimpl()); }
+
       Label ResObjectImplIf::instSrcLabel() const
       { return Label(); }
 
index 90a444cdcd11bbc585f5abc0fcb43afb77fe4378..c1497f3012942cae9bef8db23db4dfb64c3f473d 100644 (file)
@@ -21,6 +21,7 @@
 #include "zypp/Date.h"
 
 #include "zypp/NeedAType.h" // volatile include propagating type drafts
+#include "zypp/Source.h"
 
 // will be defined =0 later
 #define PURE_VIRTUAL
@@ -79,6 +80,9 @@ namespace zypp
       /** Wheter there are src.rpm available too. */
       virtual bool providesSources() const PURE_VIRTUAL;
 
+      /** Installation source which provides the package */
+      virtual Source source() const PURE_VIRTUAL;
+
       /** \name deprecated
        * \todo These should be replaced by a offering a
        * Ptr to the Source.
index 800d6374fbc2e38c93f003e89bf226dead0f714b..acea948afad2a6e360d6a146d3a4cf683b3e81a8 100644 (file)
@@ -25,6 +25,17 @@ namespace zypp
 
     IMPL_PTR_TYPE(SourceImpl);
 
+    SourceImpl_Ptr SourceImpl::_nullimpl;
+
+    /** Null implementation */
+    SourceImpl_Ptr SourceImpl::nullimpl()
+    {
+      if (_nullimpl == 0)
+       _nullimpl = new SourceImpl;
+      return _nullimpl;
+    }
+
+
     ///////////////////////////////////////////////////////////////////
     //
     // METHOD NAME : SourceImpl::SourceImpl
index 2562d4e48ec0b1a7a353f3d25b41524489b6944c..33d50aa8af394869534ba94dd044cc9031294f22 100644 (file)
@@ -45,7 +45,7 @@ namespace zypp
       friend std::ostream & operator<<( std::ostream & str, const SourceImpl & obj );
 
     public:
-      /** Ctor, FIXME it is here only because of target storage */
+      /** Ctor, FIXME it is here only because of target storage, then make it private */
       SourceImpl()
       {}
       /** Ctor. */
@@ -54,6 +54,9 @@ namespace zypp
       /** Dtor. */
       virtual ~SourceImpl();
 
+      /** Null implementation */
+      static SourceImpl_Ptr nullimpl();
+
     public:
 
       /** All resolvables provided by this source. */
@@ -91,6 +94,9 @@ namespace zypp
       Pathname _path;
       /** The source is enabled */
       bool _enabled;
+    private:
+      /** Null implementation */
+      static SourceImpl_Ptr _nullimpl;
     };
     ///////////////////////////////////////////////////////////////////