annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
1 This code was mostly written as an experiment, to see just how much
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
2 could be done using only the C preprocessor (give or take). Turns out
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
3 you can do quite a lot.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
4
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
5 In fact, *all* of the tables in this library are generated at compile-time.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
6 The polynomial is #define'd in crc32i.h, and all of the tables are generated
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
7 through a combination of enums and preprocessor trickery. Note that this
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
8 may cause this code to compile slowly on some machines or compilers.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
9
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
10 At the moment it is hardcoded for x86-64 and gcc, but it could be adapted to
1
90cb48b87dcc *: don't hardcode the list of impls in multiple places
Paper <paper@tflc.us>
parents: 0
diff changeset
11 other compilers if they also have features like e.g. alignas() or whatever.
90cb48b87dcc *: don't hardcode the list of impls in multiple places
Paper <paper@tflc.us>
parents: 0
diff changeset
12 You'd also need to disable the x86 code which isn't difficult but is a bit
90cb48b87dcc *: don't hardcode the list of impls in multiple places
Paper <paper@tflc.us>
parents: 0
diff changeset
13 annoying.