Using Doxygen with BlitzMax

BlitzMax Forums/BlitzMax Programming/Using Doxygen with BlitzMax

N(Posted 2005) [#1]
If you're interested in using Doxygen with BlitzMax and you don't want to have to work with two different files for documentation and code, this is how you do it:
'/*
Rem
*/

/// @brief Prints "I"
/// @return Pi (3.1415962 and so on)
double Blah();

/// @brief Foo object class
class Foo
{
	public:
	/// @brief Some variable
	int bar;
	
	/// @brief Creates a Foo object
	/// @param i The Foo's bar information
	/// @return A new Foo object
	static Foo Create(int i);
};

/// @brief Bar object class
class Bar : public Foo
{
	public:
	/// @brief Craptasticalnessnessness
	int _foo;
	
	/// @brief Creates a Bar object
	/// @param f The Bar's _foo information
	/// @return A new Bar object
	static Bar Create(Object f);
};
'/*
End Rem

' Doxygen test

Function Blah!()
	Print "I"
	Return Pi
End Function

Type Foo
	Field bar:Int
	
	Function Create:Foo(i:Int)
		Local this:Foo = New Foo
		this.bar = i
		Return this
	End Function
End Type

Type Bar..
	Extends Foo
	
	Field _foo:Object
	
	Function Create:Bar(f:Object)
		Local this:Bar = New Bar
		this._foo = f
		Return this
	End Function
End Type

'*/


Ugly, messy, but if you like Doxygen then you probably don't mind that already. Until my documentation generator is released, this is probably the only way to document non-module code besides writing everything by hand.

Well, just thought I'd post that- weird experiment, but eh.


Clyde(Posted 2005) [#2]
For those without a clue, Whats Doxygen?


N(Posted 2005) [#3]
http://www.stack.nl/~dimitri/doxygen/

Google would've taken less time -_-


Booticus(Posted 2005) [#4]
Hey thanks Noel! This WILL have to hold us over till your Doc generator is done. Any ETA on its release?


N(Posted 2005) [#5]
I think it'll be soon (e.g., week or two), I'm just working on bits and pieces of the output now. I've been thinking about trying to use Dot with it, but I don't know yet. That can wait 'til I'm done with the rest of it.

Basically, this is what I've got it outputting at the moment when I run it over my GUI module (test output, in other words this wasn't made by DocGen itself but rather by looping through all of DocGen's acquired data and putting it in a single file so I can look for errors).

Basically, the way it works at the moment is a three-pass system. First pass gathers all the objects in the files, be it comments, types, methods, functions, variables, etc., then the second pass gathers all associations between the data, comments, etc. and links them accordingly. The third pass is generating the HTML based on template files that look something like this (you don't have to write you own as I'm including 'defaults' in it as well, but you'll likely want to write your own because the defaults are gonna be ugly [I don't want to spend a lot of time on them]):


Edit: And for a basic example of how you document code in it:


Random blurb over.


Booticus(Posted 2005) [#6]
Damn Noel, thats the [poop]! Cant wait!