William A. Rowe, Jr. wrote:

Yes, but (especially registered functions) allow you to set
up an argument type/argument list by casting a function ptr,
rather than the actual data object.  This means that every
invocation of APR_FN_type_FOO will accept only a certain type,
enforcing typesafety.

Ben went to the trouble of figuring it out (brilliant!) so
I'd happily veto wrappers which don't enforce type safety.
I don't want to return to the 1.3 mod_ssl days (of a new
fn for each arg list) after we have such an elegant solution
at hand :)  Take some time to grok

  
http://svn.apache.org/repos/asf/apr/apr-util/trunk/include/apr_optional_hooks.h


I've read apr_optional_hooks.h and looked at the underlying implementation, and I don't see how this gains us a whole lot. What it does seem to do is add complexity by requiring the user to declare and then retrieve their accessor functions, and on top of that it sure doesn't seem to be thread safe, what with its use of global variables in apr_hooks.c with no apparent locking.

On the other hand, we've already seen these accessor macros used to great effect in a large codebase, and I know for a fact that they make it much much much easier to work with APR arrays. No, they do not solve all problems, but they do improve the situation without adding a great deal of complexity.

If I'm getting the wrong impression, and it really is far simpler to make use of these APIs for the purpose of providing helper functions for the APR array interface than it seems at first glance, then could you please explain how, perhaps by sketching out how you'd see the interface being used.

I'm especially confused at how you think this is heading to the bad old days of a new function for each arg list, when my proposal requires exactly two macros, and you don't ever have to declare more functions when you want to work with more types of arrays because the type is passed in when you invoke the macro. Now if you were arguing that requiring the user to pass in the type is too error prone, I could see that side of the argument, but even so I don't see how it's any more error prone than the existing state of affairs.

-garrett

Reply via email to