Another full day of regress-testing the new hasher code, and now it seems we caught the remainder of bugs in it. There were several issues regarding non-regular file types, files of size 0 etc.
Next up - finish the PartData. Needs saving/loading code, and lots of regress-testing.
PS: Regarding the enums problem noted in last blog post - we can use ints for events instead. The actual events would still be defined as enums, but since enums are basically constant integers, they can be converted and compared to/from/between ints. This will only affect the event handler function prototypes, so requires very little changes to existing codebase.