00001 /* 00002 * 00003 * Copyright (C) 2002-2005, OFFIS 00004 * 00005 * This software and supporting documentation were developed by 00006 * 00007 * Kuratorium OFFIS e.V. 00008 * Healthcare Information and Communication Systems 00009 * Escherweg 2 00010 * D-26121 Oldenburg, Germany 00011 * 00012 * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY 00013 * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR 00014 * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR 00015 * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND 00016 * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. 00017 * 00018 * Module: ofstd 00019 * 00020 * Author: Marco Eichelberg 00021 * 00022 * Purpose: general purpose 32-bit CRC in C++ 00023 * Code is based on the CRC32 implementation (C)1986 Gary S. Brown 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:05:53 $ 00027 * CVS/RCS Revision: $Revision: 1.3 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 00035 #ifndef OFCRC32_H 00036 #define OFCRC32_H 00037 00038 00041 class OFCRC32 00042 { 00043 public: 00044 00046 OFCRC32() 00047 : value(0) 00048 { 00049 } 00050 00052 ~OFCRC32() 00053 { 00054 } 00055 00057 void reset() 00058 { 00059 value=0; 00060 } 00061 00066 void addBlock(const void *ptr, unsigned long size); 00067 00069 unsigned int getCRC32() const 00070 { 00071 return value; 00072 } 00073 00079 static unsigned int compute(const void *ptr, unsigned long size); 00080 00081 private: 00083 static const unsigned int crctab[256]; 00084 00086 unsigned int value; 00087 }; 00088 00089 #endif 00090 00091 00092 /* 00093 * CVS/RCS Log: 00094 * $Log: ofcrc32.h,v $ 00095 * Revision 1.3 2005/12/08 16:05:53 meichel 00096 * Changed include path schema for all DCMTK header files 00097 * 00098 * Revision 1.2 2003/12/05 10:37:41 joergr 00099 * Removed leading underscore characters from preprocessor symbols (reserved 00100 * symbols). Updated copyright date where appropriate. 00101 * 00102 * Revision 1.1 2002/01/08 10:18:48 joergr 00103 * Added general purpose class which computes a CRC32 checksum on arbitrary 00104 * data. 00105 * 00106 * 00107 */