/** \file zypp/ResObject.cc
*
*/
+
#include "zypp/ResObject.h"
-#include "zypp/source/SourceImpl.h"
-#include "zypp/detail/ResObjectImplIf.h"
+using namespace zypp;
using namespace std;
///////////////////////////////////////////////////////////////////
namespace zypp
-{ /////////////////////////////////////////////////////////////////
+{
+
+ IMPL_PTR_TYPE(ResObject);
- ///////////////////////////////////////////////////////////////////
- //
- // METHOD NAME : ResObject::ResObject
- // METHOD TYPE : Ctor
- //
- ResObject::ResObject( const Kind & kind_r,
- const NVRAD & nvrad_r )
- : Resolvable( kind_r, nvrad_r )
+ ResObject::ResObject( const sat::Solvable & solvable_r )
+ : Resolvable( solvable_r )
{}
- ///////////////////////////////////////////////////////////////////
- //
- // METHOD NAME : ResObject::~ResObject
- // METHOD TYPE : Dtor
- //
ResObject::~ResObject()
{}
- ///////////////////////////////////////////////////////////////////
- //
- // ResObject interface forwarded to implementation
- //
- ///////////////////////////////////////////////////////////////////
-
- Text ResObject::summary() const
- { return pimpl().summary().text(); }
-
- Text ResObject::description() const
- { return pimpl().description().text(); }
-
- Text ResObject::insnotify() const
- { return pimpl().insnotify(); }
-
- Text ResObject::delnotify() const
- { return pimpl().delnotify(); }
+ std::ostream & ResObject::dumpOn( std::ostream & str ) const
+ {
+ return Resolvable::dumpOn( str );
+ }
- ByteCount ResObject::size() const
- { return pimpl().size(); }
-
- Source_Ref ResObject::source() const
- { return pimpl().source(); }
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
- ZmdId ResObject::zmdid () const
- { return pimpl().zmdid(); }
+#include "zypp/ResObjects.h"
- /////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+ ResObject::Ptr makeResObject( const sat::Solvable & solvable_r )
+ {
+ if ( ! solvable_r )
+ return 0;
+
+ ResKind kind( solvable_r.kind() );
+#define OUTS(X) if ( kind == ResTraits<X>::kind ) return make<X>( solvable_r );
+ OUTS( Package );
+ OUTS( Patch );
+ OUTS( Pattern );
+ OUTS( Product );
+ OUTS( SrcPackage );
+ OUTS( Application );
+#undef OUTS
+ // unknow => return a plain ResObject
+ return new ResObject( solvable_r );
+ }
} // namespace zypp
///////////////////////////////////////////////////////////////////