00001
00034 #ifndef DKUTIL_C_CRC_H
00035 #define DKUTIL_C_CRC_H
00036
00037 #include "dkcOSIndependent.h"
00038
00039
00040
00041
00042 typedef struct dkc_CRC{
00043
00044
00046 void *mTable;
00048 unsigned long mR;
00050 unsigned long mResult;
00052 size_t mBits;
00054 ULONG mTruncPoly;
00056 ULONG mInitRem;
00058 ULONG mFinalXor;
00059
00060 dkctBOOL mReflectIn;
00061
00062 dkctBOOL mReflectRem;
00063 }DKC_CRC;
00064
00065 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC( size_t Bits, ULONG TruncPoly,
00066 ULONG InitRem, ULONG FinalXor,
00067 dkctBOOL ReflectIn, dkctBOOL ReflectRem);
00068
00069 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_32left();
00070
00071 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_32right();
00072
00073 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_ansi16left();
00074
00075 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_ansi16right();
00076
00077 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_ccitt_left();
00078
00079 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_ccitt_right();
00080
00081 DKC_EXTERN DKC_CRC* WINAPI dkcAllocCRC_xmodem();
00082
00083 DKC_EXTERN int WINAPI dkcFreeCRC(DKC_CRC **pp);
00084
00095 DKC_EXTERN int WINAPI dkcCRCInit(DKC_CRC *p,void *buffer,
00096 size_t Bits, ULONG TruncPoly,
00097 ULONG InitRem, ULONG FinalXor,
00098 dkctBOOL ReflectIn, dkctBOOL ReflectRem );
00099
00105
00106 DKC_EXTERN size_t WINAPI dkcCRCGetUseTableSize(size_t Bits);
00107
00113 DKC_EXTERN void WINAPI dkcCRCLoad(DKC_CRC *p,const BYTE *pBuffer,size_t size);
00114
00115 DKC_EXTERN void WINAPI dkcCRCLoadBlock(DKC_CRC *p,const void *Begin,const void *End);
00116
00117
00123 DKC_EXTERN ULONG WINAPI dkcCRCFinal(DKC_CRC *p);
00124
00125 DKC_EXTERN ULONG WINAPI dkcCRCResult(const DKC_CRC *p);
00126 #if !defined( DKUTIL_C_CRC_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00127 # include "dkcCRC.c"
00128 #endif
00129
00130
00131 #endif //end of include once