summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/cppcodeparser.h
Commit message (Collapse)AuthorAgeFilesLines
* qdoc is moving back to qttoolsOswald Buddenhagen2015-10-221-255/+0
| | | | | | Change-Id: Icb5abd32a1cbc3e8d876341c877e8d2a963c0e25 Reviewed-by: Frederik Gladhorn <[email protected]> Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: Allow formal parameters in link targetsMartin Smith2015-08-161-12/+4
| | | | | | | | | | | | | | This update allows qdoc to handle \l commands for linking to functions, where the formal parameters are included in the link target. For example, \l {QWidget::find(QString name)} will only match a member function of QWidget that has a single parameter of type QString. The parameter name is not used in the search. Change-Id: I8a31c9a7ed632f12a0e6d8a33cbb5cd361098317 Task-number: QTBUG-47286 Reviewed-by: Martin Smith <[email protected]>
* qdoc: don't hold ParsedParameter in a QListMarc Mutz2015-07-101-1/+3
| | | | | | | | | | | | ParsedParameter is larger than a void*, so holding it in QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Fix by marking it movable, and holding in a QVector instead. Change-Id: I5b1bea9ef7b796a790d8e86404531ae19a4aca66 Reviewed-by: Martin Smith <[email protected]>
* qdoc: Parsing of inline friendsMartin Smith2015-07-071-1/+11
| | | | | | | | | | | | | | | Some functions in qstring.h are marked with both friend and inline, and qdoc ignores them when it sees the friend keyword. Then, when qdoc finds the documentation for the functions in the cpp file, it reports an error that it can't associate the documentation with anything it saw in a .h file. This update corrects that problem. It also improves qdoc's parsing of other inline functions in other files. Change-Id: If94e403809af3ee3238eac0f2861b027197d6d3c Task-number: QTBUG-46531 Reviewed-by: Martin Smith <[email protected]>
* qdoc: Update documentation of \qmlabstractMartin Smith2015-05-121-0/+1
| | | | | | | | | | | | | The \qmlabstract command was missing from the qdoc user manual, and qdoc was still allowing the \abstract command to be used for marking up the abstract of a scientific paper. The \abstract command is now made a synonym of \qmlabstract, and they are both added to the qdoc user manual. Change-Id: I003ac50b8dabbf037f18d9ea3e6d88a12d69bf5f Task-number: QTBUG-46003 Reviewed-by: Venugopal Shivashankar <[email protected]> Reviewed-by: Martin Smith <[email protected]>
* qdoc: Changing InnerNode to AggregateMartin Smith2015-04-131-13/+13
| | | | | | | | An Aggregate node is a tree node that is not a leaf. Change-Id: I4a3964865fb653a217ee75d0b21e563f7f990a1c Task-number: QTBUG-45450 Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: More data member name changesMartin Smith2015-04-111-4/+4
| | | | | | | | | | | In preparation for refactoring the Node class hierarchy, the names of a few enum types and the functions that set and get them are changed so that they will not be confused with other uses of the word Type. Change-Id: I0496b46e5d7adffccadcb464aedb2806728e781d Task-number: QTBUG-45450 Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: Data member name changesMartin Smith2015-04-081-1/+1
| | | | | | | | | | | In preparation for refactoring the Node class hierarchy, several data member names and some getter and setter names in the Node hierarchy have been changed to make them more readable. Change-Id: Id76ce21c960e4033673f5cf0684aa70e701957b1 Task-number: QTBUG-45450 Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: Correct parsing of the using clauseMartin Smith2015-02-261-1/+1
| | | | | | | | | | | qdoc could only parse the using clause where the 'using' keyword was followed by 'namespace'. Now it can parse using clauses with or without 'namespace'. Change-Id: Ic4aad025c00b3bda2bc1cbd52d0ba8dbbad653e5 Task-number: QTBUG-44553 Reviewed-by: Alex Blasche <[email protected]> Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: Support documentation of JavaScriptMartin Smith2015-02-201-3/+2
| | | | | | | | | | | | | | | | | | | | | This update provides the actual support for documenting JavaScript. It has been tested with JavaScript commands in qdoc comments in .qdoc files but not in .js files. Currently, we have the use case of needing to document JavaScript using qdoc comments in .qdoc files. For each qdoc command for QML, i.e. \qmltype, \qmlproperty, etc, there is now a corresponding JavaScript command, i.e. \jstype, \jsproperty, etc. Some of these might not be needed, but they are all provided. Briefly, document JavaScript in a .qdoc file the same way you would document QML in a .qdoc file, but instead of using the \qmlxxx commands, use \jsxxx commands. Change-Id: Ib68a5f66c16472af87d9f776db162332ca13fbb7 Task-number: QTBUG-43715 Reviewed-by: Topi Reiniö <[email protected]>
* qdoc: Mark Genus of each Node objectMartin Smith2015-02-201-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | The concept of Genus was introduced to allow link commands (\l) to specify what kind of entity should be accepted as the link target. Possible values were CPP, QML, DOC, and DONTCARE. This became necessary when we started seeing more cases where the same name was used for a C++ class and a QML type. The Genus for an entity was returned by a member function of the specific subclass of Node that represents that entity. For example, QmlTypeNode::genus() returns QML, while Class::genus() returns CPP. Now we are seeing an increasing need to document Javascript. Rather than add subclasses of all the QmlXxxNode classes to represent the javascript entities, the Qml Node subclasses will be used. JS is added to the Genus enum to mark Nodes that represent javascript entities. But this requires storing the Genus value in the node, rather than just having a member function in each subclass return it. Now there are two member functions in the Node base class, genus() and setGenus(), and the value is stored in the Node. This doesn't increase the size, because there was a byte available. Change-Id: Ifcee78595f4288792e09bb255d2e8c01ebafac46 Task-number: QTBUG-43715 Reviewed-by: Topi Reiniö <[email protected]>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <[email protected]>
* qdoc: Change uses of module and qmlModuleMartin Smith2015-02-031-1/+1
| | | | | | | | | | | | | | | | | The uses of moduleName and qmlModuleName are changed to physicalModuleName and logicalModuleName respectively. A few other names are also changed in the same way. These changes are being done both to support documentation of javascript but also to emphasize that moduleName is really the name of the physical library module the entity is part of, and qmlModuleName is really the name of a collection of logical entities that is versionable and that may contain entities located in different physical modules. Change-Id: If49392aabf5950dc7b97c84f8134e9369e76dd1b Task-number: QTBUG-43715 Reviewed-by: Martin Smith <[email protected]>
* qdoc: Change name of node typeMartin Smith2015-01-221-0/+5
| | | | | | | | | | | | QmlClassNode is renamed to QmlTypeNode. This is done in preparation for implementing qdoc support for documenting javascript code. Next, QmlTypeNode will be renamed to JsTypeNode, and a new QmlTypeNode will be declared that will inherit JsTypeNode. Change-Id: Ia5d0c367d06c26cb43f887927bbcb096afcb7301 Task-number: QTBUG-43715 Reviewed-by: Topi Reiniö <[email protected]>
* Add Q_DECL_OVERRIDE in the src subdirectoryOlivier Goffart2014-12-031-9/+9
| | | | | | | | | | Done automatically with clang-modernize on linux (But does not add Q_DECL_OVERRIDE to the function that are marked as inline because it a compilation error with MSVC2010) Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171 Reviewed-by: Thiago Macieira <[email protected]>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <[email protected]>
* Doc: Added \qtvariable command to QDoc.Jerome Pasion2013-08-021-0/+1
| | | | | | | | | | | | | | | | Specifies the QT variable needed in the .pro file. The argument of the command is the qmake QT variable. To use, add "\qtvariable <value>" to a QDoc comment which contains the \module command. QDoc will then associate the class with the QT variable. Only supported for C++ classes at the moment. Part of work done for QTBUG-32172 Task-number: QTBUG-32172 Change-Id: Ia8eea30fcfc771191c23a5f5994a48732959ea49 Reviewed-by: Martin Smith <[email protected]>
* qdoc: Implement better handling of QML property groupsMartin Smith2013-07-111-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The \qmlpropertygroup command is added, and qdoc is taught to generate better output for it. The format is, e.g.: \qmlpropertygroup QtQuick2::Item::anchors \qmlproperty AnchorLine QtQuick2::Item::anchors.top \qmlproperty AnchorLine QtQuick2::Item::anchors.bottom \qmlproperty AnchorLine QtQuick2::Item::anchors.left \qmlproperty AnchorLine QtQuick2::Item::anchors.right \qmlproperty AnchorLine QtQuick2::Item::anchors.horizontalCenter \qmlproperty AnchorLine QtQuick2::Item::anchors.verticalCenter \qmlproperty AnchorLine QtQuick2::Item::anchors.baseline \qmlproperty Item QtQuick2::Item::anchors.fill \qmlproperty Item QtQuick2::Item::anchors.centerIn \qmlproperty real QtQuick2::Item::anchors.margins \qmlproperty real QtQuick2::Item::anchors.topMargin \qmlproperty real QtQuick2::Item::anchors.bottomMargin \qmlproperty real QtQuick2::Item::anchors.leftMargin \qmlproperty real QtQuick2::Item::anchors.rightMargin \qmlproperty real QtQuick2::Item::anchors.horizontalCenterOffset \qmlproperty real QtQuick2::Item::anchors.verticalCenterOffset \qmlproperty real QtQuick2::Item::anchors.baselineOffset \qmlproperty bool QtQuick2::Item::anchors.alignWhenCentered Task-number: QTBUG-32341 Change-Id: I4b06a3a061b23680e663e8d4e82ac9863ffd4ecb Reviewed-by: Jerome Pasion <[email protected]>
* qdoc: qdoc was confused by namespace and module with same nameMartin Smith2013-06-111-1/+0
| | | | | | | | | | | | | When qdoc searched for QtConncurrent::blockingFilter(), it found the module node for QtConcurrent instead of the namespace. This was because qdoc wasn't given specific enough instructions on how to perform the search. Now it searches for the namespace first, then the C++ class, then the module. Task-number: QTBUG-31535 Change-Id: I4f8aec503903508789738f2a77c76f47a3e80a93 Reviewed-by: Jerome Pasion <[email protected]>
* qdoc: Missing links to qRegisterMetaType()Martin Smith2013-02-081-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | A serious problem in the design of qdoc is its C++ parser. It is an ad hoc recursive descent parser, which has not kept pace with Qt's use of the more esoteric aspects of C++. Part of the problem is that qdoc does not send files through the preprocessor before processing them. The bottom line is qdoc needs the C++ parser used in Qt Creator. But that is a long-term solution. In the short term, we have to introduce minor hacks like this one to keep qdoc going until the parser can be replaced. The problem in this case is that qdoc doesn't handle the QT_PREPEND_NAMESPACE macro in function declarations. The solution is to let qdoc ignore the macro and just use the macro's parameter, which is what qdoc wants anyway. Task-number: QTBUG-28953 Change-Id: I5b9efcc10fa8fb500a44854ee995c2e50e9e16b5 Reviewed-by: Topi Reiniö <[email protected]> Reviewed-by: Jerome Pasion <[email protected]>
* qdoc: Fix translation contexts.Friedemann Kleint2013-02-071-0/+2
| | | | | | | | | | | Put all translations into the namespace QDoc and fix warnings about invalid tr()-usage by removing the free tr()-function from tr.h. Provide QCoreApplication::translate() for bootstrap builds. Change-Id: I2b6931188346f290e80e14b84adff8892d8a860f Reviewed-by: Martin Smith <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <[email protected]>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Sergio Ahumada <[email protected]>
* qdoc: Refactoring of qdoc data structuresMartin Smith2012-09-141-22/+7
| | | | | | | | | | | | | | | | | | This commit is the beginning of a significant overhaul of qdoc. A new class, QDocDatabase, is added, which will eventually encapsulate all the data structures used by qdoc. In this commit, the Tree class is made private and only accessible from QDocDatabase. Several maps structures are also moved into QDocDatabase from other classes. Much dead code and unused parameters were removed. Further simplification will follow. Change-Id: I237411c50f3ced0d2fc8d3b0fbfdf4e55880f8e9 Reviewed-by: Qt Doc Bot <[email protected]> Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Jerome Pasion <[email protected]>
* doc: Replaced FakeNode with DocNodeMartin Smith2012-08-211-1/+1
| | | | | | | | | | | | | | | | | | The name FakeNode was a bad choice. It was used to represent something that wasn't derived from a C++ declaration in a .h file. Any generic page or QML item or any special kind of qdoc construct was stored in a FakeNode. The name was unfortunate because the constructs stored in FakeNodes were just as real as C++ constructs. So FakeNode has been renamed to DocNode, which just refers to a documentation node. The node type Fake has been replaced with node type Document. Change-Id: Ida9de8288b7b8915bf9273fd890ca84aaf05e182 Reviewed-by: Casper van Donderen <[email protected]>
* qdoc: Changed \qmlclass to \qmltype, added \instantiatesMartin Smith2012-07-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | The \qmlclass qdoc command is now deprecated. Use \qmltype instead. \qmlclass had two arguments, the QML type name and, if the QML type was elemental, the name of the C++ class that the QML element instantiates. The \qmltype command has only one argument, the QML type name. If the QML type is elemental, then the \qmltype command should be followed by a \instantiates context command in the same qdoc comment. e.g.: \qmltype Item \instantiates QDeclarativeItem When the developer does not include the \instantiates command for an elemental QML type, qdoc will no longer be able to detect that the C++ class name is missing, and qdoc will no longer be able to detect when the name specified for a \qmlproperty of the elemental QML type has the wrong name. Task nr: QTBUG-26648 Change-Id: Ia60872a35113a6f615bfc751ce1e9db6279dfb8e Reviewed-by: Casper van Donderen <[email protected]>
* qdoc: Better error messages for QML command errorsMartin Smith2012-06-121-2/+4
| | | | | | | | | | | | Some error messages were not clear for these qdoc commands: \qmlclass, \qmlmodule, \inqmlmodule, and \qmlproperty. They have been made clearer now. Also, qdoc now parses input files in the same order all the time now. The order is alphabetic now. This might not be the optimal order. Change-Id: Id53a5ec8105009c71f4bbd41973a54aed7821099 Reviewed-by: Casper van Donderen <[email protected]>
* qdoc: Fixed pure doc parserMartin Smith2012-05-251-2/+60
| | | | | | | | | | | | | | | | | | | | | | | | This parser was meant to parse any file for qdoc comments only, ignoring everything else that is not inside a qdoc comment. But it wasn't doing that. It was parsing all code, regardless of the language, using the C++ parser. Now it has been corrected to look at qdoc comments and skip over everything else. Note thast this means qdoc will expect a qdoc topic command in each and every qdoc comment in the file. The posiution of the qdoc comment with respect to the code it is meant to document is not taken into account in the pure doc parser. This is in contrast to the QML and C++ parsers which do take comment location into account in some cases. Change-Id: I0804a4149baa942b463e0b6990c71e4039ac1a50 Reviewed-by: Keith Isdale <[email protected]> Reviewed-by: Martin Smith <[email protected]>
* qdoc: Fixed a qdoc error problemMartin Smith2012-05-101-10/+3
| | | | | | | | | | When a page exists in more than one file, qdoc was reporting this sometimes without reference to the locations of the files. This has now been fixed. Change-Id: I0697acc170b94a74b15fb384556dd76f764f7792 Reviewed-by: Casper van Donderen <[email protected]>
* qdoc: Fixed qdoc error messagesMartin Smith2012-05-091-3/+3
| | | | | | | | | | | qdoc prints many error messages without including the source file path and the line number for where the error occurs. This makes it difficult to find the place to fix the error. This update corrects some of those error messages. Further updates will fix the others. Change-Id: I9c0eed96482c61643a2d83c5135368413e63ae52 Reviewed-by: Casper van Donderen <[email protected]>
* qdoc: Allow documenting a C++ class as a QML type.Martin Smith2012-04-021-2/+2
| | | | | | | | | | | | | | | | | | | Now qdoc can handle the case where a C++ class is documented as a QML type of the same name, or as both a C++ class and a QML type of the same name. And collisions pages are created for both the HTML and the DITA XML output. A collision page is created when two items have the same name. The collision pages will be augmented later to include the list of pages where ambiguous links to one of the items listed on the collision page are actually located, so the writer can go back to those links and add the appropriate qualifier. Change-Id: I5a9632b2d2209e0784392047056bed8962005624 Reviewed-by: Martin Smith <[email protected]> Reviewed-by: Casper van Donderen <[email protected]>
* Move qdoc into qtbase and bootstrap itLars Knoll2012-03-081-0/+196
We need qdoc in qtbase to be able to properly modularize our documentation and build it when building the different Qt modules. qdoc does contain a copy of the qml parser from qmldevtools, but this is the lesser evil compared to how we are currently forced to genereate our docs (and the fact that no developer can run qdoc and check the docs for their module). Change-Id: I9f748459382a11cf5d5153d1ee611d7a5d3f4ac1 Reviewed-by: Casper van Donderen <[email protected]> Reviewed-by: Martin Smith <[email protected]>