|
|
| 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 |
if (m_first) |
| 445 |
{ |
445 |
{ |
| 446 |
case 0: // first parameter |
|
|
| 447 |
m_os << param; |
446 |
m_os << param; |
| 448 |
break; |
447 |
m_first = false; |
| 449 |
default: // parameter following a previous parameter |
448 |
} |
|
|
449 |
else |
| 450 |
{ |
| 450 |
m_os << ", " << param; |
451 |
m_os << ", " << param; |
| 451 |
break; |
|
|
| 452 |
} |
452 |
} |
| 453 |
m_itemNumber++; |
|
|
| 454 |
return *this; |
453 |
return *this; |
| 455 |
} |
454 |
} |
| 456 |
}; |
455 |
}; |