diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index eb8f7b03a..86e33037a 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -189,8 +189,10 @@ CPP_TEST_CASES += \ disown \ doxygen_parsing \ doxygen_basic_translate \ + doxygen_basic_notranslate \ doxygen_translate \ doxygen_translate_all_tags \ + doxygen_translate_links \ dynamic_cast \ empty \ enum_rename \ diff --git a/Examples/test-suite/doxygen_basic_notranslate.i b/Examples/test-suite/doxygen_basic_notranslate.i new file mode 100644 index 000000000..8699e3289 --- /dev/null +++ b/Examples/test-suite/doxygen_basic_notranslate.i @@ -0,0 +1,103 @@ +%module doxygen_basic_notranslate + +%include "doxygen_basic_translate.h" +%feature("doxygen:notranslate") function; +%feature("doxygen:notranslate") function2; +%feature("doxygen:notranslate") function3; +%feature("doxygen:notranslate") function4; +%feature("doxygen:notranslate") function5; +%feature("doxygen:notranslate") function6; +%feature("doxygen:notranslate") function7; + +%inline %{ + +/** + * \brief + * Brief description. + * + * The comment text + * \author Some author + * \return Some number + * \sa function2 + */ +int function() +{ +} + +/** + * A test of a very very very very very very very very very very very very very very very very + * very very very very very long comment string. + */ +int function2() +{ +} + +/** + * A test for overloaded functions + * This is function \b one + */ +int function3(int a) +{ +} + +/** + * A test for overloaded functions + * This is function \b two + */ +int function3(int a, int b) +{ +} + +/** + * A test of some mixed tag usage + * \if CONDITION + * This \a code fragment shows us something \. + * \par Minuses: + * \arg it's senseless + * \arg it's stupid + * \arg it's null + * + * \warning This may not work as expected + * + * \code + * int main() { while(true); } + * \endcode + * \endif + */ +int function4() +{ +} + + +int function5(int a) +{ +} +/**< This is a post comment. */ + +/** + * Test for default args + * @param a Some parameter, default is 42 + */ +int function6(int a=42) +{ +} + +class Shape +{ +public: + typedef Shape* superType; +}; + +/** + * Test for a parameter with difficult type + * (mostly for python) + * @param a Very strange param + */ +void function7(Shape::superType *a[10]) +{ +} + +/** + * Comment at the end of file should be ignored. + */ +%} diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.cpp b/Source/DoxygenTranslator/src/JavaDocConverter.cpp index 123eb040b..b03556b47 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.cpp +++ b/Source/DoxygenTranslator/src/JavaDocConverter.cpp @@ -412,6 +412,16 @@ String *JavaDocConverter::makeDocumentation(Node *node) { return NULL; } + if (GetFlag(node, "feature:doxygen:notranslate")) { + String *comment = NewString("/**\n"); + Append(comment, documentation); + // reformat the comment + Replaceall(comment, "\n *", "\n"); + Replaceall(comment, "\n", "\n * "); + Append(comment, "\n */\n"); + return comment; + } + std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation)); // entityList.sort(CompareDoxygenEntities()); sorting currently not used, diff --git a/Source/DoxygenTranslator/src/PyDocConverter.cpp b/Source/DoxygenTranslator/src/PyDocConverter.cpp index df9466067..777a54201 100644 --- a/Source/DoxygenTranslator/src/PyDocConverter.cpp +++ b/Source/DoxygenTranslator/src/PyDocConverter.cpp @@ -254,9 +254,18 @@ String *PyDocConverter::makeDocumentation(Node *n) { documentation = getDoxygenComment(n); if (!Swig_is_generated_overload(n) && documentation) { currentNode = n; - std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation)); - DoxygenEntity root("root", entityList); - allDocumentation.push_back(translateSubtree(root)); + if (GetFlag(n, "feature:doxygen:notranslate")) { + String *comment = NewString(""); + Append(comment, documentation); + Replaceall(comment, "\n *", "\n"); + allDocumentation.push_back(Char(comment)); + Delete(comment); + } + else { + std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation)); + DoxygenEntity root("root", entityList); + allDocumentation.push_back(translateSubtree(root)); + } } n = Getattr(n, "sym:nextSibling"); } @@ -279,9 +288,18 @@ String *PyDocConverter::makeDocumentation(Node *n) { else { documentation = getDoxygenComment(n); if (documentation != NULL) { - std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation)); - DoxygenEntity root("root", entityList); - pyDocString = translateSubtree(root); + if (GetFlag(n, "feature:doxygen:notranslate")) { + String *comment = NewString(""); + Append(comment, documentation); + Replaceall(comment, "\n *", "\n"); + pyDocString = Char(comment); + Delete(comment); + } + else { + std::list < DoxygenEntity > entityList = parser.createTree(Char(documentation), Char(Getfile(documentation)), Getline(documentation)); + DoxygenEntity root("root", entityList); + pyDocString = translateSubtree(root); + } } }