/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#include "base/polygraph.h"
#include "base/Histogram.h"
#include "loganalyzers/Stex.h"
#include "loganalyzers/PhaseInfo.h"
#include "loganalyzers/HistStex.h"
#include "loganalyzers/TmSzHistFig.h"
// converts Stex to HistStex
class TmSzHistStex: public HistStex {
public:
TmSzHistStex(const Stex *stex, const String aUnit, const Histogram *aHist):
HistStex(stex->key(), stex->name(), aUnit), theHist(aHist) {}
virtual const Histogram *value(const PhaseInfo &) const {
return theHist;
}
protected:
const Histogram *theHist; // authoritative source of information
};
TmSzHistFig::TmSzHistFig(const String &aUnit): theUnit(aUnit) {
theLabelX1 = theUnit;
}
TmSzHistFig::~TmSzHistFig() {
while (theComparison.count() > 0)
delete theComparison.pop();
theStex = 0;
}
void TmSzHistFig::stats(const Stex *aStex, const PhaseInfo *aPhase) {
HistStex *core = new TmSzHistStex(aStex, theUnit, extractHist(aStex, *aPhase));
HistogramFigure::stats(core, aPhase);
// collect comparison stexes to plot
for (const Stex *stex = aStex->parent(); stex; stex = stex->parent()) {
compareWith(new TmSzHistStex(stex, theUnit, extractHist(stex, *aPhase)));
}
}
syntax highlighted by Code2HTML, v. 0.9.1