Added doxygen:notranslate feature, to prevent running of automatic comment translation

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2012-doxygen@13517 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dmitry Kabak 2012-08-05 14:16:57 +00:00
commit 346fdfcab7
4 changed files with 139 additions and 6 deletions

View file

@ -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 \

View file

@ -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.
*/
%}

View file

@ -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,

View file

@ -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);
}
}
}