00001 #ifndef ROSE_DATA_CONVERSION_H
00002 #define ROSE_DATA_CONVERSION_H
00003
00004 #include <string>
00005
00009 class DataConverter {
00010 public:
00011 virtual ~DataConverter() {}
00012
00014 virtual std::string name() const = 0;
00015
00019 virtual uint8_t* encode(uint8_t* buffer, size_t* nbytes) = 0;
00020
00024 virtual uint8_t* decode(uint8_t* buffer, size_t* nbytes) = 0;
00025 };
00026
00028 class Rot13: public DataConverter {
00029 virtual ~Rot13() {}
00030 virtual std::string name() const {return "ROT-13";}
00031 virtual uint8_t* encode(uint8_t* buffer, size_t* nbytes) {
00032 for (size_t i=0; i<*nbytes; i++)
00033 buffer[i] += 13;
00034 return buffer;
00035 }
00036 virtual uint8_t* decode(uint8_t* buffer, size_t* nbytes) {
00037 for (size_t i=0; i<*nbytes; i++)
00038 buffer[i] -= 13;
00039 return buffer;
00040 }
00041 };
00042
00043 #endif