Main Page Class Hierarchy Compound List File List Compound Members File Members

Action.h

Go to the documentation of this file.
00001 /*
00002 File: Action.h
00003 
00004 Function: Defines an 'Action' which can be applied to all members of
00005 a container.
00006 
00007 Author(s): Andrew Willmott
00008 
00009 Copyright: (c) 1995-2000, Andrew Willmott
00010 */
00011 
00012 #ifndef __Action__
00013 #define __Action__
00014 
00015 #include "cl/Basics.h"
00016 
00017  #define TAction Action<T>
00018 
00019 
00020 // --- Abstract Action Class ---------------------------------------------------
00021 
00022 
00023  template <class T> class Action
00024 {
00025 public: 
00026 
00027  virtual Void Start() {};
00028 virtual Void Process(T &t) = 0; // Abstract action method.
00029  virtual Void Stop() {};
00030 };
00031 
00032 
00033 // --- A demonstration Action --------------------------------------------
00034 
00035 
00036  template <class T> class StatsFinder : public Action<T>
00037 {
00038 public:
00039 
00040 Void Start();
00041 Void Process(T &t); 
00042 Void Stop();
00043 
00044  T mean;
00045  T variance;
00046 
00047 protected:
00048 
00049  Int n;
00050  T sumX;
00051  T sumXSqr;
00052 };
00053 
00054 
00055  template <class T> Void StatsFinder<T>::Start()
00056 {
00057 sumX = sumXSqr = 0;
00058 n = 0;
00059 }
00060 
00061  template <class T> Void StatsFinder<T>::Process(T &t)
00062 {
00063 sumX += t;
00064 sumXSqr += sqr(t);
00065 n++;
00066 }
00067 
00068  template <class T> Void StatsFinder<T>::Stop()
00069 {
00070 mean = sumX / n;
00071 variance = sumXSqr / n - sqr(mean);
00072 }
00073 
00074 #endif

Generated at Sat Aug 5 00:16:31 2000 for Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000

AltStyle によって変換されたページ (->オリジナル) /