In reading through, I noticed the following:
wxString DocumentationHelper::DoxygenToHTML(const wxString& doc)
{
using namespace HTMLTags;
wxString arguments[5];
wxString &plainText = arguments[0], brief = arguments[1], params = arguments[2],
seeAlso = arguments[3], returns = arguments[4];
[...]
// process nested keywords:
for (size_t i = 0; i < (size_t)(sizeof(arguments)/sizeof(arguments[0])); ++i)
{
arguments[i].Trim(true).Trim(false);
Doxygen::DoxygenParser dox_parser;
int dox_keyword = dox_parser.FindNextKeyword(arguments[i]);
while (dox_keyword < Doxygen::KEYWORDS_COUNT)
{
using namespace Doxygen;
switch (dox_keyword)
{
case B:
{
dox_parser.ReplaceCurrentKeyword(arguments[i], b1);
wxString arg0;
dox_parser.GetArgument(arguments[i], RANGE_WORD, arg0);
arguments[i].insert(dox_parser.GetPosition() + 1, b0);
}
break;
default:
break;
}
dox_keyword = dox_parser.FindNextKeyword(arguments[i]);
}
}// for (i)
[...]
Only plainText is declared as a reference, so the following loop (the only place where arguments[] is used) does not appear to do any useful work.
However, I am not sure of the intent of this code, so I do not know what type of bug to even try to look for. Thoughts?
Now I see I should write more comments.
First loop (while) looks for keywords that affect whole paragraph, and (should) store these paragraphs inside array "arguments", then second loop (for) looks for nested keywords inside spitted paragraphs. So this is definitely a bug. Paragraphs should be accessible in both ways.
Try to run parser on this, to see a bug:
/*! Detailed description starts here.
\b Bold is now @b supported
@sa this will not be @b bold
*/
int a;