00001 #ifndef _HISTO_OP_H_
00002 #define _HISTO_OP_H_ 1
00003
00004 class binHistoOp {
00005 public:
00006 virtual void eval ( I_Bin &lhs, I_Bin &rhs) = 0;
00007 virtual ~binHistoOp() {};
00008 };
00009
00010 class binHistoAdd : public binHistoOp {
00011 public:
00012 virtual void eval ( I_Bin &lhs, I_Bin &rhs) {
00013 lhs.add( rhs );
00014 }
00015 };
00016
00017 class binHistoSub : public binHistoOp {
00018 public:
00019 virtual void eval ( I_Bin &lhs, I_Bin &rhs) {
00020 lhs.sub( rhs );
00021 }
00022 };
00023
00024 class binHistoMul : public binHistoOp {
00025 public:
00026 virtual void eval ( I_Bin &lhs, I_Bin &rhs) {
00027 lhs.mul( rhs );
00028 }
00029 };
00030
00031 class binHistoDiv : public binHistoOp {
00032 public:
00033 virtual void eval ( I_Bin &lhs, I_Bin &rhs) {
00034 lhs.div( rhs );
00035 }
00036 };
00037
00038 class binHistoBinDiv : public binHistoOp {
00039 public:
00040 virtual void eval ( I_Bin &lhs, I_Bin &rhs) {
00041 lhs.binomial_div( rhs );
00042 }
00043 };
00044
00045 class binScalarOp {
00046 public:
00047 virtual void eval ( I_Bin &lhs, double value ) = 0;
00048 virtual ~binScalarOp() {};
00049 };
00050
00051 class binScalarAdd : public binScalarOp {
00052 public:
00053 virtual void eval ( I_Bin &lhs, double value ) {
00054 lhs.add( value );
00055 }
00056 };
00057
00058 class binScalarSub : public binScalarOp {
00059 public:
00060 virtual void eval ( I_Bin &lhs, double value ) {
00061 lhs.sub( value );
00062 }
00063 };
00064
00065 class binScalarMul : public binScalarOp {
00066 public:
00067 virtual void eval ( I_Bin &lhs, double value ) {
00068 lhs.mul( value );
00069 }
00070 };
00071
00072 class binScalarDiv : public binScalarOp {
00073 public:
00074 virtual void eval ( I_Bin &lhs, double value ) {
00075 lhs.div( value );
00076 }
00077 };
00078
00079 #endif // _HISTO_OP_H_
00080
00081
00082