00001 #ifndef _I_BIN_H_
00002 #define _I_BIN_H_ 1
00003
00004 #include "HTL/H_Types.h"
00005
00007 class I_Bin
00008 {
00009 public:
00011 H_IID_IMPLEMENT( I_Bin );
00012 typedef I_Bin Like_Current;
00013 protected:
00015 I_Bin() {}
00017 virtual ~I_Bin() {}
00018 public:
00020 virtual double value( Index i = 0 ) const = 0;
00021
00023 virtual double error( Index i = 0 ) const = 0;
00024
00026 virtual Size count() const = 0;
00027
00029 virtual void set_value( double other, Index i = 0 ) = 0;
00030
00032 virtual void set_error( double other, Index i = 0 ) = 0;
00033
00035 virtual void set_count( Size other ) = 0;
00036
00042 virtual double center( Index = 0 ) const { return 0.5; }
00043
00045 virtual void set_center( double ) { }
00046
00051 virtual int offset( Index = 0 ) const { return 1; }
00053 virtual void reset() = 0;
00054 public:
00056 virtual void make( const Like_Current &other ) = 0;
00058 virtual void add( const Like_Current &other ) = 0;
00060 virtual void sub( const Like_Current &other ) = 0;
00062 virtual void mul( const Like_Current &other ) = 0;
00064 virtual void div( const Like_Current &other ) = 0;
00066 virtual void binomial_div( const Like_Current &other ) = 0;
00068 virtual void add( double x ) = 0;
00070 virtual void sub( double x ) = 0;
00072 virtual void mul( double x ) = 0;
00074 virtual void div( double x ) = 0;
00075 };
00076
00077 #endif // _I_BIN_H
00078