aboutsummaryrefslogtreecommitdiffstats
path: root/generators
diff options
context:
space:
mode:
Diffstat (limited to 'generators')
-rw-r--r--generators/boostpython/boostpythongenerator.cpp4
-rw-r--r--generators/boostpython/cppgenerator.cpp2
-rw-r--r--generators/qtdoc/qtdocgenerator.cpp61
-rw-r--r--generators/qtdoc/qtdocgenerator.h1
4 files changed, 60 insertions, 8 deletions
diff --git a/generators/boostpython/boostpythongenerator.cpp b/generators/boostpython/boostpythongenerator.cpp
index c62b876d8..8930c40cf 100644
--- a/generators/boostpython/boostpythongenerator.cpp
+++ b/generators/boostpython/boostpythongenerator.cpp
@@ -36,9 +36,9 @@
static Indentor INDENT;
static void dump_function(AbstractMetaFunctionList lst);
-QString BoostPythonGenerator::getWrapperName(const AbstractMetaClass* clazz)
+QString BoostPythonGenerator::getWrapperName(const AbstractMetaClass* metaClass)
{
- QString result = clazz->name().toLower();
+ QString result = metaClass->typeEntry()->qualifiedCppName().toLower();
result.replace("::", "_");
result += "_wrapper";
return result;
diff --git a/generators/boostpython/cppgenerator.cpp b/generators/boostpython/cppgenerator.cpp
index dd90bc9a4..ca4b704ff 100644
--- a/generators/boostpython/cppgenerator.cpp
+++ b/generators/boostpython/cppgenerator.cpp
@@ -955,7 +955,7 @@ void CppGenerator::writeBoostDeclaration(QTextStream& s, const AbstractMetaClass
s << INDENT << "python_cls."
<< strAccess
<< "(\"" << field->name() << "\", &"
- << field->enclosingClass()->name() << "::" << field->name() << ");" << endl;
+ << field->enclosingClass()->typeEntry()->qualifiedCppName() << "::" << field->name() << ");" << endl;
}
}
diff --git a/generators/qtdoc/qtdocgenerator.cpp b/generators/qtdoc/qtdocgenerator.cpp
index 8e8498db4..762c8a9b6 100644
--- a/generators/qtdoc/qtdocgenerator.cpp
+++ b/generators/qtdoc/qtdocgenerator.cpp
@@ -129,6 +129,38 @@ QString QtXmlToSphinx::popOutputBuffer()
return strcpy;
}
+QString QtXmlToSphinx::resolveContextForMethod(const QString& methodName)
+{
+ QString currentClass = m_context.split(".").last();
+
+ const AbstractMetaClass* metaClass = 0;
+ foreach (const AbstractMetaClass* cls, m_generator->classes()) {
+ if (cls->name() == currentClass) {
+ metaClass = cls;
+ break;
+ }
+ }
+
+ if (metaClass) {
+ QList<const AbstractMetaFunction*> funcList;
+ foreach (const AbstractMetaFunction* func, metaClass->queryFunctionsByName(methodName)) {
+ if (methodName == func->name())
+ funcList.append(func);
+ }
+
+ const AbstractMetaClass* implementingClass = 0;
+ foreach (const AbstractMetaFunction* func, funcList) {
+ implementingClass = func->implementingClass();
+ if (implementingClass->name() == currentClass)
+ break;
+ }
+
+ if (implementingClass)
+ return implementingClass->name();
+ }
+
+ return m_context;
+}
QString QtXmlToSphinx::transform(const QString& doc)
{
@@ -484,12 +516,20 @@ void QtXmlToSphinx::handleLinkTag(QXmlStreamReader& reader)
if (l_type == "function" && !m_context.isEmpty()) {
l_linktag = " :meth:`";
QStringList rawlinklist = l_linkref.split(".");
- if (rawlinklist.size() == 1 || rawlinklist[0] == m_context)
- l_linkref.prepend("~" + m_context + '.');
+ if (rawlinklist.size() == 1 || rawlinklist.first() == m_context) {
+ QString context = resolveContextForMethod(rawlinklist.last());
+ l_linkref.prepend('~' + context + '.');
+ }
} else if (l_type == "function" && m_context.isEmpty()) {
l_linktag = " :func:`";
} else if (l_type == "class") {
l_linktag = " :class:`";
+ QStringList rawlinklist = l_linkref.split(".");
+ QStringList splittedContext = m_context.split(".");
+ if (rawlinklist.size() == 1 || rawlinklist.first() == splittedContext.last()) {
+ splittedContext.removeLast();
+ l_linkref.prepend('~' + splittedContext.join(".") + '.');
+ }
} else if (l_type == "enum") {
l_linktag = " :attr:`";
} else if (l_type == "page" && l_linkref == m_generator->moduleName()) {
@@ -762,7 +802,7 @@ QTextStream& operator<<(QTextStream& s, const QtXmlToSphinx::Table &table)
}
static QString getClassName(const AbstractMetaClass *cppClass) {
- return cppClass->name().replace("::", ".");
+ return QString(cppClass->typeEntry()->qualifiedCppName()).replace("::", ".");
}
static QString getFuncName(const AbstractMetaFunction *cppFunc) {
@@ -913,9 +953,18 @@ QString QtDocGenerator::parseFunctionDeclaration(const QString &doc, const Abstr
QString methName = data.mid(0, data.indexOf("("));
QString methArgs = data.mid(data.indexOf("("));
- data = QString("def :meth:`%1<%2.%3>` %4")
+ QString scope = cppClass->name();
+ QStringList splittedMethName = methName.split(".");
+
+ if (splittedMethName.first() == scope) {
+ splittedMethName.removeFirst();
+ methName = splittedMethName.join(".");
+ }
+ scope.append(".");
+
+ data = QString("def :meth:`%1<%2%3>` %4")
.arg(methName)
- .arg(cppClass->name())
+ .arg(scope)
.arg(methName)
.arg(methArgs);
@@ -1183,6 +1232,8 @@ void QtDocGenerator::writeFunctionSignature(QTextStream& s, const AbstractMetaCl
{
if (!func->isConstructor())
s << getClassName(cppClass) << '.';
+ else if (func->implementingClass() && func->implementingClass()->enclosingClass())
+ s << func->implementingClass()->enclosingClass()->name() << '.';
s << getFuncName(func) << "(" << parseArgDocStyle(cppClass, func) << ")";
}
diff --git a/generators/qtdoc/qtdocgenerator.h b/generators/qtdoc/qtdocgenerator.h
index c9b411335..b312d4455 100644
--- a/generators/qtdoc/qtdocgenerator.h
+++ b/generators/qtdoc/qtdocgenerator.h
@@ -90,6 +90,7 @@ public:
}
private:
+ QString resolveContextForMethod(const QString& methodName);
QString transform(const QString& doc);
void handleHeadingTag(QXmlStreamReader& reader);