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:
parent
ae6396a4cd
commit
4c6d670e3d
2 changed files with 66 additions and 24 deletions
|
@ -108,15 +108,15 @@ namespace Loki
|
||||||
PrototypeFactoryUnit(AbstractProduct* p = 0)
|
PrototypeFactoryUnit(AbstractProduct* p = 0)
|
||||||
: pPrototype_(p)
|
: pPrototype_(p)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
friend void DoGetPrototype(const PrototypeFactoryUnit& me,
|
template <class CP, class Base1>
|
||||||
AbstractProduct*& pPrototype)
|
friend void DoGetPrototype(const PrototypeFactoryUnit<CP, Base1>& me,
|
||||||
{ pPrototype = me.pPrototype_; }
|
typename Base1::ProductList::Head*& pPrototype);
|
||||||
|
|
||||||
friend void DoSetPrototype(PrototypeFactoryUnit& me,
|
template <class CP, class Base1>
|
||||||
AbstractProduct* pObj)
|
friend void DoSetPrototype(PrototypeFactoryUnit<CP, Base1>& me,
|
||||||
{ me.pPrototype_ = pObj; }
|
typename Base1::ProductList::Head* pObj);
|
||||||
|
|
||||||
template <class U>
|
template <class U>
|
||||||
void GetPrototype(U*& p)
|
void GetPrototype(U*& p)
|
||||||
{ return DoGetPrototype(*this, p); }
|
{ return DoGetPrototype(*this, p); }
|
||||||
|
@ -135,6 +135,16 @@ namespace Loki
|
||||||
AbstractProduct* pPrototype_;
|
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
|
// class template ConcreteFactory
|
||||||
// Implements an AbstractFactory interface
|
// Implements an AbstractFactory interface
|
||||||
|
|
|
@ -74,6 +74,7 @@ namespace Loki
|
||||||
// * iterators are random
|
// * iterators are random
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
class K,
|
class K,
|
||||||
|
@ -288,33 +289,64 @@ namespace Loki
|
||||||
const MyCompare& me = *this;
|
const MyCompare& me = *this;
|
||||||
return std::equal_range(begin(), end(), k, me);
|
return std::equal_range(begin(), end(), k, me);
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator==(const AssocVector& lhs, const AssocVector& rhs)
|
template <class K1, class V1, class C1, class A1>
|
||||||
{
|
friend bool operator==(const AssocVector<K1, V1, C1, A1>& lhs,
|
||||||
const Base& me = lhs;
|
const AssocVector<K1, V1, C1, A1>& rhs);
|
||||||
return me == rhs;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator<(const AssocVector& rhs) const
|
bool operator<(const AssocVector& rhs) const
|
||||||
{
|
{
|
||||||
const Base& me = *this;
|
const Base& me = *this;
|
||||||
const Base& yo = rhs;
|
const Base& yo = rhs;
|
||||||
return me < yo;
|
return me < yo;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator!=(const AssocVector& lhs, const AssocVector& rhs)
|
template <class K1, class V1, class C1, class A1>
|
||||||
{ return !(lhs == rhs); }
|
friend bool operator!=(const AssocVector<K1, V1, C1, A1>& lhs,
|
||||||
|
const AssocVector<K1, V1, C1, A1>& rhs);
|
||||||
|
|
||||||
friend bool operator>(const AssocVector& lhs, const AssocVector& rhs)
|
template <class K1, class V1, class C1, class A1>
|
||||||
{ return rhs < lhs; }
|
friend bool operator>(const AssocVector<K1, V1, C1, A1>& lhs,
|
||||||
|
const AssocVector<K1, V1, C1, A1>& rhs);
|
||||||
|
|
||||||
friend bool operator>=(const AssocVector& lhs, const AssocVector& rhs)
|
template <class K1, class V1, class C1, class A1>
|
||||||
{ return !(lhs < rhs); }
|
friend bool operator>=(const AssocVector<K1, V1, C1, A1>& lhs,
|
||||||
|
const AssocVector<K1, V1, C1, A1>& rhs);
|
||||||
|
|
||||||
friend bool operator<=(const AssocVector& lhs, const AssocVector& rhs)
|
template <class K1, class V1, class C1, class A1>
|
||||||
{ return !(rhs < lhs); }
|
friend bool operator<=(const AssocVector<K1, V1, C1, A1>& lhs,
|
||||||
|
const AssocVector<K1, V1, C1, A1>& rhs);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <class K, class V, class C, class A>
|
||||||
|
inline bool operator==(const AssocVector<K, V, C, A>& lhs,
|
||||||
|
const AssocVector<K, V, C, A>& rhs)
|
||||||
|
{
|
||||||
|
const std::vector<std::pair<K, V>, A>& me = lhs;
|
||||||
|
return me == rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class K, class V, class C, class A>
|
||||||
|
inline bool operator!=(const AssocVector<K, V, C, A>& lhs,
|
||||||
|
const AssocVector<K, V, C, A>& rhs)
|
||||||
|
{ return !(lhs == rhs); }
|
||||||
|
|
||||||
|
template <class K, class V, class C, class A>
|
||||||
|
inline bool operator>(const AssocVector<K, V, C, A>& lhs,
|
||||||
|
const AssocVector<K, V, C, A>& rhs)
|
||||||
|
{ return rhs < lhs; }
|
||||||
|
|
||||||
|
template <class K, class V, class C, class A>
|
||||||
|
inline bool operator>=(const AssocVector<K, V, C, A>& lhs,
|
||||||
|
const AssocVector<K, V, C, A>& rhs)
|
||||||
|
{ return !(lhs < rhs); }
|
||||||
|
|
||||||
|
template <class K, class V, class C, class A>
|
||||||
|
inline bool operator<=(const AssocVector<K, V, C, A>& lhs,
|
||||||
|
const AssocVector<K, V, C, A>& rhs)
|
||||||
|
{ return !(rhs < lhs); }
|
||||||
|
|
||||||
|
|
||||||
// specialized algorithms:
|
// specialized algorithms:
|
||||||
template <class K, class V, class C, class A>
|
template <class K, class V, class C, class A>
|
||||||
void swap(AssocVector<K, V, C, A>& lhs, AssocVector<K, V, C, A>& rhs)
|
void swap(AssocVector<K, V, C, A>& lhs, AssocVector<K, V, C, A>& rhs)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue