
On Thu, Nov 14, 2013 at 11:39 AM, Christopher Kormanyos
I view this as a design choice.
The tried-and-true init --- digest --- finalize mechanism actually stems from a procedural-language approach. This is because explicit initialization or finalization (as you mention) can be eliminated with class-internal flags. So maybe an object-oriented design needs a slightly altered paradigm.
Maybe it would be a good idea to mimic the interface of Boost.Crc, in so far as there are analogies such as init, final XOR --> finalize, etc.
I think these kinds of design choices such as the interface, the class template parameters, etc. generally should be agreed upon up front.
Well this is why I asked. If I were to move forward with a formal proposal of these headers into Boost I would want to get a consensus of opinion on these design choices, to have a solid rationale for building it out the way I did. It is obvious others have thought more about these interfaces than I, and there are use cases that I have not thought of that dramatically alter the interface. With that in mind, let me see if I can revise the code to accommodate a broader audience. -foster