This parser can be reused for other purposes. It's inspired by https://bitheap.org/cram/ Although eelco's impostor exists https://github.com/mobusoperandi/eelco, it is not very nice to depend on out of tree testing frameworks with no way to customize them. Change-Id: Ifca50177e09730182baf0ebf829c3505bbb0274a
25 lines
395 B
C++
25 lines
395 B
C++
///@file
|
|
#include <ostream>
|
|
#include <boost/io/ios_state.hpp>
|
|
|
|
namespace nix {
|
|
|
|
struct DebugChar
|
|
{
|
|
char c;
|
|
};
|
|
|
|
inline std::ostream & operator<<(std::ostream & s, DebugChar c)
|
|
{
|
|
boost::io::ios_flags_saver _ifs(s);
|
|
|
|
if (isprint(c.c)) {
|
|
s << static_cast<char>(c.c);
|
|
} else {
|
|
s << std::hex << "0x" << (static_cast<unsigned int>(c.c) & 0xff);
|
|
}
|
|
return s;
|
|
}
|
|
|
|
}
|