Jump to page: 1 2 3
Thread overview
Doxygen and D
Mar 08, 2005
Kris
Mar 08, 2005
Kris
Mar 08, 2005
Kris
Mar 09, 2005
J C Calvarese
Mar 08, 2005
Brad Anderson
Mar 08, 2005
Kris
Mar 09, 2005
Brad Anderson
Mar 08, 2005
James Dunne
Mar 08, 2005
James Dunne
Mar 09, 2005
Stewart Gordon
Mar 09, 2005
J C Calvarese
Mar 09, 2005
Stewart Gordon
Mar 13, 2005
J C Calvarese
March 08, 2005
Found out why doxygen didn't seem to support D,
the file suffix check in Doxygen 1.4.1 was flawed...

http://bugzilla.gnome.org/show_bug.cgi?id=169640
> Thanks, apparently you're the first D user that tries doxygen ;-)


With a little more effort, it shouldn't be at all
hard to make Doxygen support most of the D files.
(natively, without filtering into C++/Java first)

If you feel that you could help, then please do ?
(if nothing else, then just by running it with your
code and noting the areas that needs improvement?)

http://www.doxygen.org/

--anders
March 08, 2005
FWIW: Mango still uses a custom filter, and some specific Doxygen/cpp settings (for handling version() etc), to produce its documentation. Both are available via the \trunk\mango\doc folder over at dsource.org



In article <d0l0nr$6re$1@digitaldaemon.com>, =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= says...
>
>Found out why doxygen didn't seem to support D,
>the file suffix check in Doxygen 1.4.1 was flawed...
>
>http://bugzilla.gnome.org/show_bug.cgi?id=169640
>> Thanks, apparently you're the first D user that tries doxygen ;-)
>
>
>With a little more effort, it shouldn't be at all
>hard to make Doxygen support most of the D files.
>(natively, without filtering into C++/Java first)
>
>If you feel that you could help, then please do ?
>(if nothing else, then just by running it with your
>code and noting the areas that needs improvement?)
>
>http://www.doxygen.org/
>
>--anders


March 08, 2005
Kris wrote:

> FWIW: Mango still uses a custom filter, and some specific Doxygen/cpp settings
> (for handling version() etc), to produce its documentation. Both are available
> via the \trunk\mango\doc folder over at dsource.org

Which dfilter are you using ? I could only find a "dfilter.exe" binary ?

Is there any source code available for it, like in D as the others... ?

--anders
March 08, 2005
Sure ~ I'll check it in later. The filter just handles additional comment-styles .. but it's the config file that does the version() stuff and so  on. It does that by defining certain CPP macros to rename some D keywords.


In article <d0l3d5$ab7$1@digitaldaemon.com>, =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= says...
>
>Kris wrote:
>
>> FWIW: Mango still uses a custom filter, and some specific Doxygen/cpp settings (for handling version() etc), to produce its documentation. Both are available via the \trunk\mango\doc folder over at dsource.org
>
>Which dfilter are you using ? I could only find a "dfilter.exe" binary ?
>
>Is there any source code available for it, like in D as the others... ?
>
>--anders


March 08, 2005
Kris wrote:

> Sure ~ I'll check it in later. The filter just handles additional comment-styles
> .. but it's the config file that does the version() stuff and so  on. It does
> that by defining certain CPP macros to rename some D keywords.

That part I saw. I tried upgrading your Doxyfile to 1.4.1 and then
running without any filter, to see what kind of trouble we're in...

> Searching for friends...
> Searching for documented defines...
> Computing template instances...
> zsh: segmentation fault  doxygen

Oops! Seems like there are a few bug reports left to write yet :-)
For now, I think you'd do best in sticking with Doxygen 1.3.x ?

> Doxygen Release 1.3.6
>
> New features
>   Include a patch by Hauke Duden which adds preliminary support
>   for the D programming language (see http://www.digitalmars.com/d).


Constructors were simple, but debug() and version() are gonna be fun.
We probably also want to rename namespaces to modules, at some point?

And of course you could probably confuse it silly, with clever use
of alias and mixins and other features that are far from C++ / Java.


Still, it's a great tool - and Dimitri is busy adding Objective-C
support on his shiny new Mac, so what's another language then ? :-)

The class diagrams and the PDF documentation generator are awesome,
and I find the general look of the new HTML stylesheet to be great...

--anders
March 08, 2005
Also, previously unreleased, I have made my own modifications to dfilter.d to allow version() blocks translated into #ifdef and #elif and #endif blocks, as well as other minor modifications I found helpful.  I'll post it in the bindings project on dsource.org.  I still think they should have a code-snippets section for shared D modules not big enough to warrant the need for a full SVN repository.

In article <d0l2l7$9g0$1@digitaldaemon.com>, Kris says...
>
>FWIW: Mango still uses a custom filter, and some specific Doxygen/cpp settings (for handling version() etc), to produce its documentation. Both are available via the \trunk\mango\doc folder over at dsource.org
>

Regards,
James Dunne
March 08, 2005
James Dunne wrote:

> Also, previously unreleased, I have made my own modifications to dfilter.d to
> allow version() blocks translated into #ifdef and #elif and #endif blocks, as
> well as other minor modifications I found helpful. 

I did a quick patch to support D constructors and deathtractors:
http://bugzilla.gnome.org/show_bug.cgi?id=169641

> I'll post it in the bindings
> project on dsource.org.  I still think they should have a code-snippets section
> for shared D modules not big enough to warrant the need for a full SVN
> repository.

Found it, at:
http://svn.dsource.org/svn/projects/bindings/trunk/dfilter.d

--anders
March 08, 2005
In article <d0l8u4$gqg$1@digitaldaemon.com>, =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= says...
>
>James Dunne wrote:
>
>> Also, previously unreleased, I have made my own modifications to dfilter.d to allow version() blocks translated into #ifdef and #elif and #endif blocks, as well as other minor modifications I found helpful.
>
>I did a quick patch to support D constructors and deathtractors: http://bugzilla.gnome.org/show_bug.cgi?id=169641

Cool!  doxygen code-patches are probably much more useful/better than pre-filtering code.

>
>> I'll post it in the bindings
>> project on dsource.org.  I still think they should have a code-snippets section
>> for shared D modules not big enough to warrant the need for a full SVN
>> repository.
>
>Found it, at: http://svn.dsource.org/svn/projects/bindings/trunk/dfilter.d
>
>--anders

That's where she be.

I was workin on a school independent study project and needed to hack up a quickie presentation for my prof.  doxygen did the trick with dfilter alright. I was too lazy to actually d/l a copy of the doxygen source and modify it, then recompile it myself.

Also, am I the only one who finds doxygen's use of external DOT tools to generate graphs extremely and unreasonably SLOW?  Maybe it's just me, but calling external programs within a program doesn't seem to be optimal.

Regards,
James Dunne
March 08, 2005
Kris wrote:

> .. but it's the config file that does the version() stuff and so  on. It does
> that by defining certain CPP macros to rename some D keywords.

PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS \
                         "version(x)=public class Version##x" \
                         interface=struct

Interfaces should be able to be handled by Doxygen,
once the "D mode" is activated (and not crashing...)
They are pretty similar to Javas, which is supported.

The "missing" semicolons after certain structures
are also handle with the same "D mode", by the way.

Using "class" for version(x) probably doesn't work
too good for the "else" statements, or does it ?


James Dunne wrote:

> Also, previously unreleased, I have made my own modifications to dfilter.d to
> allow version() blocks translated into #ifdef and #elif and #endif blocks, as
> well as other minor modifications I found helpful.

// These modifications allow version (identifier) { } else { } blocks
// to be replaced with corresponding C preprocessor #ifdef blocks which
// doxygen recognizes and interprets. The identifiers are translated
// into all uppercase with a VERSION_ prefix.

This probably works better, and is closer to how D handles
versions (which should also include "debug", by the way?)
The braces are optional, but that could be added easily.


It seems like the best (ultimately) way of handling this is adding new
code to Doxygen, to make it able to handle the "version" and "debug" ?

I've added an "isD" boolean next to the Objective-C stuff, and plan to
make some use of it one day. Although I wouldn't hold my breath...

--anders
March 08, 2005
James Dunne wrote:

> I was too lazy to actually d/l a copy of the doxygen source and modify it, then
> recompile it myself.

I'm using RPM to handle builds, using pristine sources and patch files.
This works good, both for version updates and for hacking new stuff in.

I can recommend it... (or some other similar* automated build method ?)
As a bonus you get reproducible builds and ready-made binary packages.

--anders

* RPM, Deb, Fink, DarwinPorts, Ports, Gentoo, whatever works for you.
« First   ‹ Prev
1 2 3