untested templates rarely work.

This commit is contained in:
Mathieu Lacage
2008-02-08 00:53:40 +01:00
parent 5af34cc0da
commit bd0ca7917a

View File

@@ -82,51 +82,51 @@ MakeMemberVariableParamSpec (U T::*memberVariable, V initialValue)
ParamSpecHelperSimpleChecker<U> ());
}
template <typename T, typename U, typename V, typename CHECKER>
template <typename T, typename U, typename V, typename W, typename CHECKER>
Ptr<ParamSpec>
MakeMemberMethodParamSpecWithChecker (void (T::*setter) (U),
U (T::*getter) (void) const,
V initialValue, CHECKER checker)
V (T::*getter) (void) const,
W initialValue, CHECKER checker)
{
class MemberMethod : public ParamSpecHelper<T,V,CHECKER>
class MemberMethod : public ParamSpecHelper<T,W,CHECKER>
{
public:
MemberMethod (void (T::*setter) (U),
U (T::*getter) (void) const,
V initialValue, CHECKER checker)
: ParamSpecHelper<T,V,CHECKER> (initialValue, checker),
V (T::*getter) (void) const,
W initialValue, CHECKER checker)
: ParamSpecHelper<T,W,CHECKER> (initialValue, checker),
m_setter (setter),
m_getter (getter)
{}
private:
virtual void DoSet (T *object, const V *v) const {
virtual void DoSet (T *object, const W *v) const {
(object->*m_setter) (v->Get ());
}
virtual void DoGet (const T *object, V *v) const {
virtual void DoGet (const T *object, W *v) const {
v->Set ((object->*m_getter) ());
}
void (T::*m_setter) (U);
U (T::*m_getter) (void) const;
V (T::*m_getter) (void) const;
};
return Ptr<ParamSpec> (new MemberMethod (setter, getter, initialValue, checker), false);
}
template <typename T, typename U, typename V>
template <typename T, typename U, typename V, typename W>
Ptr<ParamSpec>
MakeMemberMethodParamSpec (void (T::*setter) (U),
U (T::*getter) (void) const,
V initialValue)
V (T::*getter) (void) const,
W initialValue)
{
return MakeMemberMethodParamSpecWithChecker (setter, getter, initialValue,
ParamSpecHelperSimpleChecker<U> ());
ParamSpecHelperSimpleChecker<V> ());
}
template <typename T, typename U, typename V, typename CHECKER>
Ptr<ParamSpec>
MakeMemberMethodGetterParamSpecWithChecker (U (T::*getter) (void) const,
V initialValue, CHECKER checker)
V initialValue, CHECKER checker)
{
class MemberMethod : public ParamSpecHelper<T,V,CHECKER>
{
@@ -152,8 +152,8 @@ Ptr<ParamSpec>
MakeMemberMethodGetterParamSpec (U (T::*getter) (void) const,
V initialValue)
{
return MakeMemberMethodParamSpecWithChecker (getter, initialValue,
ParamSpecHelperSimpleChecker<U> ());
return MakeMemberMethodGetterParamSpecWithChecker (getter, initialValue,
ParamSpecHelperSimpleChecker<U> ());
}