remove injected friends. Thanks to SIGOURE Benoit

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@765 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2006-10-18 13:55:32 +00:00
parent ae6396a4cd
commit 4c6d670e3d
2 changed files with 66 additions and 24 deletions

View file

@ -108,15 +108,15 @@ namespace Loki
PrototypeFactoryUnit(AbstractProduct* p = 0)
: pPrototype_(p)
{}
friend void DoGetPrototype(const PrototypeFactoryUnit& me,
AbstractProduct*& pPrototype)
{ pPrototype = me.pPrototype_; }
friend void DoSetPrototype(PrototypeFactoryUnit& me,
AbstractProduct* pObj)
{ me.pPrototype_ = pObj; }
template <class CP, class Base1>
friend void DoGetPrototype(const PrototypeFactoryUnit<CP, Base1>& me,
typename Base1::ProductList::Head*& pPrototype);
template <class CP, class Base1>
friend void DoSetPrototype(PrototypeFactoryUnit<CP, Base1>& me,
typename Base1::ProductList::Head* pObj);
template <class U>
void GetPrototype(U*& p)
{ return DoGetPrototype(*this, p); }
@ -135,6 +135,16 @@ namespace Loki
AbstractProduct* pPrototype_;
};
template <class CP, class Base>
inline void DoGetPrototype(const PrototypeFactoryUnit<CP, Base>& me,
typename Base::ProductList::Head*& pPrototype)
{ pPrototype = me.pPrototype_; }
template <class CP, class Base>
inline void DoSetPrototype(PrototypeFactoryUnit<CP, Base>& me,
typename Base::ProductList::Head* pObj)
{ me.pPrototype_ = pObj; }
////////////////////////////////////////////////////////////////////////////////
// class template ConcreteFactory
// Implements an AbstractFactory interface