From 99bc7e9eb02e94ba730689d7c57106c3bbe5c6cf Mon Sep 17 00:00:00 2001 From: Dmitry Kabak Date: Sun, 19 Aug 2012 13:49:21 +0000 Subject: [PATCH] Added support for const qualifier and references in link-objects in JavaDoc link translator git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2012-doxygen@13663 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- .../src/JavaDocConverter.cpp | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.cpp b/Source/DoxygenTranslator/src/JavaDocConverter.cpp index 465119c48..204c07b61 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.cpp +++ b/Source/DoxygenTranslator/src/JavaDocConverter.cpp @@ -339,21 +339,34 @@ string JavaDocConverter::convertLink(string linkObject) { // also converting arrays to pointers string paramStr = params[i]; String *swigType = NewString(""); + + // handle const qualifier + if (paramStr.find("const") != string::npos) + SwigType_add_qualifier(swigType, "const"); + + // handle pointers, references and arrays for (int j=(int)params[i].size() - 1; j>=0; j--) { // skip all the [...] blocks, write 'p.' for every of it if (paramStr[j] == ']') { while (j>=0 && paramStr[j] != '[') j--; // no closing brace - if (!j) + if (j < 0) return ""; - Append(swigType, "p."); + SwigType_add_pointer(swigType); continue; } else if (paramStr[j] == '*') - Append(swigType, "p."); + SwigType_add_pointer(swigType); + else if (paramStr[j] == '&') + SwigType_add_reference(swigType); else if (isalnum(paramStr[j])) { - Append(swigType, paramStr.substr(0, j + 1).c_str()); + size_t typeNameStart = paramStr.find_last_of(' ', j + 1); + if (typeNameStart == string::npos) + typeNameStart = 0; + else + typeNameStart++; + Append(swigType, paramStr.substr(typeNameStart, j - typeNameStart + 1).c_str()); break; } }