Skip navigation

Monthly Archives: February 2006

Thanks to Radek’s tireless work, CWS cairocanvas is now finally integrated (into the 2.0.3 code line). Took about eight months to get there, and now provides a nicely anti-aliased slideshow experience, with even the alpha effects running at a decent speed.

The downside: you need a fairly recent X server and cairo 1.0.x on your system.


After having played
a bit with cpd, I
went searching for more elaborate source code analysis tools. And there are some, even in the FLOSS realm:

  • pygccxml, a gcc plugin to generate XMLized
    output from the AST (plus a python framework to actually work with this representation).
  • gccxml, quite similar to pygccxml, focused on extracting declarations
  • synopsis, a standalone parser plus analysis framework – a bit lacking
    for c++, which is inherently hard to parse.
  • opencxx, same as above (actually a predecessor/inspiration for synopsis)
  • rtlcheck, a gcc plugin that extracts code on the RTL (register-transfer level).
    Currently, seems to be used only for c, extending that to c++ should be both easy & rewarding (as rtlcheck appears to be the
    most elaborate project of all listed).
  • Also quite interesting, though with different scope (being a runtime-analysis tool) is the
    Design Recovery Tool, roughly characterizable as a means to get from UI
    actions to the code involved processing them.

I do like the gcc patching/plugin approach the most, knowing how complex it is to get c++ parsing even half-way right. And as is such a beast, code-size wise, getting all the help we could from automatic tools appears wise to me.

Quite coincidentally, after having rambled about everybody rolling their own copy-on-write implementations, I’ve found severe issues with some of the COW implementations in VCL. Most notably, they employ 16 bit refcounts – which is a bad idea indeed, when used for objects that occur ten thousands of times, e.g. in metafiles. brrr.

Thus, this needs some larger fixups, work for that is going to happen in CWS cowfixes01.