ned Productions Consulting


Technology musings by Niall Douglas
ned Productions Consulting
(an expert advice and services company based in Ireland)


Saturday 11th March 2017 12.41am

I appreciate that this is going to be lost on pretty much everyone reading this, including the techies. So apologies in advance. However, marvel and stare in awe and wonder at this apparently simple-ish API reference page for Outcome's expected<T, E> as generated by doxygen. What makes it a wonder is that the damn thing is finally accurate and complete. And it has only taken me slightly over a month to achieve, requiring me to write a brand new C preprocessor in Python (https://github.com/ned14/pcpp) which is capable of intelligent partial execution. pcpp then preprocesses Outcome into a single header file, stitching together all the individual files but much more importantly, executing the preprocessor metaprogramming which causes doxygen to normally blow up. And yes, I know we all dislike doxygen, but Standardese and Doxypress also failed to handle it, so I was left in the deeply unhelpful situation of pondering whether to replace the metaprogramming with hardcoded, manually spelled out boilerplate.

Seeing as I'm a true engineer and currently looking for new work and therefore have no other programming to do, I decided to take the very hard path instead and write a C preprocessor but not an ordinary one, but rather one which can do just enough preprocessor execution to generate something doxygen's limited brain can cope with. As you'll note in the screenshot, all the documentation for each thing is missing, that's because I have yet to implement comments passthrough. But still, the below is a major step forward in getting Outcome into the Boost peer review queue.

So, as much as this is me wittering on about a personal victory which nobody else will get, understand I've been working on this for a month's worth of Clara naptimes, so at best that's three hours per day and more usually two as the same time is used to do email etc. So it's been a huge investment of my very reduced free time, and I did it!

I'm getting close to when I'll need to start working on my ACCU conference talk now, so time is running out. But still, a big step forwards.