00001 #ifndef LOGCOUNTER_H
00002 #define LOGCOUNTER_H
00003
00004 #include <math.h>
00005
00006 class LogCounter
00007 {
00008 public:
00009
00010 LogCounter(double scale=10) { fCount = 0; fCurrentBreak=-1; fNextBreak = 0; fScale = scale; Test(); };
00011 bool Increment(void) { fCount++; return Test(); };
00012 bool Test(void);
00013
00014 int fCount;
00015 int fCurrentBreak;
00016 int fNextBreak;
00017 double fScale;
00018 };
00019
00020 bool LogCounter::Test(void)
00021 {
00022 if(fCount==fCurrentBreak) return true;
00023 if(fCount>=fNextBreak) {
00024 fCurrentBreak = fNextBreak;
00025 if(fCount==0) fNextBreak = 1;
00026 else fNextBreak = (int) pow(10,log10((double)fCount)+0.1);
00027 return true;
00028 }
00029 return false;
00030 }
00031 #endif