michael@1: // michael@1: // OSSP asgui - Accounting system graphical user interface michael@12: // Copyright (c) 2002-2009 The OSSP Project (http://www.ossp.org/) michael@12: // Copyright (c) 2002-2009 Ralf S. Engelschall michael@12: // Copyright (c) 2002-2009 Michael Schloh von Bennewitz michael@12: // Copyright (c) 2002-2009 Cable & Wireless Telecommunications Services GmbH michael@1: // michael@1: // This file is part of OSSP asgui, an accounting system graphical user michael@3: // interface which can be found at http://asgui.europalab.com/. michael@1: // michael@1: // Permission to use, copy, modify, and distribute this software for michael@1: // any purpose with or without fee is hereby granted, provided that michael@1: // the above copyright notice and this permission notice appear in all michael@1: // copies. michael@1: // michael@1: // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@1: // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@1: // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@1: // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@1: // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@1: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@1: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@1: // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@1: // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@1: // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@1: // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@1: // SUCH DAMAGE. michael@1: // michael@1: // as_crc.h: ISO C++ interface michael@1: // michael@1: michael@1: #ifndef CRC_H michael@1: #define CRC_H michael@1: michael@1: #include // For copy constructor using string michael@1: #include // For deriving from QString michael@1: michael@1: #include "as_gui.h" // General definitions like U32 typedefs michael@1: michael@1: michael@1: class Qualistring : public QString michael@1: { michael@1: private: michael@1: U32 m_pkHash[256]; // Used for CRC32 value generation michael@1: michael@1: private: michael@1: U32 mirrorBits(U32, U8); // Helper method, mirror a bitstream michael@1: void initCrc(void); // Helper method, fill hash table michael@1: michael@1: public: // Constructors michael@1: Qualistring(void) : QString() {initCrc();}; // Default michael@1: Qualistring(const QString &kCopy) : QString(kCopy) {initCrc();}; // Copy michael@1: Qualistring(const char *pkcCopy) : QString(pkcCopy) {initCrc();}; // Copy michael@3: Qualistring(const std::string &kCopy) : QString(QString::fromStdString(kCopy)) {initCrc();}; // Copy michael@1: michael@1: U32 getCrc(void); // Generate and return a CRC32 michael@1: Qualistring &operator=(const QString &); // Overload equals operator michael@1: }; michael@1: michael@1: #endif // CRC_H