33int main(
int argc,
char **argv)
44 JParser<> zap(
"Auxiliary program to plot firmware versions.");
52 catch(
const exception &error) {
53 FATAL(error.what() << endl);
57 const char SEPARATOR =
'.';
59 inputFile = getFilenames(inputFile);
67 int operator()(
const string& firmware)
71 iterator p = find(this->begin(), this->end(), firmware);
73 if (p == this->end()) {
75 this->push_back(firmware);
77 p = this->rbegin().base();
96 for (
const string& i : inputFile) {
103 string::size_type pos = i.find(SEPARATOR);
105 if (pos != string::npos)
106 istringstream(i.substr(0,pos)) >> run;
120 while (in >> buffer >> location >> upi && getline(in, firmware)) {
122 string::size_type pos = location.find(SEPARATOR);
124 if (pos != string::npos) {
126 const int index = version(firmware);
130 istringstream(location.substr(0,pos)) >> string;
131 istringstream(location.substr(pos+1)) >> floor;
133 DEBUG(
FILL(4,
'0') <<
string <<
'.' <<
FILL(2,
'0') << floor <<
' ' << firmware << endl);
135 data[
JLocation(
string,floor)].push_back({run,index});
146 for (
size_t i = 0; i != version.size(); ++i) {
147 cout << setw(2) << i <<
' ' << version[i] << endl;
153 data .size() , 0 , data. size() + 0.0);
157 for (
const auto& i : data) {
161 if (i.first.getFloor() == 0) {
162 h2.GetYaxis()->SetBinLabel(iy,
MAKE_CSTRING(i.first.getString()));
165 for (
const auto& fs : i.second) {
168 const double z = fs.version;
170 h2.SetBinContent(ix, iy, z);
180 for (
const auto& i : data) {
182 const auto X = make_array(i.second.begin(), i.second.end(), &pair_type::run);
183 const auto Y = make_array(i.second.begin(), i.second.end(), &pair_type::version);
185 TGraph
g1(i.second.size(), X.data(), Y.data());