Mercurial > crc32
view README @ 1:90cb48b87dcc
*: don't hardcode the list of impls in multiple places
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 09 Feb 2026 01:18:06 -0500 |
| parents | 422835bc1aca |
| children | ead9f84d11db |
line wrap: on
line source
This code was mostly written as an experiment, to see just how much could be done using only the C preprocessor (give or take). Turns out you can do quite a lot. In fact, *all* of the tables in this library are generated at compile-time. The polynomial is #define'd in crc32i.h, and all of the tables are generated through a combination of enums and preprocessor trickery. Note that this may cause this code to compile slowly on some machines or compilers. At the moment it is hardcoded for x86-64 and gcc, but it could be adapted to other compilers if they also have features like e.g. alignas() or whatever. You'd also need to disable the x86 code which isn't difficult but is a bit annoying.
