diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-07-02 03:40:10 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-07-02 03:40:10 (GMT) |
commit | fcfeee14047b87eeb4de49188a997fbfeed73773 (patch) | |
tree | 8e5f732783a90b2187728f5e955efb11304a420c /tools/qdoc3 | |
parent | 8aba610c22c44bf36eb2e539a06b65753c48bbc2 (diff) | |
parent | 6c9647f6673fd5738001c5bbe416b116442fbc41 (diff) | |
download | Qt-fcfeee14047b87eeb4de49188a997fbfeed73773.zip Qt-fcfeee14047b87eeb4de49188a997fbfeed73773.tar.gz Qt-fcfeee14047b87eeb4de49188a997fbfeed73773.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt into kinetic-declarativeui
Conflicts:
configure.exe
src/gui/kernel/qevent.cpp
src/gui/kernel/qevent_p.h
tools/qdoc3/codemarker.cpp
tools/qdoc3/cppcodemarker.cpp
tools/qdoc3/generator.cpp
Diffstat (limited to 'tools/qdoc3')
-rw-r--r-- | tools/qdoc3/codemarker.cpp | 54 | ||||
-rw-r--r-- | tools/qdoc3/codemarker.h | 8 | ||||
-rw-r--r-- | tools/qdoc3/cppcodemarker.cpp | 60 | ||||
-rw-r--r-- | tools/qdoc3/cppcodeparser.cpp | 4 | ||||
-rw-r--r-- | tools/qdoc3/generator.cpp | 82 | ||||
-rw-r--r-- | tools/qdoc3/generator.h | 8 | ||||
-rw-r--r-- | tools/qdoc3/htmlgenerator.cpp | 99 | ||||
-rw-r--r-- | tools/qdoc3/htmlgenerator.h | 4 | ||||
-rw-r--r-- | tools/qdoc3/javadocgenerator.cpp | 3 | ||||
-rw-r--r-- | tools/qdoc3/javadocgenerator.h | 2 | ||||
-rw-r--r-- | tools/qdoc3/node.cpp | 12 | ||||
-rw-r--r-- | tools/qdoc3/node.h | 4 | ||||
-rw-r--r-- | tools/qdoc3/qdoc3.pro | 1 |
13 files changed, 255 insertions, 86 deletions
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp index aca757c..4c018d1 100644 --- a/tools/qdoc3/codemarker.cpp +++ b/tools/qdoc3/codemarker.cpp @@ -383,9 +383,8 @@ void CodeMarker::insert(FastSection &fastSection, && (func->metaness() == FunctionNode::Ctor || func->metaness() == FunctionNode::Dtor)); } - else if ((node->type() == Node::Class) || - (node->type() == Node::Enum) || - (node->type() == Node::Typedef)) { + else if (node->type() == Node::Class || node->type() == Node::Enum + || node->type() == Node::Typedef) { irrelevant = (inheritedMember && style != SeparateList); if (!irrelevant && style == Detailed && node->type() == Node::Typedef) { const TypedefNode* typedeffe = static_cast<const TypedefNode*>(node); @@ -410,9 +409,8 @@ void CodeMarker::insert(FastSection &fastSection, if (!irrelevant) { if (!inheritedMember || style == SeparateList) { QString key = sortName(node); - if (!fastSection.memberMap.contains(key)) { - fastSection.memberMap.insert(key,node); - } + if (!fastSection.memberMap.contains(key)) + fastSection.memberMap.insert(key, node); } else { if (node->parent()->type() == Node::Class) { @@ -427,16 +425,42 @@ void CodeMarker::insert(FastSection &fastSection, } } -void CodeMarker::append(QList<Section>& sectionList, - const FastSection& fastSection) +/*! + Returns true if \a node represents a reimplemented member function. + If it is, then it is inserted in the reimplemented member map in the + section \a fs. And, the test is only performed if \a status is \e OK. + Otherwise, false is returned. + */ +bool CodeMarker::insertReimpFunc(FastSection& fs, Node* node, Status status) +{ + if (node->access() == Node::Private) + return false; + + const FunctionNode* fn = static_cast<const FunctionNode*>(node); + if ((fn->reimplementedFrom() != 0) && (status == Okay)) { + bool inherited = (!fn->relates() && (fn->parent() != (const InnerNode*)fs.innerNode)); + if (!inherited) { + QString key = sortName(fn); + if (!fs.reimpMemberMap.contains(key)) { + fs.reimpMemberMap.insert(key,node); + return true; + } + } + } + return false; + } + +/*! + If \a fs is not empty, convert it to a Section and append + the new Section to \a sectionList. + */ +void CodeMarker::append(QList<Section>& sectionList, const FastSection& fs) { - if (!fastSection.memberMap.isEmpty() || - !fastSection.inherited.isEmpty()) { - Section section(fastSection.name, - fastSection.singularMember, - fastSection.pluralMember); - section.members = fastSection.memberMap.values(); - section.inherited = fastSection.inherited; + if (!fs.isEmpty()) { + Section section(fs.name,fs.singularMember,fs.pluralMember); + section.members = fs.memberMap.values(); + section.reimpMembers = fs.reimpMemberMap.values(); + section.inherited = fs.inherited; sectionList.append(section); } } diff --git a/tools/qdoc3/codemarker.h b/tools/qdoc3/codemarker.h index 1be4c3a..91dc8b0 100644 --- a/tools/qdoc3/codemarker.h +++ b/tools/qdoc3/codemarker.h @@ -61,6 +61,7 @@ struct Section QString singularMember; QString pluralMember; NodeList members; + NodeList reimpMembers; QList<QPair<ClassNode *, int> > inherited; Section() { } @@ -79,6 +80,7 @@ struct FastSection QString singularMember; QString pluralMember; QMap<QString, Node *> memberMap; + QMap<QString, Node *> reimpMemberMap; QList<QPair<ClassNode *, int> > inherited; FastSection(const InnerNode *innerNode0, @@ -89,6 +91,11 @@ struct FastSection name(name0), singularMember(singularMember0), pluralMember(pluralMember0) { } + bool isEmpty() const { + return (memberMap.isEmpty() && inherited.isEmpty() && + reimpMemberMap.isEmpty()); + } + }; class CodeMarker @@ -160,6 +167,7 @@ class CodeMarker Node *node, SynopsisStyle style, Status status); + bool insertReimpFunc(FastSection& fs, Node* node, Status status); void append(QList<Section>& sectionList, const FastSection& fastSection); private: diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp index ee62728..22fe301 100644 --- a/tools/qdoc3/cppcodemarker.cpp +++ b/tools/qdoc3/cppcodemarker.cpp @@ -43,7 +43,7 @@ cppcodemarker.cpp */ -#include <QtCore> +#include <qdebug.h> #include "atom.h" #include "cppcodemarker.h" #include "node.h" @@ -449,6 +449,21 @@ QString CppCodeMarker::functionEndRegExp(const QString& /* funcName */) return "^\\}$"; } +#if 0 + FastSection privateReimpFuncs(classe, + "Private Reimplemented Functions", + "private reimplemented function", + "private reimplemented functions"); + FastSection protectedReimpFuncs(classe, + "Protected Reimplemented Functions", + "protected reimplemented function", + "protected reimplemented functions"); + FastSection publicReimpFuncs(classe, + "Public Reimplemented Functions", + "public reimplemented function", + "public reimplemented functions"); +#endif + QList<Section> CppCodeMarker::sections(const InnerNode *inner, SynopsisStyle style, Status status) @@ -463,14 +478,8 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner, "Private Functions", "private function", "private functions"); - FastSection privateSlots(classe, - "Private Slots", - "private slot", - "private slots"); - FastSection privateTypes(classe, - "Private Types", - "private type", - "private types"); + FastSection privateSlots(classe, "Private Slots", "private slot", "private slots"); + FastSection privateTypes(classe, "Private Types", "private type", "private types"); FastSection protectedFunctions(classe, "Protected Functions", "protected function", @@ -490,27 +499,15 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner, FastSection publicFunctions(classe, "Public Functions", "public function", - "public functions"); - FastSection publicSignals(classe, - "Signals", - "signal", - "signals"); - FastSection publicSlots(classe, - "Public Slots", - "public slot", - "public slots"); - FastSection publicTypes(classe, - "Public Types", - "public type", - "public types"); + "public functions"); + FastSection publicSignals(classe, "Signals", "signal", "signals"); + FastSection publicSlots(classe, "Public Slots", "public slot", "public slots"); + FastSection publicTypes(classe, "Public Types", "public type", "public types"); FastSection publicVariables(classe, "Public Variables", "public type", "public variables"); - FastSection properties(classe, - "Properties", - "property", - "properties"); + FastSection properties(classe, "Properties", "property", "properties"); FastSection relatedNonMembers(classe, "Related Non-Members", "related non-member", @@ -587,7 +584,8 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner, insert(publicVariables, *c, style, status); } else if ((*c)->type() == Node::Function) { - insert(publicFunctions, *c, style, status); + if (!insertReimpFunc(publicFunctions,*c,status)) + insert(publicFunctions, *c, style, status); } else { insert(publicTypes, *c, style, status); @@ -607,7 +605,8 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner, insert(protectedVariables,*c,style,status); } else if ((*c)->type() == Node::Function) { - insert(protectedFunctions, *c, style, status); + if (!insertReimpFunc(protectedFunctions,*c,status)) + insert(protectedFunctions, *c, style, status); } else { insert(protectedTypes, *c, style, status); @@ -623,7 +622,12 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner, insert(staticPrivateMembers,*c,style,status); } else if ((*c)->type() == Node::Function) { +<<<<<<< HEAD:tools/qdoc3/cppcodemarker.cpp insert(privateFunctions,*c,style,status); +======= + if (!insertReimpFunc(privateFunctions,*c,status)) + insert(privateFunctions, *c, style, status); +>>>>>>> 6c9647f6673fd5738001c5bbe416b116442fbc41:tools/qdoc3/cppcodemarker.cpp } else { insert(privateTypes,*c,style,status); diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index f186805..6d703fb 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -867,8 +867,12 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc, // Note: Setting the access to Private hides the documentation, // but setting the status to Internal makes the node available // in the XML output when the WebXMLGenerator is used. +#if 0 + // Reimplemented functions now reported in separate sections. func->setAccess(Node::Private); func->setStatus(Node::Internal); +#endif + func->setReimp(true); } else { doc.location().warning(tr("Ignored '\\%1' in %2") diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index c552271..d4a895b 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -44,7 +44,7 @@ */ #include <QtCore> #include <qdir.h> - +#include <qdebug.h> #include "codemarker.h" #include "config.h" #include "doc.h" @@ -257,7 +257,7 @@ void Generator::generateFakeNode(const FakeNode * /* fake */, { } -void Generator::generateText(const Text& text, +bool Generator::generateText(const Text& text, const Node *relative, CodeMarker *marker) { @@ -270,44 +270,41 @@ void Generator::generateText(const Text& text, true, numAtoms); endText(relative, marker); + return true; } + return false; } #ifdef QDOC_QML +<<<<<<< HEAD:tools/qdoc3/generator.cpp /*! Extract sections of markup text surrounded by \e qmltext and \e endqmltext and output them. */ -void Generator::generateQmlText(const Text& text, +bool Generator::generateQmlText(const Text& text, const Node *relative, CodeMarker *marker, const QString& qmlName) { - if (text.firstAtom() != 0) { - startText(relative, marker); - const Atom *atom = text.firstAtom(); - while (atom) { - if (atom->type() != Atom::QmlText) { - atom = atom->next(); - } - else { - int n = 0; - atom = atom->next(); - while (atom && (atom->type() != Atom::EndQmlText)) { - if (atom->string() == relative->name()) { - Atom renamed(*atom); - renamed.setString(qmlName); - n = 1 + generateAtom(&renamed, relative, marker); - } - else - n = 1 + generateAtom(atom, relative, marker); - while (n-- > 0) - atom = atom->next(); - } + const Atom* atom = text.firstAtom(); + if (atom == 0) + return false; + + startText(relative, marker); + while (atom) { + if (atom->type() != Atom::QmlText) + atom = atom->next(); + else { + atom = atom->next(); + while (atom && (atom->type() != Atom::EndQmlText)) { + int n = 1 + generateAtom(atom, relative, marker); + while (n-- > 0) + atom = atom->next(); } } - endText(relative, marker); } + endText(relative, marker); + return true; } #endif @@ -331,12 +328,20 @@ void Generator::generateBody(const Node *node, CodeMarker *marker) } if (node->doc().isEmpty()) { - if (!quiet) // ### might be unnecessary + if (!quiet && !node->isReimp()) // ### might be unnecessary node->location().warning(tr("No documentation for '%1'") .arg(marker->plainFullName(node))); } else { - generateText(node->doc().body(), node, marker); + if (node->type() == Node::Function) { + const FunctionNode *func = static_cast<const FunctionNode *>(node); + if (func->reimplementedFrom() != 0) + generateReimplementedFrom(func, marker); + } + + if (!generateText(node->doc().body(), node, marker)) + if (node->isReimp()) + return; if (node->type() == Node::Enum) { const EnumNode *enume = (const EnumNode *) node; @@ -374,7 +379,6 @@ void Generator::generateBody(const Node *node, CodeMarker *marker) } else if (node->type() == Node::Function) { const FunctionNode *func = static_cast<const FunctionNode *>(node); - QSet<QString> definedParams; QList<Parameter>::ConstIterator p = func->parameters().begin(); while (p != func->parameters().end()) { @@ -420,7 +424,7 @@ void Generator::generateBody(const Node *node, CodeMarker *marker) } } } - if (needWarning) + if (needWarning && !func->isReimp()) node->doc().location().warning( tr("Undocumented parameter '%1' in %2") .arg(*a).arg(marker->plainFullName(node))); @@ -435,9 +439,11 @@ void Generator::generateBody(const Node *node, CodeMarker *marker) if (!body.contains("return", Qt::CaseInsensitive)) node->doc().location().warning(tr("Undocumented return value")); } - +#if 0 + // Now we put this at the top, before the other text. if (func->reimplementedFrom() != 0) generateReimplementedFrom(func, marker); +#endif } } @@ -935,7 +941,8 @@ void Generator::generateReimplementedFrom(const FunctionNode *func, from->parent()->access() != Node::Private) { Text text; text << Atom::ParaLeft << "Reimplemented from "; - appendFullName(text, from->parent(), func, marker, from); + QString fullName = from->parent()->name() + "::" + from->name() + "()"; + appendFullName(text, from->parent(), fullName, from); text << "." << Atom::ParaRight; generateText(text, func, marker); } @@ -1016,6 +1023,19 @@ void Generator::appendFullName(Text& text, << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK); } +void Generator::appendFullName(Text& text, + const Node *apparentNode, + const QString& fullName, + const Node *actualNode) +{ + if (actualNode == 0) + actualNode = apparentNode; + text << Atom(Atom::LinkNode, CodeMarker::stringForNode(actualNode)) + << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK) + << Atom(Atom::String, fullName) + << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK); +} + void Generator::appendSortedNames(Text& text, const ClassNode *classe, const QList<RelatedClass> &classes, diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h index 772b978..6d42b2e 100644 --- a/tools/qdoc3/generator.h +++ b/tools/qdoc3/generator.h @@ -93,11 +93,11 @@ class Generator virtual void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker); virtual void generateFakeNode(const FakeNode *fake, CodeMarker *marker); - virtual void generateText(const Text& text, + virtual bool generateText(const Text& text, const Node *relative, CodeMarker *marker); #ifdef QDOC_QML - virtual void generateQmlText(const Text& text, + virtual bool generateQmlText(const Text& text, const Node *relative, CodeMarker *marker, const QString& qmlName); @@ -153,6 +153,10 @@ class Generator const Node *relative, CodeMarker *marker, const Node *actualNode = 0); + void appendFullName(Text& text, + const Node *apparentNode, + const QString& fullName, + const Node *actualNode); void appendSortedNames(Text& text, const ClassNode *classe, const QList<RelatedClass> &classes, diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index da12dc8..8726665 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -1105,16 +1105,34 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner, sections = marker->sections(inner, CodeMarker::Summary, CodeMarker::Okay); s = sections.begin(); while (s != sections.end()) { - if (s->members.isEmpty()) { + if (s->members.isEmpty() && s->reimpMembers.isEmpty()) { if (!s->inherited.isEmpty()) needOtherSection = true; - } else { - out() << "<hr />\n"; - out() << "<a name=\"" - << registerRef((*s).name.toLower()) - << "\"></a>\n"; - out() << "<h2>" << protect((*s).name) << "</h2>\n"; - generateSectionList(*s, inner, marker, CodeMarker::Summary); + } + else { + if (!s->members.isEmpty()) { + out() << "<hr />\n"; + out() << "<a name=\"" + << registerRef((*s).name.toLower()) + << "\"></a>\n"; + out() << "<h2>" << protect((*s).name) << "</h2>\n"; + generateSection(s->members, inner, marker, CodeMarker::Summary); + } + if (!s->reimpMembers.isEmpty()) { + QString name = QString("Reimplemented ") + (*s).name; + out() << "<hr />\n"; + out() << "<a name=\"" + << registerRef(name.toLower()) + << "\"></a>\n"; + out() << "<h2>" << protect(name) << "</h2>\n"; + generateSection(s->reimpMembers, inner, marker, CodeMarker::Summary); + } + + if (!s->inherited.isEmpty()) { + out() << "<ul>\n"; + generateSectionInheritedList(*s, inner, marker, true); + out() << "</ul>\n"; + } } ++s; } @@ -2355,6 +2373,71 @@ void HtmlGenerator::generateOverviewList(const Node *relative, CodeMarker * /* m } #ifdef QDOC_NAME_ALIGNMENT +void HtmlGenerator::generateSection(const NodeList& nl, + const Node *relative, + CodeMarker *marker, + CodeMarker::SynopsisStyle style) +{ + bool name_alignment = true; + if (!nl.isEmpty()) { + bool twoColumn = false; + if (style == CodeMarker::SeparateList) { + name_alignment = false; + twoColumn = (nl.count() >= 16); + } + else if (nl.first()->type() == Node::Property) { + twoColumn = (nl.count() >= 5); + name_alignment = false; + } + if (name_alignment) { + out() << "<table class=\"alignedsummary\" border=\"0\" cellpadding=\"0\" " + << "cellspacing=\"0\" width=\"100%\">\n"; + } + else { + if (twoColumn) + out() << "<p><table class=\"propsummary\" width=\"100%\" " + << "border=\"0\" cellpadding=\"0\"" + << " cellspacing=\"0\">\n" + << "<tr><td width=\"45%\" valign=\"top\">"; + out() << "<ul>\n"; + } + + int i = 0; + NodeList::ConstIterator m = nl.begin(); + while (m != nl.end()) { + if ((*m)->access() == Node::Private) { + ++m; + continue; + } + + if (name_alignment) { + out() << "<tr><td class=\"memItemLeft\" " + << "align=\"right\" valign=\"top\">"; + } + else { + if (twoColumn && i == (int) (nl.count() + 1) / 2) + out() << "</ul></td><td valign=\"top\"><ul>\n"; + out() << "<li><div class=\"fn\">"; + } + + generateSynopsis(*m, relative, marker, style, name_alignment); + if (name_alignment) + out() << "</td></tr>\n"; + else + out() << "</div></li>\n"; + i++; + ++m; + } + if (name_alignment) + out() << "</table>\n"; + else { + out() << "</ul>\n"; + if (twoColumn) + out() << "</td></tr>\n</table></p>\n"; + } + } +} + void HtmlGenerator::generateSectionList(const Section& section, const Node *relative, CodeMarker *marker, diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index cd499a6..e4a3ec1 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -161,6 +161,10 @@ class HtmlGenerator : public PageGenerator void generateInstantiatedBy(const ClassNode* cn, CodeMarker* marker); #endif #ifdef QDOC_NAME_ALIGNMENT + void generateSection(const NodeList& nl, + const Node *relative, + CodeMarker *marker, + CodeMarker::SynopsisStyle style); void generateSynopsis(const Node *node, const Node *relative, CodeMarker *marker, diff --git a/tools/qdoc3/javadocgenerator.cpp b/tools/qdoc3/javadocgenerator.cpp index b32425c..294877b 100644 --- a/tools/qdoc3/javadocgenerator.cpp +++ b/tools/qdoc3/javadocgenerator.cpp @@ -272,9 +272,10 @@ void JavadocGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker HtmlGenerator::generateFakeNode(fake, marker); } -void JavadocGenerator::generateText(const Text& text, const Node *relative, CodeMarker *marker) +bool JavadocGenerator::generateText(const Text& text, const Node *relative, CodeMarker *marker) { HtmlGenerator::generateText(text, relative, marker); + return true; } void JavadocGenerator::generateBody(const Node *node, CodeMarker *marker) diff --git a/tools/qdoc3/javadocgenerator.h b/tools/qdoc3/javadocgenerator.h index ba9b15d..5431c38 100644 --- a/tools/qdoc3/javadocgenerator.h +++ b/tools/qdoc3/javadocgenerator.h @@ -68,7 +68,7 @@ protected: void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker); void generateFakeNode( const FakeNode *fake, CodeMarker *marker ); - void generateText( const Text& text, const Node *relative, CodeMarker *marker ); + bool generateText( const Text& text, const Node *relative, CodeMarker *marker ); void generateBody( const Node *node, CodeMarker *marker ); void generateAlsoList( const Node *node, CodeMarker *marker ); diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 922ef3c..610249d 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -874,6 +874,18 @@ void FunctionNode::setOverload(bool overlode) } /*! + Sets the function node's reimplementation flag to \a r. + When \a r is true, it is supposed to mean that this function + is a reimplementation of a virtual function in a base class, + but it really just means the \e reimp command was seen in the + qdoc comment. + */ +void FunctionNode::setReimp(bool r) +{ + reimp = r; +} + +/*! */ void FunctionNode::addParameter(const Parameter& parameter) { diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index c81cfa8..17ec447 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -148,6 +148,7 @@ class Node void setTemplateStuff(const QString &templateStuff) { tpl = templateStuff; } virtual bool isInnerNode() const = 0; + virtual bool isReimp() const { return false; } Type type() const { return typ; } virtual SubType subType() const { return NoSubType; } InnerNode *parent() const { return par; } @@ -538,6 +539,7 @@ class FunctionNode : public LeafNode void setConst(bool conste) { con = conste; } void setStatic(bool statique) { sta = statique; } void setOverload(bool overlode); + void setReimp(bool r); void addParameter(const Parameter& parameter); inline void setParameters(const QList<Parameter>& parameters); void borrowParameterNames(const FunctionNode *source); @@ -552,6 +554,7 @@ class FunctionNode : public LeafNode bool isConst() const { return con; } bool isStatic() const { return sta; } bool isOverload() const { return ove; } + bool isReimp() const { return reimp; } int overloadNumber() const; int numOverloads() const; const QList<Parameter>& parameters() const { return params; } @@ -577,6 +580,7 @@ class FunctionNode : public LeafNode bool con : 1; bool sta : 1; bool ove : 1; + bool reimp: 1; QList<Parameter> params; const FunctionNode *rf; const PropertyNode *ap; diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro index ed27669..6c1cfd2 100644 --- a/tools/qdoc3/qdoc3.pro +++ b/tools/qdoc3/qdoc3.pro @@ -6,6 +6,7 @@ DEFINES += QT_NO_CAST_TO_ASCII QT = core xml CONFIG += console +CONFIG -= debug_and_release_target build_all:!build_pass { CONFIG -= build_all CONFIG += release |