libmoost
|
00001 /* vim:set ts=3 sw=3 sts=3 et: */ 00028 #ifndef MOOST_DIGEST_BASE_H__ 00029 #define MOOST_DIGEST_BASE_H__ 00030 00031 #include <string> 00032 00033 namespace moost { namespace digest { 00034 00035 class base 00036 { 00037 public: 00038 virtual ~base(); 00039 00040 virtual void reset() = 0; 00041 virtual void add_raw(const void *data, size_t size) = 0; 00042 virtual std::string digest() const = 0; 00043 00044 void add(const std::string& str) 00045 { 00046 add_raw(str.data(), str.size()); 00047 } 00048 00049 template <typename T> 00050 void add(const T& val) 00051 { 00052 add_raw(&val, sizeof(val)); 00053 } 00054 00055 std::string hexdigest() const; 00056 }; 00057 00058 }} 00059 00060 #endif