Next step in tidying up the LHASH code. This commit defines DECLARE and
authorGeoff Thorpe <geoff@openssl.org>
Sat, 2 Dec 2000 23:08:59 +0000 (23:08 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Sat, 2 Dec 2000 23:08:59 +0000 (23:08 +0000)
commitdfa46e502dff4b86e6e41fbcc36c561caf20bd2e
tree575b5e1875cc7c201d7deefe0e4d3aa1f7a52133
parentc21c35e6a43d0798e29ad85e8c54fa6de45c12d7
Next step in tidying up the LHASH code. This commit defines DECLARE and
IMPLEMENT macros for defining wrapper functions for "hash" and "cmp" callbacks
that are specific to the underlying item type in a hash-table. This prevents
function pointer casting altogether, and also provides some type-safety
because the macro does per-variable casting from the (void *) type used in
LHASH itself to the type declared in the macro - and if that doesn't match the
prototype expected by the "hash" or "cmp" function then a compiler error will
result.

NB: IMPLEMENT macros are not required unless predeclared forms are required
(either in a header file, or further up in a C file than the implementation
needs to be). The DECLARE macros must occur after the type-specific hash/cmp
callbacks are declared. Also, the IMPLEMENT and DECLARE macros are such that
they can be prefixed with "static" if desired and a trailing semi-colon should
be appended (making it look more like a regular declaration and easier on
auto-formatting text-editors too).

Now that these macros are defined, I will next be commiting changes to a
number of places in the library where the casting was doing bad things. After
that, the final step will be to make the analogous changes for the lh_doall
and lh_doall_arg functions (more specifically, their callback parameters).
crypto/lhash/lhash.h