00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef PRINTABLE_H
00022 #define PRINTABLE_H
00023
00024 #ifdef HAVE_CONFIG_H
00025 #include "config.h"
00026 #endif
00027
00028 #include <iostream>
00029 #include <cstdlib>
00030 #include <stdint.h>
00031 #include <sstream>
00032
00033 #define TAB_SIZE 4
00034
00035 using namespace std;
00036
00037 namespace openikev2 {
00038
00043 class Printable {
00044 protected:
00045 static unsigned char hextable[ 16 ];
00046
00047 protected:
00054 inline static void fillHexValue( unsigned char* destination, unsigned char value, unsigned char terminator );
00055
00056 public:
00063 static string toHexString( void *pointer, uint16_t size );
00064
00073 static string toHexString( void *pointer, uint16_t size, uint16_t line_size_max, uint16_t tabs );
00074
00080 static string generateTabs( uint16_t num_tabs );
00081
00087 virtual string toString() const ;
00088
00094 virtual string toStringTab( uint8_t tabs ) const = 0;
00095
00096 };
00097 };
00098 #endif