Main Page   Class Overview   Pixels   Images   Geometry   Quick Index  

HxNgbMean.h

00001 /*
00002  *  Copyright (c) 2000, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll                (poll@wins.uva.nl)
00007  */
00008 
00009 #ifndef HxNgbMean_h
00010 #define HxNgbMean_h
00011 
00012 #include "HxClassName.h"
00013 #include "HxSizes.h"
00014 #include "HxNgbOpCategory.h"
00015 #include "HxTagList.h"
00016 
00017 
00018 template<class ResultT, class ArithT>
00019 class HxNgbMean
00020 {
00021 public:
00022 
00023     typedef HxNgbLoopTag        IteratorCategory;
00024     typedef HxNgb1PhaseTag      PhaseCategory;
00025     typedef HxNgbTransInVarTag  TransVarianceCategory;
00026 
00027 
00028                             HxNgbMean(HxTagList& tags);
00029 
00030     HxSizes                 size();
00031     void                    init();
00032 
00033     void                    next(int, int, ArithT value);
00034     void                    next(int, int, int, ArithT value);
00035     ArithT                  result() const;
00036 
00037     static HxString         className();
00038 
00039 private:
00040     ResultT                 _sum;
00041     int                     _cnt;
00042     HxSizes                 _size;
00043 };
00044 
00045 template<class ResultT, class ArithT>
00046 inline HxString
00047 HxNgbMean<ResultT, ArithT>::className()
00048 {
00049     static HxString s("mean");
00050     return s;
00051 }
00052 
00053 template<class ResultT, class ArithT>
00054 inline void
00055 HxNgbMean<ResultT, ArithT>::init()
00056 {
00057     _cnt = 0;
00058     _sum = HxScalarInt(0);
00059 }
00060 
00061 template<class ResultT, class ArithT>
00062 inline void
00063 HxNgbMean<ResultT, ArithT>::next(int, int, ArithT value)
00064 {
00065     _cnt++;
00066     _sum += ResultT(value);
00067 }
00068 
00069 template<class ResultT, class ArithT>
00070 inline void
00071 HxNgbMean<ResultT, ArithT>::next(int, int, int, ArithT value)
00072 {
00073     _cnt++;
00074     _sum += ResultT(value);
00075 }
00076 
00077 template<class ResultT, class ArithT>
00078 inline HxSizes  
00079 HxNgbMean<ResultT, ArithT>::size()
00080 {
00081     return _size;
00082 }
00083 
00084 template<class ResultT, class ArithT>
00085 inline ArithT
00086 HxNgbMean<ResultT, ArithT>::result() const
00087 {
00088     return _sum / ResultT(HxScalarInt(_cnt));
00089 }
00090 
00091 #ifdef INC_TEMPLATE_SRC
00092 #include "HxNgbMean.c"
00093 #endif
00094 
00095 #endif

Generated on Tue Jan 8 13:59:15 2002 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001