libmoost
/home/mhx/git/github/libmoost/include/moost/digest/base.h
Go to the documentation of this file.
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