Today I made a new Synopsis release. Its main feature is an updated Cpp processor (aka. ‘preprocessor’) which is able to annotate macros and cross-reference them, just as Synopsis does with C and C++ declarations.
I updated the ucpp version that is used as backend. Hacking the required support hooks into that was surprisingly delicate.
Unfortunately, ucpp’s author and boost’s preprocessor experts disagree on the interpretation of the CPP specification, resulting in it not being able to process an important part of boost correctly.
A couple of years ago I attempted to use boost.wave as an alternative Cpp processor backend. Unfortunately, that has its own share of bugs, which very much restrict its usefulness, at least for applications such as Synopsis.