CARMA C++
ByteStringifier.h
1 #ifndef CARMA_UTIL_BYTE_STRINGIFIER_H
2 #define CARMA_UTIL_BYTE_STRINGIFIER_H
3 
4 
6 
7 
8 namespace carma {
9 namespace util {
10 
11 
12 class ByteStringifier {
13  public:
14 
15  enum {
16  MAX_CHARS_PER_VALUE = 3
17  };
18 
19  explicit ByteStringifier( );
20 
21  virtual ~ByteStringifier( );
22 
23  ::size_t stringifyByte( unsigned char v,
24  char * buffer,
25  ::size_t bufferMaxCount ) const;
26 
27  private:
28  // No copying
29  ByteStringifier( const ByteStringifier & rhs );
30  ByteStringifier & operator=( const ByteStringifier & rhs );
31 
32  const char * const table_;
33 };
34 
35 
36 } // namespace carma::util
37 } // namespace carma
38 
39 
40 inline ::size_t
41 carma::util::ByteStringifier::stringifyByte(
42  const unsigned char v,
43  char * const buffer,
44  const ::size_t bufferMaxCount ) const
45 {
46  if ( (bufferMaxCount < MAX_CHARS_PER_VALUE) || (MAX_CHARS_PER_VALUE < 3) )
47  throw CARMA_ERROR( "Buffer too small" );
48 
49  const unsigned int i = static_cast< unsigned int >( v ) * 4U;
50 
51  buffer[ 0 ] = table_[ i + 0 ];
52  buffer[ 1 ] = table_[ i + 1 ];
53  buffer[ 2 ] = table_[ i + 2 ];
54 
55  return 3;
56 }
57 
58 
59 #endif
Exception class for errors.
#define CARMA_ERROR(y)
Trick to get the file name and line number passed to the exception handler.