--- libaitcrc/inc/defs.h 2011/04/28 20:28:20 1.4 +++ libaitcrc/inc/defs.h 2012/08/29 09:00:44 1.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: defs.h,v 1.4 2011/04/28 20:28:20 misho Exp $ +* $Id: defs.h,v 1.7 2012/08/29 09:00:44 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -47,14 +47,43 @@ SUCH DAMAGE. #define __DEFS_H -#define MAX_STR 255 +#ifndef STRSIZ +#define STRSIZ 256 +#endif #define MAX_FLETCHER16_DIGEST 21 #define MAX_FLETCHER_DIGEST 360 #define MAX_ADLER_DIGEST 5552 +#define POLY_CRC32 0xC0A0A0D5 +#define INIT_BERNSTEIN 0x1505 +#define INIT_FNV1 0x811c9dc5 +#define POLY_FNV1 0x1000193 +#define INIT_JENKINS32 0xDEADBEEF -inline void crcSetErr(int eno, char *estr, ...); +#define ROT32(x, k) (((x) << (k)) | ((x) >> (32 - (k)))) +#define MIX32(a, b, c) \ +do { \ + a -= c; a ^= ROT32(c, 4); c += b; \ + b -= a; b ^= ROT32(a, 6); a += c; \ + c -= b; c ^= ROT32(b, 8); b += a; \ + a -= c; a ^= ROT32(c, 16); c += b; \ + b -= a; b ^= ROT32(a, 19); a += c; \ + c -= b; c ^= ROT32(b, 4); b += a; \ +} while (0) +#define FINAL32(a, b, c) \ +do { \ + c ^= b; c -= ROT32(b, 14); \ + a ^= c; a -= ROT32(c, 11); \ + b ^= a; b -= ROT32(a, 25); \ + c ^= b; c -= ROT32(b, 16); \ + a ^= c; a -= ROT32(c, 4); \ + b ^= a; b -= ROT32(a, 14); \ + c ^= b; c -= ROT32(b, 24); \ +} while (0) + + +inline void crc_SetErr(int eno, char *estr, ...); extern const crcPoly_t crc_Poly[];