From 64f378154d612bc8b9c36fe01d6c8830916f3cd8 Mon Sep 17 00:00:00 2001 From: ac-stef Date: Tue, 20 Jan 2015 12:09:18 +0100 Subject: [PATCH] add incremental crc calculation re-using the enet code --- source/enet/include/enet/enet.h | 1 + source/enet/packet.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/source/enet/include/enet/enet.h b/source/enet/include/enet/enet.h index b2577a90..483a8c5f 100644 --- a/source/enet/include/enet/enet.h +++ b/source/enet/include/enet/enet.h @@ -519,6 +519,7 @@ ENET_API ENetPacket * enet_packet_create (const void *, size_t, enet_uint32); ENET_API void enet_packet_destroy (ENetPacket *); ENET_API int enet_packet_resize (ENetPacket *, size_t); ENET_API enet_uint32 enet_crc32 (const ENetBuffer *, size_t); +ENET_API void enet_crc32_inc (enet_uint32 *crc, enet_uint8 byte); ENET_API ENetHost * enet_host_create (const ENetAddress *, size_t, size_t, enet_uint32, enet_uint32); ENET_API void enet_host_destroy (ENetHost *); diff --git a/source/enet/packet.c b/source/enet/packet.c index 4e2bb09f..1fb543e2 100644 --- a/source/enet/packet.c +++ b/source/enet/packet.c @@ -161,4 +161,12 @@ enet_crc32 (const ENetBuffer * buffers, size_t bufferCount) return ENET_HOST_TO_NET_32 (~ crc); } +void +enet_crc32_inc (enet_uint32 *crc, enet_uint8 byte) +{ + if (! initializedCRC32) initialize_crc32 (); + + *crc = (*crc >> 8) ^ crcTable [(*crc & 0xFF) ^ byte]; +} + /** @} */