// Copyright (C) 2005 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #undef DLIB_CRC32_KERNEl_ABSTRACT_ #ifdef DLIB_CRC32_KERNEl_ABSTRACT_ #include "../algs.h" #include <string> namespace dlib { class crc32 { /*! INITIAL VALUE The current checksum covers zero bytes. get_checksum() == 0x00000000 WHAT THIS OBJECT REPRESENTS This object represents the CRC32 algorithm for calculating checksums. !*/ public: crc32 ( ); /*! ensures - #*this is properly initialized throws - std::bad_alloc !*/ virtual ~crc32 ( ); /*! ensures - any resources associated with *this have been released !*/ void clear( ); /*! ensures - #*this has its initial value throws - std::bad_alloc if this exception is thrown then #*this is unusable until clear() is called and succeeds !*/ void add ( unsigned char item ); /*! ensures - #get_checksum() == The checksum of all items added to *this previously concatenated with item. !*/ void add ( const std::string& item ); /*! ensures - #get_checksum() == The checksum of all items added to *this previously concatenated with item. !*/ unsigned long get_checksum ( ) const; /*! ensures - returns the current checksum !*/ void swap ( crc32& item ); /*! ensures - swaps *this and item !*/ private: // restricted functions crc32(const crc32&); // copy constructor crc32& operator=(const crc32&); // assignment operator }; void swap ( crc32& a, crc32& b ) { a.swap(b); } /*! provides a global swap function !*/ } #endif // DLIB_CRC32_KERNEl_ABSTRACT_