IBR-DTNSuite  0.8
ibrcommon/ibrcommon/data/Base64.h
Go to the documentation of this file.
00001 /*
00002  * Base64.h
00003  *
00004  *  Created on: 08.11.2011
00005  *      Author: morgenro
00006  */
00007 
00008 #ifndef BASE64_H_
00009 #define BASE64_H_
00010 
00011 #include <stdlib.h>
00012 #include <stdint.h>
00013 
00014 namespace ibrcommon
00015 {
00016         class Base64
00017         {
00018         public:
00019                 static const char encodeCharacterTable[];
00020                 static const char decodeCharacterTable[];
00021 
00022                 static const int EQUAL_CHAR = -2;
00023                 static const int UNKOWN_CHAR = -1;
00024 
00025                 static int getCharType(int val);
00026 
00032                 static size_t getLength(size_t length);
00033 
00034                 class Group
00035                 {
00036                 public:
00037                         Group();
00038                         virtual ~Group();
00039 
00040                         void zero();
00041                         uint8_t get_0() const;
00042                         uint8_t get_1() const;
00043                         uint8_t get_2() const;
00044 
00045                         void set_0(uint8_t val);
00046                         void set_1(uint8_t val);
00047                         void set_2(uint8_t val);
00048 
00049                         int b64_0() const;
00050                         int b64_1() const;
00051                         int b64_2() const;
00052                         int b64_3() const;
00053 
00054                         void b64_0(int val);
00055                         void b64_1(int val);
00056                         void b64_2(int val);
00057                         void b64_3(int val);
00058 
00059                 private:
00060                         uint8_t _data[3];
00061                 };
00062         };
00063 } /* namespace dtn */
00064 #endif /* BASE64_H_ */