From 57b8ad073a946216af33909088528351524549dd Mon Sep 17 00:00:00 2001 From: Jiri Srain Date: Tue, 8 Nov 2005 12:00:04 +0000 Subject: [PATCH] added possibility to modify resolvable's dependencies --- zypp/Dependencies.cc | 17 +++++++++++++++-- zypp/Resolvable.cc | 3 +++ zypp/Resolvable.h | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/zypp/Dependencies.cc b/zypp/Dependencies.cc index b08017b..8ee6f19 100644 --- a/zypp/Dependencies.cc +++ b/zypp/Dependencies.cc @@ -146,8 +146,21 @@ namespace zypp const CapSet & Dependencies::freshens() const { return _pimpl->_freshens; } - // fix it -#define ZYPP_DEPENDENCIES_COW if(_pimpl->refCount()>1){_pimpl= new detail::DependenciesImpl;} +#define ZYPP_DEPENDENCIES_COW \ +if(_pimpl->refCount()>1) \ +{ \ + detail::DependenciesImplPtr _cow_tmp = new detail::DependenciesImpl; \ + _cow_tmp->_provides = _pimpl->_provides; \ + _cow_tmp->_prerequires = _pimpl->_prerequires; \ + _cow_tmp->_requires = _pimpl->_requires; \ + _cow_tmp->_conflicts = _pimpl->_conflicts; \ + _cow_tmp->_obsoletes = _pimpl->_obsoletes; \ + _cow_tmp->_recommends = _pimpl->_recommends; \ + _cow_tmp->_suggests = _pimpl->_suggests; \ + _cow_tmp->_freshens = _pimpl->_freshens; \ + _pimpl= _cow_tmp;\ +} + void Dependencies::setProvides( const CapSet & val_r ) { ZYPP_DEPENDENCIES_COW; _pimpl->_provides = val_r; } diff --git a/zypp/Resolvable.cc b/zypp/Resolvable.cc index bf9b4cf..55d3785 100644 --- a/zypp/Resolvable.cc +++ b/zypp/Resolvable.cc @@ -51,6 +51,9 @@ namespace zypp const Dependencies & Resolvable::deps() const { return _pimpl->deps(); } + void Resolvable::setDeps( const Dependencies & val_r ) + { _pimpl->setDeps( val_r ); } + /////////////////////////////////////////////////////////////////// // // METHOD NAME : Resolvable::~Resolvable diff --git a/zypp/Resolvable.h b/zypp/Resolvable.h index 1900763..fa10371 100644 --- a/zypp/Resolvable.h +++ b/zypp/Resolvable.h @@ -57,6 +57,8 @@ namespace zypp const Arch & arch() const; /** */ const Dependencies & deps() const; + /** */ + void setDeps( const Dependencies & val_r ); private: /** Pointer to implementation */ -- 2.7.4