00001
00002
00003
00004
00005
00006
00007 #ifndef __MUTRECORD_H__
00008 #define __MUTRECORD_H__
00009
00013 class MutabilityRecord : public Object {
00014 public:
00015
00018 static bool record;
00019
00023 static void addFloatMutability (double x) {
00024 smFloatSum+=x;
00025 smFloatSamples++;
00026 if (x<smFloatMin) smFloatMin = x;
00027 if (x>smFloatMax) smFloatMax = x;
00028 }
00032 static void addFloatVariance (double x) {
00033 smFloatVarSum+=x;
00034 smFloatVarSamples++;
00035 if (x<smFloatVarMin) smFloatVarMin = x;
00036 if (x>smFloatVarMax) smFloatVarMax = x;
00037 }
00041 static void addBoolMutability (double x) {
00042 smBoolSum+=x;
00043 smBoolSamples++;
00044 if (x<smBoolMin) smBoolMin = x;
00045 if (x>smBoolMax) smBoolMax = x;
00046 }
00049 static void reset () {
00050 smFloatVarMin=smFloatMin=smBoolMin=666;
00051 smFloatVarSum=smFloatSum=smBoolSum=0;
00052 smFloatVarMax=smFloatMax=smBoolMax=-1;
00053 smFloatVarSamples=smFloatSamples=smBoolSamples=0;
00054 }
00055
00056 static double floatMin () {return smFloatMin;}
00057 static double floatAvg () {return smFloatSum/smFloatSamples;}
00058 static double floatMax () {return smFloatMax;}
00059 static double floatVarMin () {return smFloatVarMin;}
00060 static double floatVarAvg () {return smFloatVarSum/smFloatVarSamples;}
00061 static double floatVarMax () {return smFloatVarMax;}
00062 static double boolMin () {return smBoolMin;}
00063 static double boolAvg () {return smBoolSum/smBoolSamples;}
00064 static double boolMax () {return smBoolMax;}
00065
00066 protected:
00067 static int smFloatVarSamples, smFloatSamples, smBoolSamples;
00068 static double smBoolSum, smBoolMin, smBoolMax;
00069 static double smFloatSum, smFloatMin, smFloatMax;
00070 static double smFloatVarSum, smFloatVarMin, smFloatVarMax;
00071 };
00072
00073 #endif
00074