diff --git a/eo/src/eoFunctor.h b/eo/src/eoFunctor.h index e4fd3056..01d96db7 100644 --- a/eo/src/eoFunctor.h +++ b/eo/src/eoFunctor.h @@ -28,8 +28,21 @@ #include -/// Base class for functors to get a nice hierarchy diagram -class eoFunctorBase +/** Base class for functors to get a nice hierarchy diagram + + That's actually quite an understatement as it does quite a bit more than + just that. By having all functors derive from the same base class, we can + do some memory management that would otherwise be very hard. + + The memory management base class is called eoFunctorStore, and it supports + a member add() to add a pointer to a functor. When the functorStore is + destroyed, it will delete all those pointers. So beware: do not delete + the functorStore before you are done with anything that might have been allocated. + + @see eoFunctorStore + +*/ +class eoFunctorBase { public : virtual ~eoFunctorBase() {} @@ -42,7 +55,7 @@ public : struct binary_function_tag {}; }; -/** +/** Basic Function. Derive from this class when defining any procedure. It defines a result_type that can be used to determine the return type @@ -53,12 +66,12 @@ template class eoF : public eoFunctorBase { public : - + /// virtual dtor here so there is no need to define it in derived classes virtual ~eoF() {} typedef R result_type; - + /// The pure virtual function that needs to be implemented by the subclass virtual R operator()() = 0; };