[DGD] New release of kotaka

Shentino shentino at gmail.com
Mon Nov 19 19:11:19 CET 2007


Come to think of it, it may even make your .api files obsolete :P

It did take lots of debugging/manpage reading/testing/experimenting to
get right and properly process all of the silly special cases.

What I do is:

Deheaderize it by manually interpreting #include
...so that cpp can "digest" it and resolve macros
...then another perl script scans it for inherit directives,
evaluating the paths, and uses those plus the path of the file to
generate headers and footers with "namespace home{ namespace System{
namespace Sys{/** your top comment here */class kerneld: public
::kernel::lib::api::rsrc" and "}}}}}" type stuff.  The path generates
the namespaces and the class name, while the inherit directives are
used for the "class x: public this, that, foo, bar, baz {" bit.

A second pass cats the header, the source with inherit's and first
comment removed, and the footer out, where doxygen happens to be
waiting for it on the other end of the pipe.  So, now doxygen thinks
that all your LPC source files are actually C++ source files.

Voila!  an LPC source file residing in ~Game/sys/daemon.c shows up as
the home::Game::sys::daemon class, and it is listed as inheriting
kernel::lib::auto and any other "inheritable" you chose to have it
inherit.  Plus, all the functions show up as member functions of that
class, and that's about as close as you're going to get in doxygen.

Best part is, you can have your sources as-is and not add any silly
markup beyond the simple comment blocks that doxygen wants.  Just add
that comment at the top, document your variables and functions, and
you are DONE!  The scripts will take care of the rest.

Anyway, here's a sample:

http://necronomicorp.com/~shentino/public/doxsample/index.html



More information about the DGD mailing list