--- a/src/core/callback.h Tue Sep 05 13:13:39 2006 +0200
+++ b/src/core/callback.h Tue Sep 05 13:18:11 2006 +0200
@@ -1,4 +1,4 @@
-/* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
+/* -*- Mode:C++; c-basic-offset:4; tab-width:4; indent-tabs-mode:f -*- */
/*
* Copyright (c) 2005,2006 INRIA
* All rights reserved.
@@ -64,43 +64,43 @@
template <typename R>
class CallbackImpl<R,empty,empty,empty,empty,empty> {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (void) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (void) = 0;
};
// define CallbackImpl for 1 params
template <typename R, typename T1>
class CallbackImpl<R,T1,empty,empty,empty,empty> {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (T1) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (T1) = 0;
};
// define CallbackImpl for 2 params
template <typename R, typename T1, typename T2>
class CallbackImpl<R,T1,T2,empty,empty,empty> {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (T1, T2) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (T1, T2) = 0;
};
// define CallbackImpl for 3 params
template <typename R, typename T1, typename T2, typename T3>
class CallbackImpl<R,T1,T2,T3,empty,empty> {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (T1, T2, T3) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (T1, T2, T3) = 0;
};
// define CallbackImpl for 4 params
template <typename R, typename T1, typename T2, typename T3, typename T4>
class CallbackImpl<R,T1,T2,T3,T4,empty> {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (T1, T2, T3, T4) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (T1, T2, T3, T4) = 0;
};
// define CallbackImpl for 5 params
template <typename R, typename T1, typename T2, typename T3, typename T4, typename T5>
class CallbackImpl {
public:
- virtual ~CallbackImpl () {}
- virtual R operator() (T1, T2, T3, T4, T5) = 0;
+ virtual ~CallbackImpl () {}
+ virtual R operator() (T1, T2, T3, T4, T5) = 0;
};
@@ -108,59 +108,59 @@
template <typename T, typename R, typename T1, typename T2, typename T3, typename T4,typename T5>
class FunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
public:
- FunctorCallbackImpl (T const &functor)
- : m_functor (functor) {}
- virtual ~FunctorCallbackImpl () {}
- R operator() (void) {
- return m_functor ();
- }
- R operator() (T1 a1) {
- return m_functor (a1);
- }
- R operator() (T1 a1,T2 a2) {
- return m_functor (a1,a2);
- }
- R operator() (T1 a1,T2 a2,T3 a3) {
- return m_functor (a1,a2,a3);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
- return m_functor (a1,a2,a3,a4);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
- return m_functor (a1,a2,a3,a4,a5);
- }
+ FunctorCallbackImpl (T const &functor)
+ : m_functor (functor) {}
+ virtual ~FunctorCallbackImpl () {}
+ R operator() (void) {
+ return m_functor ();
+ }
+ R operator() (T1 a1) {
+ return m_functor (a1);
+ }
+ R operator() (T1 a1,T2 a2) {
+ return m_functor (a1,a2);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3) {
+ return m_functor (a1,a2,a3);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
+ return m_functor (a1,a2,a3,a4);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
+ return m_functor (a1,a2,a3,a4,a5);
+ }
private:
- T m_functor;
+ T m_functor;
};
// an impl for Bound Functors:
template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5>
class BoundFunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
public:
- BoundFunctorCallbackImpl (T const &functor, TX a)
- : m_functor (functor), m_a (a) {}
- virtual ~BoundFunctorCallbackImpl () {}
- R operator() (void) {
- return m_functor (m_a);
- }
- R operator() (T1 a1) {
- return m_functor (m_a,a1);
- }
- R operator() (T1 a1,T2 a2) {
- return m_functor (m_a,a1,a2);
- }
- R operator() (T1 a1,T2 a2,T3 a3) {
- return m_functor (m_a,a1,a2,a3);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
- return m_functor (m_a,a1,a2,a3,a4);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
- return m_functor (m_a,a1,a2,a3,a4,a5);
- }
+ BoundFunctorCallbackImpl (T const &functor, TX a)
+ : m_functor (functor), m_a (a) {}
+ virtual ~BoundFunctorCallbackImpl () {}
+ R operator() (void) {
+ return m_functor (m_a);
+ }
+ R operator() (T1 a1) {
+ return m_functor (m_a,a1);
+ }
+ R operator() (T1 a1,T2 a2) {
+ return m_functor (m_a,a1,a2);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3) {
+ return m_functor (m_a,a1,a2,a3);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
+ return m_functor (m_a,a1,a2,a3,a4);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
+ return m_functor (m_a,a1,a2,a3,a4,a5);
+ }
private:
- T m_functor;
- TX m_a;
+ T m_functor;
+ TX m_a;
};
@@ -168,30 +168,30 @@
template <typename OBJ_PTR, typename MEM_PTR, typename R, typename T1, typename T2, typename T3, typename T4, typename T5>
class MemPtrCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
public:
- MemPtrCallbackImpl (OBJ_PTR const&objPtr, MEM_PTR mem_ptr)
- : m_objPtr (objPtr), m_memPtr (mem_ptr) {}
- virtual ~MemPtrCallbackImpl () {}
- R operator() (void) {
- return ((*m_objPtr).*m_memPtr) ();
- }
- R operator() (T1 a1) {
- return ((*m_objPtr).*m_memPtr) (a1);
- }
- R operator() (T1 a1,T2 a2) {
- return ((*m_objPtr).*m_memPtr) (a1,a2);
- }
- R operator() (T1 a1,T2 a2,T3 a3) {
- return ((*m_objPtr).*m_memPtr) (a1,a2,a3);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
- return ((*m_objPtr).*m_memPtr) (a1,a2,a3,a4);
- }
- R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
- return ((*m_objPtr).*m_memPtr) (a1,a2,a3,a4,a5);
- }
+ MemPtrCallbackImpl (OBJ_PTR const&objPtr, MEM_PTR mem_ptr)
+ : m_objPtr (objPtr), m_memPtr (mem_ptr) {}
+ virtual ~MemPtrCallbackImpl () {}
+ R operator() (void) {
+ return ((*m_objPtr).*m_memPtr) ();
+ }
+ R operator() (T1 a1) {
+ return ((*m_objPtr).*m_memPtr) (a1);
+ }
+ R operator() (T1 a1,T2 a2) {
+ return ((*m_objPtr).*m_memPtr) (a1,a2);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3) {
+ return ((*m_objPtr).*m_memPtr) (a1,a2,a3);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
+ return ((*m_objPtr).*m_memPtr) (a1,a2,a3,a4);
+ }
+ R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
+ return ((*m_objPtr).*m_memPtr) (a1,a2,a3,a4,a5);
+ }
private:
- OBJ_PTR const m_objPtr;
- MEM_PTR m_memPtr;
+ OBJ_PTR const m_objPtr;
+ MEM_PTR m_memPtr;
};
/**
@@ -223,50 +223,50 @@
* \include samples/main-callback.cc
*/
template<typename R,
- typename T1 = empty, typename T2 = empty,
- typename T3 = empty, typename T4 = empty,
- typename T5 = empty>
+ typename T1 = empty, typename T2 = empty,
+ typename T3 = empty, typename T4 = empty,
+ typename T5 = empty>
class Callback {
public:
- template <typename FUNCTOR>
- Callback (FUNCTOR const &functor)
- : m_impl (new FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5> (functor))
- {}
+ template <typename FUNCTOR>
+ Callback (FUNCTOR const &functor)
+ : m_impl (new FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5> (functor))
+ {}
- template <typename OBJ_PTR, typename MEM_PTR>
- Callback (OBJ_PTR const &objPtr, MEM_PTR mem_ptr)
- : m_impl (new MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5> (objPtr, mem_ptr))
- {}
+ template <typename OBJ_PTR, typename MEM_PTR>
+ Callback (OBJ_PTR const &objPtr, MEM_PTR mem_ptr)
+ : m_impl (new MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5> (objPtr, mem_ptr))
+ {}
- Callback (ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5> *> const &impl)
- : m_impl (impl)
- {}
+ Callback (ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5> *> const &impl)
+ : m_impl (impl)
+ {}
- bool isNull (void) {
- return (m_impl.get () == 0)?true:false;
- }
+ bool isNull (void) {
+ return (m_impl.get () == 0)?true:false;
+ }
- Callback () : m_impl () {}
- R operator() (void) {
- return (*(m_impl.get ())) ();
- }
- R operator() (T1 a1) {
- return (*(m_impl.get ())) (a1);
- }
- R operator() (T1 a1, T2 a2) {
- return (*(m_impl).get ()) (a1,a2);
- }
- R operator() (T1 a1, T2 a2, T3 a3) {
- return (*(m_impl).get ()) (a1,a2,a3);
- }
- R operator() (T1 a1, T2 a2, T3 a3, T4 a4) {
- return (*(m_impl).get ()) (a1,a2,a3,a4);
- }
- R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5) {
- return (*(m_impl).get ()) (a1,a2,a3,a4,a5);
- }
+ Callback () : m_impl () {}
+ R operator() (void) {
+ return (*(m_impl.get ())) ();
+ }
+ R operator() (T1 a1) {
+ return (*(m_impl.get ())) (a1);
+ }
+ R operator() (T1 a1, T2 a2) {
+ return (*(m_impl).get ()) (a1,a2);
+ }
+ R operator() (T1 a1, T2 a2, T3 a3) {
+ return (*(m_impl).get ()) (a1,a2,a3);
+ }
+ R operator() (T1 a1, T2 a2, T3 a3, T4 a4) {
+ return (*(m_impl).get ()) (a1,a2,a3,a4);
+ }
+ R operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5) {
+ return (*(m_impl).get ()) (a1,a2,a3,a4,a5);
+ }
private:
- ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> m_impl;
+ ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> m_impl;
};
/**
@@ -284,7 +284,7 @@
*/
template <typename OBJ, typename R>
Callback<R> makeCallback (R (OBJ::*mem_ptr) (), OBJ *const objPtr) {
- return Callback<R> (objPtr, mem_ptr);
+ return Callback<R> (objPtr, mem_ptr);
}
/**
* \ingroup makeCallback
@@ -296,7 +296,7 @@
*/
template <typename OBJ, typename R, typename T1>
Callback<R,T1> makeCallback (R (OBJ::*mem_ptr) (T1), OBJ *const objPtr) {
- return Callback<R,T1> (objPtr, mem_ptr);
+ return Callback<R,T1> (objPtr, mem_ptr);
}
/**
* \ingroup makeCallback
@@ -308,7 +308,7 @@
*/
template <typename OBJ, typename R, typename T1, typename T2>
Callback<R,T1,T2> makeCallback (R (OBJ::*mem_ptr) (T1,T2), OBJ *const objPtr) {
- return Callback<R,T1,T2> (objPtr, mem_ptr);
+ return Callback<R,T1,T2> (objPtr, mem_ptr);
}
/**
* \ingroup makeCallback
@@ -320,7 +320,7 @@
*/
template <typename OBJ, typename R, typename T1,typename T2, typename T3>
Callback<R,T1,T2,T3> makeCallback (R (OBJ::*mem_ptr) (T1,T2,T3), OBJ *const objPtr) {
- return Callback<R,T1,T2,T3> (objPtr, mem_ptr);
+ return Callback<R,T1,T2,T3> (objPtr, mem_ptr);
}
/**
* \ingroup makeCallback
@@ -332,7 +332,7 @@
*/
template <typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4>
Callback<R,T1,T2,T3,T4> makeCallback (R (OBJ::*mem_ptr) (T1,T2,T3,T4), OBJ *const objPtr) {
- return Callback<R,T1,T2,T3,T4> (objPtr, mem_ptr);
+ return Callback<R,T1,T2,T3,T4> (objPtr, mem_ptr);
}
/**
* \ingroup makeCallback
@@ -344,7 +344,7 @@
*/
template <typename OBJ, typename R, typename T1, typename T2, typename T3, typename T4,typename T5>
Callback<R,T1,T2,T3,T4,T5> makeCallback (R (OBJ::*mem_ptr) (T1,T2,T3,T4,T5), OBJ *const objPtr) {
- return Callback<R,T1,T2,T3,T4,T5> (objPtr, mem_ptr);
+ return Callback<R,T1,T2,T3,T4,T5> (objPtr, mem_ptr);
}
/**
@@ -356,7 +356,7 @@
*/
template <typename R>
Callback<R> makeCallback (R (*fnPtr) ()) {
- return Callback<R> (fnPtr);
+ return Callback<R> (fnPtr);
}
/**
* \ingroup makeCallback
@@ -367,7 +367,7 @@
*/
template <typename R, typename T1>
Callback<R,T1> makeCallback (R (*fnPtr) (T1)) {
- return Callback<R,T1> (fnPtr);
+ return Callback<R,T1> (fnPtr);
}
/**
* \ingroup makeCallback
@@ -378,7 +378,7 @@
*/
template <typename R, typename T1, typename T2>
Callback<R,T1,T2> makeCallback (R (*fnPtr) (T1,T2)) {
- return Callback<R,T1,T2> (fnPtr);
+ return Callback<R,T1,T2> (fnPtr);
}
/**
* \ingroup makeCallback
@@ -389,7 +389,7 @@
*/
template <typename R, typename T1, typename T2,typename T3>
Callback<R,T1,T2,T3> makeCallback (R (*fnPtr) (T1,T2,T3)) {
- return Callback<R,T1,T2,T3> (fnPtr);
+ return Callback<R,T1,T2,T3> (fnPtr);
}
/**
* \ingroup makeCallback
@@ -400,7 +400,7 @@
*/
template <typename R, typename T1, typename T2,typename T3,typename T4>
Callback<R,T1,T2,T3,T4> makeCallback (R (*fnPtr) (T1,T2,T3,T4)) {
- return Callback<R,T1,T2,T3,T4> (fnPtr);
+ return Callback<R,T1,T2,T3,T4> (fnPtr);
}
/**
* \ingroup makeCallback
@@ -411,7 +411,7 @@
*/
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5>
Callback<R,T1,T2,T3,T4,T5> makeCallback (R (*fnPtr) (T1,T2,T3,T4,T5)) {
- return Callback<R,T1,T2,T3,T4,T5> (fnPtr);
+ return Callback<R,T1,T2,T3,T4,T5> (fnPtr);
}
@@ -424,7 +424,7 @@
*/
template <typename R>
Callback<R> makeNullCallback (void) {
- return Callback<R> ();
+ return Callback<R> ();
}
/**
* \ingroup makeCallback
@@ -434,7 +434,7 @@
*/
template <typename R, typename T1>
Callback<R,T1> makeNullCallback (void) {
- return Callback<R,T1> ();
+ return Callback<R,T1> ();
}
/**
* \ingroup makeCallback
@@ -444,7 +444,7 @@
*/
template <typename R, typename T1, typename T2>
Callback<R,T1,T2> makeNullCallback (void) {
- return Callback<R,T1,T2> ();
+ return Callback<R,T1,T2> ();
}
/**
* \ingroup makeCallback
@@ -454,7 +454,7 @@
*/
template <typename R, typename T1, typename T2,typename T3>
Callback<R,T1,T2,T3> makeNullCallback (void) {
- return Callback<R,T1,T2,T3> ();
+ return Callback<R,T1,T2,T3> ();
}
/**
* \ingroup makeCallback
@@ -464,7 +464,7 @@
*/
template <typename R, typename T1, typename T2,typename T3,typename T4>
Callback<R,T1,T2,T3,T4> makeNullCallback (void) {
- return Callback<R,T1,T2,T3,T4> ();
+ return Callback<R,T1,T2,T3,T4> ();
}
/**
* \ingroup makeCallback
@@ -474,41 +474,41 @@
*/
template <typename R, typename T1, typename T2,typename T3,typename T4,typename T5>
Callback<R,T1,T2,T3,T4,T5> makeNullCallback (void) {
- return Callback<R,T1,T2,T3,T4,T5> ();
+ return Callback<R,T1,T2,T3,T4,T5> ();
}
template <typename R, typename TX, typename T1>
Callback<R,T1> makeBoundCallback (R (*fnPtr) (TX,T1), TX a) {
- ReferenceList<CallbackImpl<R,T1,empty,empty,empty,empty>*> impl =
- ReferenceList<CallbackImpl<R,T1,empty,empty,empty,empty>*> (
- new BoundFunctorCallbackImpl<R (*) (TX,T1),R,TX,T1,empty,empty,empty,empty> (fnPtr, a)
- );
- return Callback<R,T1> (impl);
+ ReferenceList<CallbackImpl<R,T1,empty,empty,empty,empty>*> impl =
+ ReferenceList<CallbackImpl<R,T1,empty,empty,empty,empty>*> (
+ new BoundFunctorCallbackImpl<R (*) (TX,T1),R,TX,T1,empty,empty,empty,empty> (fnPtr, a)
+ );
+ return Callback<R,T1> (impl);
}
template <typename R, typename TX, typename T1, typename T2>
Callback<R,T1,T2> makeBoundCallback (R (*fnPtr) (TX,T1,T2), TX a) {
- ReferenceList<CallbackImpl<R,T1,T2,empty,empty,empty>*> impl =
- ReferenceList<CallbackImpl<R,T1,T2,empty,empty,empty>*> (
- new BoundFunctorCallbackImpl<R (*) (TX,T1,T2),R,TX,T1,T2,empty,empty,empty> (fnPtr, a)
- );
- return Callback<R,T1,T2> (impl);
+ ReferenceList<CallbackImpl<R,T1,T2,empty,empty,empty>*> impl =
+ ReferenceList<CallbackImpl<R,T1,T2,empty,empty,empty>*> (
+ new BoundFunctorCallbackImpl<R (*) (TX,T1,T2),R,TX,T1,T2,empty,empty,empty> (fnPtr, a)
+ );
+ return Callback<R,T1,T2> (impl);
}
template <typename R, typename TX, typename T1, typename T2,typename T3,typename T4>
Callback<R,T1,T2,T3,T4> makeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4), TX a) {
- ReferenceList<CallbackImpl<R,T1,T2,T3,T4,empty>*> impl =
- ReferenceList<CallbackImpl<R,T1,T2,T3,T4,empty>*> (
- new BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty> (fnPtr, a)
- );
- return Callback<R,T1,T2,T3,T4> (impl);
+ ReferenceList<CallbackImpl<R,T1,T2,T3,T4,empty>*> impl =
+ ReferenceList<CallbackImpl<R,T1,T2,T3,T4,empty>*> (
+ new BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty> (fnPtr, a)
+ );
+ return Callback<R,T1,T2,T3,T4> (impl);
}
template <typename R, typename TX, typename T1, typename T2,typename T3,typename T4,typename T5>
Callback<R,T1,T2,T3,T4,T5> makeBoundCallback (R (*fnPtr) (TX,T1,T2,T3,T4,T5), TX a) {
- ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> impl =
- ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> (
- new BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5> (fnPtr, a)
- );
- return Callback<R,T1,T2,T3,T4,T5> (impl);
+ ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> impl =
+ ReferenceList<CallbackImpl<R,T1,T2,T3,T4,T5>*> (
+ new BoundFunctorCallbackImpl<R (*) (TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5> (fnPtr, a)
+ );
+ return Callback<R,T1,T2,T3,T4,T5> (impl);
}