|
|
| 431 |
std::string m_name; |
431 |
std::string m_name; |
| 432 |
}; |
432 |
}; |
| 433 |
|
433 |
|
| 434 |
class ParameterLogger : public std::ostream |
434 |
class ParameterLogger |
| 435 |
{ |
435 |
{ |
| 436 |
int m_itemNumber; |
436 |
bool m_first; |
| 437 |
std::ostream &m_os; |
437 |
std::ostream &m_os; |
| 438 |
public: |
438 |
public: |
| 439 |
ParameterLogger (std::ostream &os); |
439 |
ParameterLogger (std::ostream &os); |
|
|
| 441 |
template<typename T> |
441 |
template<typename T> |
| 442 |
ParameterLogger& operator<< (T param) |
442 |
ParameterLogger& operator<< (T param) |
| 443 |
{ |
443 |
{ |
| 444 |
switch (m_itemNumber) |
444 |
switch (m_first) |
| 445 |
{ |
445 |
{ |
| 446 |
case 0: // first parameter |
446 |
case 1: // first parameter |
| 447 |
m_os << param; |
447 |
m_os << param; |
|
|
448 |
m_first = false; |
| 448 |
break; |
449 |
break; |
| 449 |
default: // parameter following a previous parameter |
450 |
default: // parameter following a previous parameter |
| 450 |
m_os << ", " << param; |
451 |
m_os << ", " << param; |
| 451 |
break; |
452 |
break; |
| 452 |
} |
453 |
} |
| 453 |
m_itemNumber++; |
|
|
| 454 |
return *this; |
454 |
return *this; |
| 455 |
} |
455 |
} |
| 456 |
}; |
456 |
}; |