Added nice doxygen debug switching (-debug-doxygen-parser and -debug-doxygen-translator)

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2012-doxygen@13427 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dmitry Kabak 2012-07-29 13:48:03 +00:00
commit 3fbe45f0c6
10 changed files with 37 additions and 15 deletions

View file

@ -17,7 +17,7 @@ std::map<std::string, DoxyCommandEnum> DoxygenParser::doxygenCommands;
std::set<std::string> DoxygenParser::doxygenSectionIndicators; std::set<std::string> DoxygenParser::doxygenSectionIndicators;
DoxygenParser::DoxygenParser() : noisy(false) { DoxygenParser::DoxygenParser(bool noisy) : noisy(noisy) {
fillTables(); fillTables();
} }

View file

@ -19,7 +19,7 @@
#include "TokenList.h" #include "TokenList.h"
class DoxygenParser { class DoxygenParser {
public: public:
DoxygenParser(); DoxygenParser(bool noisy = false);
virtual ~DoxygenParser(); virtual ~DoxygenParser();
std::list < DoxygenEntity > createTree(std::string doxygen, std::string fileName, int lineNumber); std::list < DoxygenEntity > createTree(std::string doxygen, std::string fileName, int lineNumber);
private: private:

View file

@ -14,7 +14,8 @@
#include "DoxygenTranslator.h" #include "DoxygenTranslator.h"
DoxygenTranslator::DoxygenTranslator() { DoxygenTranslator::DoxygenTranslator(bool debugTranslator, bool debugParser)
: debug(debugTranslator), parser(debugParser) {
} }
DoxygenTranslator::~DoxygenTranslator() { DoxygenTranslator::~DoxygenTranslator() {
} }

View file

@ -30,7 +30,7 @@ public:
/* /*
* Constructor * Constructor
*/ */
DoxygenTranslator(); DoxygenTranslator(bool debugTranslator = false, bool debugParser = false);
/* /*
* Virtual destructor. * Virtual destructor.
*/ */
@ -52,6 +52,7 @@ public:
String *getDoxygenComment(Node *node); String *getDoxygenComment(Node *node);
protected: protected:
bool debug;
/* /*
* Overridden in subclasses to return the documentation formatted for a given * Overridden in subclasses to return the documentation formatted for a given
* documentation system. * documentation system.

View file

@ -21,6 +21,7 @@ std::map<std::string, std::pair<JavaDocConverter::tagHandler, std::string > > Ja
void JavaDocConverter::fillStaticTables() { void JavaDocConverter::fillStaticTables() {
if (tagHandlers.size()) // fill only once if (tagHandlers.size()) // fill only once
return;
// these commands insert HTML tags // these commands insert HTML tags
tagHandlers["a"] = make_pair(&JavaDocConverter::handleTagHtml, "i"); tagHandlers["a"] = make_pair(&JavaDocConverter::handleTagHtml, "i");
@ -105,7 +106,8 @@ void JavaDocConverter::fillStaticTables() {
} }
JavaDocConverter::JavaDocConverter() : debug(false) { JavaDocConverter::JavaDocConverter(bool debugTranslator, bool debugParser)
: DoxygenTranslator(debugTranslator, debugParser) {
fillStaticTables(); fillStaticTables();
} }

View file

@ -22,7 +22,7 @@
*/ */
class JavaDocConverter : public DoxygenTranslator { class JavaDocConverter : public DoxygenTranslator {
public: public:
JavaDocConverter(); JavaDocConverter(bool debugTranslator = false, bool debugParser = false);
String *makeDocumentation(Node *node); String *makeDocumentation(Node *node);
protected: protected:
@ -88,7 +88,6 @@ protected:
private: private:
bool debug;
// this contains the handler pointer and one string argument // this contains the handler pointer and one string argument
static std::map<std::string, std::pair<tagHandler, std::string> > tagHandlers; static std::map<std::string, std::pair<tagHandler, std::string> > tagHandlers;
void fillStaticTables(); void fillStaticTables();

View file

@ -91,7 +91,8 @@ void PyDocConverter::fillStaticTables() {
tagHandlers["n"] = make_pair(&PyDocConverter::handleNewLine, ""); tagHandlers["n"] = make_pair(&PyDocConverter::handleNewLine, "");
} }
PyDocConverter::PyDocConverter() : debug(false) { PyDocConverter::PyDocConverter(bool debugTranslator, bool debugParser)
: DoxygenTranslator(debugTranslator, debugParser) {
fillStaticTables(); fillStaticTables();
} }

View file

@ -25,7 +25,7 @@
class PyDocConverter : public DoxygenTranslator { class PyDocConverter : public DoxygenTranslator {
public: public:
PyDocConverter(); PyDocConverter(bool debugTranslator = false, bool debugParser = false);
String *makeDocumentation(Node *node); String *makeDocumentation(Node *node);
protected: protected:
@ -108,7 +108,6 @@ protected:
std::string getParamType(std::string name); std::string getParamType(std::string name);
private: private:
bool debug;
// temporary thing, should be refactored somehow // temporary thing, should be refactored somehow
Node *currentNode; Node *currentNode;
// this contains the handler pointer and one string argument // this contains the handler pointer and one string argument

View file

@ -163,9 +163,6 @@ public:
should be easy to implement though */ should be easy to implement though */
director_multiple_inheritance = 0; director_multiple_inheritance = 0;
director_language = 1; director_language = 1;
if (doxygen)
doxygenTranslator = new JavaDocConverter();
} }
~JAVA() { ~JAVA() {
@ -242,6 +239,9 @@ public:
SWIG_library_directory("java"); SWIG_library_directory("java");
bool debug_doxygen_translator = false;
bool debug_doxygen_parser = false;
// Look for certain command line options // Look for certain command line options
for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) {
if (argv[i]) { if (argv[i]) {
@ -271,6 +271,12 @@ public:
Swig_mark_arg(i); Swig_mark_arg(i);
doxygen = false; doxygen = false;
scan_doxygen_comments = false; scan_doxygen_comments = false;
} else if ((strcmp(argv[i], "-debug-doxygen-translator") == 0)) {
Swig_mark_arg(i);
debug_doxygen_translator = true;
} else if ((strcmp(argv[i], "-debug-doxygen-parser") == 0)) {
Swig_mark_arg(i);
debug_doxygen_parser = true;
} else if ((strcmp(argv[i], "-noproxy") == 0)) { } else if ((strcmp(argv[i], "-noproxy") == 0)) {
Swig_mark_arg(i); Swig_mark_arg(i);
proxy_flag = false; proxy_flag = false;
@ -296,7 +302,7 @@ public:
} }
if (doxygen) if (doxygen)
doxygenTranslator = new JavaDocConverter(); doxygenTranslator = new JavaDocConverter(debug_doxygen_translator, debug_doxygen_parser);
// Add a symbol to the parser for conditional compilation // Add a symbol to the parser for conditional compilation
Preprocessor_define("SWIGJAVA 1", 0); Preprocessor_define("SWIGJAVA 1", 0);
@ -4537,6 +4543,8 @@ const char *JAVA::usage = (char *) "\
Java Options (available with -java)\n\ Java Options (available with -java)\n\
-doxygen - Convert C++ doxygen comments to JavaDoc comments in proxy classes (default)\n\ -doxygen - Convert C++ doxygen comments to JavaDoc comments in proxy classes (default)\n\
-nodoxygen - Don't convert C++ doxygen comments to JavaDoc comments in proxy classes\n\ -nodoxygen - Don't convert C++ doxygen comments to JavaDoc comments in proxy classes\n\
-debug-doxygen-parser - Display doxygen parser module debugging information\n\
-debug-doxygen-translator - Display doxygen translator module debugging information\n\
-nopgcpp - Suppress premature garbage collection prevention parameter\n\ -nopgcpp - Suppress premature garbage collection prevention parameter\n\
-noproxy - Generate the low-level functional interface instead\n\ -noproxy - Generate the low-level functional interface instead\n\
of proxy classes\n\ of proxy classes\n\

View file

@ -121,6 +121,8 @@ Python Options (available with -python)\n\
-cppcast - Enable C++ casting operators (default) \n\ -cppcast - Enable C++ casting operators (default) \n\
-dirvtable - Generate a pseudo virtual table for directors for faster dispatch \n\ -dirvtable - Generate a pseudo virtual table for directors for faster dispatch \n\
-doxygen - Convert C++ doxygen comments to pydoc comments in proxy classes (default) \n\ -doxygen - Convert C++ doxygen comments to pydoc comments in proxy classes (default) \n\
-debug-doxygen-parser - Display doxygen parser module debugging information\n\
-debug-doxygen-translator - Display doxygen translator module debugging information\n\
-extranative - Return extra native C++ wraps for std containers when possible \n\ -extranative - Return extra native C++ wraps for std containers when possible \n\
-fastinit - Use fast init mechanism for classes (default)\n\ -fastinit - Use fast init mechanism for classes (default)\n\
-fastunpack - Use fast unpack mechanism to parse the argument functions \n\ -fastunpack - Use fast unpack mechanism to parse the argument functions \n\
@ -332,6 +334,9 @@ public:
SWIG_library_directory("python"); SWIG_library_directory("python");
bool debug_doxygen_parser = false;
bool debug_doxygen_translator = false;
for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) {
if (argv[i]) { if (argv[i]) {
if (strcmp(argv[i], "-interface") == 0) { if (strcmp(argv[i], "-interface") == 0) {
@ -430,6 +435,12 @@ public:
doxygen = 0; doxygen = 0;
scan_doxygen_comments = 0; scan_doxygen_comments = 0;
Swig_mark_arg(i); Swig_mark_arg(i);
} else if (strcmp(argv[i], "-debug-doxygen-translator") == 0) {
debug_doxygen_translator = true;
Swig_mark_arg(i);
} else if (strcmp(argv[i], "-debug-doxygen-parser") == 0) {
debug_doxygen_parser = true;
Swig_mark_arg(i);
} else if (strcmp(argv[i], "-fastunpack") == 0) { } else if (strcmp(argv[i], "-fastunpack") == 0) {
fastunpack = 1; fastunpack = 1;
Swig_mark_arg(i); Swig_mark_arg(i);
@ -549,7 +560,7 @@ public:
} }
if (doxygen) if (doxygen)
doxygenTranslator = new PyDocConverter; doxygenTranslator = new PyDocConverter(debug_doxygen_translator, debug_doxygen_parser);
if (!global_name) if (!global_name)
global_name = NewString("cvar"); global_name = NewString("cvar");