swig/Examples/test-suite/java/doxygen_misc_constructs_runme.java
Vadim Zeitlin 14ba3b8dd4 Preserve relative indentation when parsing Doxygen comments.
This is important to preserve the structure of the lists which appear
correctly in Python output without any additional effort if the indentation is
lost.

It is also makes the behaviour consistent for

	/**
	 *
	 *
	 */

comments and those without the asterisks in the middle lines, as now the
indentation is preserved in both cases while it was only preserved when the
asterisks were present previously.
2014-08-22 17:45:22 +02:00

197 lines
8.6 KiB
Java

import doxygen_misc_constructs.*;
import com.sun.javadoc.*;
import java.util.HashMap;
public class doxygen_misc_constructs_runme {
static {
try {
System.loadLibrary("doxygen_misc_constructs");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
System.exit(1);
}
}
public static void main(String argv[])
{
/*
Here we are using internal javadoc tool, it accepts the name of the class as paramterer,
and calls the start() method of that class with parsed information.
*/
CommentParser parser = new CommentParser();
com.sun.tools.javadoc.Main.execute("doxygen_misc_constructs runtime test",
"CommentParser",
new String[]{"-quiet", "doxygen_misc_constructs"});
HashMap<String, String> wantedComments = new HashMap<String, String>();
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.getConnection()",
"\n" +
"\n" +
" This function returns connection id.\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.getAddress(doxygen_misc_constructs.SWIGTYPE_p_int, int)",
" Returns address of file line.\n" +
" \n" +
" @param fileName name of the file, where the source line is located\n" +
" @param line line number\n" +
" {@link Connection::getId() }<br>\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.getG_zipCode()",
" Tag endlink must be recognized also when it is the last token\n" +
" in the commment.\n" +
" \n" +
" {@link Connection::getId() }<br>\n" +
" {@link debugIdeTraceProfilerCoverageSample.py Python example. }\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.setG_zipCode(int)",
" Tag endlink must be recognized also when it is the last token\n" +
" in the commment.\n" +
"\n" +
" {@link Connection::getId() }<br>\n" +
" {@link debugIdeTraceProfilerCoverageSample.py Python example. }\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.getG_counter()",
" Tag endlink must be recognized also when followed by nonspace charater.\n" +
"\n" +
" {@link Connection::getId() }<br>\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.waitTime(int)",
" Determines how long the <code>isystem.connect</code> should wait for running\n" +
" instances to respond. Only one of <code>lfWaitXXX</code> flags from IConnect::ELaunchFlags\n" +
" may be specified.\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.CConnectionConfig",
" This class contains information for connection to winIDEA. Its methods\n" +
" return reference to self, so we can use it like this:\n" +
" <pre>\n" +
" CConnectionConfig config = new CConnectionConfig();\n" +
" config.discoveryPort(5534).dllPath(\"C:\\\\myWinIDEA\\\\connect.dll\").id(\"main\");\n" +
" </pre>\n" +
"\n" +
" All parameters are optional. Set only what is required, default values are\n" +
" used for unspecified parameters.\n" +
" <p>\n" +
"\n" +
" {@link advancedWinIDEALaunching.py Python example. }<br>\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.getAddress(doxygen_misc_constructs.SWIGTYPE_p_int, int, boolean)",
" Returns address of file line.\n" +
"\n" +
" @param fileName name of the file, where the source line is located\n" +
" @param line line number\n" +
" @param isGetSize if set, for every object location both address and size are returned\n" +
"\n" +
" {@link Connection::getId() }<br>\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.setG_counter(char)",
" Tag endlink must be recognized also when followed by nonspace charater.\n" +
"\n" +
" {@link Connection::getId() }<br>\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum",
" Class description.\n" +
"\n");
wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum.ENested",
" Enum description.\n" +
"\n");
wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum.ENested.ONE",
" desc of one\n");
wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum.ENested.TWO",
" desc of two\n");
wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum.ENested.THREE",
" desc of three\n");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.showList()",
" An example of a list in a documentation comment.<br>\n" +
" <br>\n" +
" - The first item of the list.<br>\n" +
" - The second list item, on<br>\n" +
" several indented lines,<br>\n" +
" showing that the indentation<br>\n" +
" is preserved.<br>\n" +
" - And the final list item after it.<br>\n" +
" <br>\n" +
" And this is not a list item any more.\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.isNoSpaceValidA()",
" This comment without space after '*' is valid in Doxygen.\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.isNoSpaceValidB()",
" .This comment without space after '*' is valid in Doxygen.\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.backslashA()",
" Backslash following<code>word</code> is a valid doxygen command. Output contains\n" +
" 'followingword' with 'word' in code font.\n" +
"\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.backslashB()",
" Doxy command without trailing space is ignored - nothing appears\n" +
" on output. Standalone \\ and '\\' get to output.\n" +
" Standalone @ and '@' get to output.\n" +
" Commands \"in quoted \\b strings are treated as plain text\".\n" +
" Commands not recognized by Doxygen are ignored.\n" +
" Backslashes in DOS paths d:and words\n" +
" following them do not appear on output, we must quote them with\n" +
" double quotes: \"d:\\xyz\\qwe\\myfile\", \"@something\". Single quotes do not help:\n" +
" 'd:'. Escaping works: d:\\xyz\\qwe\\myfile. Unix\n" +
" paths of course have no such problems: /xyz/qwe/myfile\n" +
" Commands for escaped symbols:\n" +
" $ @ \\ &amp; ~ &lt; &gt; # % &quot; . :: @text ::text" +
"\n");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.backslashC()",
" Backslash e at end of <i>line</i> froze SWIG\n" +
" <i>with</i> old comment parser.\n" +
" @see MyClass#fun(char,float)\n" +
"");
wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.cycle(int, java.lang.String)",
" The next line contains expression:\n" +
" <pre>\n" +
" ['retVal &lt; 10', 'g_counter == 23 &amp;&amp; g_mode &amp; 3']\n" +
" </pre>\n" +
"\n" +
" Both words should be emphasized <b>isystem.connect</b>.\n" +
" But not the last period. For <b>example</b>, comma should not be emphasized.\n" +
" Similar <b>for</b>: double colon.\n" +
"\n" +
" Spaces at the start of line should be taken into account:\n" +
" @param id used as prefix in log\n" +
" statements. The default value is empty string, which is OK if\n" +
" there is only one app. instance. Example:\n" +
" <pre>\n" +
" ctrl.setBP(\"func1\");\n" +
" </pre>\n" +
" If we set the id to <code>main_</code>, we get:\n" +
" <pre>\n" +
" main_ctrl.setBP(\"func1\");\n" +
" </pre>\n" +
"\n" +
" @param fileName name of the log file\n");
// and ask the parser to check comments for us
System.exit(parser.check(wantedComments));
}
}