aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/proparser
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/4.2' into 4.3Orgad Shaneh2017-03-142-0/+2
|\ | | | | | | Change-Id: I4931dcc81be872d7712e67123e94d15ee696459f
| * QRegExp include cleanupSamuel Gaist2017-03-132-0/+2
| | | | | | | | | | | | | | This patch adds the missing include statements for QRegExp. Change-Id: Ibb03b929940adb84ae190b5090cb6b88653cc14c Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* | Remove spaces in initializer listsTim Jenssen2017-02-223-111/+111
| | | | | | | | | | | | | | Format initializer lists code style like. Change-Id: Ib82c235e4ba7dc75ee96a7abc0c47eff7b0a9013 Reviewed-by: hjk <hjk@qt.io>
* | fix usage of qt deployment pathsOswald Buddenhagen2017-01-261-1/+3
| | | | | | | | | | | | | | | | | | QT_INSTALL_*/dev properties have been added to qmake a while ago. catch up with that. Change-Id: I2bda68a1d4700c762a3d12600ac6aba123d4d0f8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | fix fallbacks in external property parsing, take 2Oswald Buddenhagen2017-01-251-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | while the fallback chain really *is* "Put" => Raw => Get => Src, this implies that to get sane looking condensed qmake output with only the plain and the /raw property variants, the /get and /src variants must be lacking the sysroot, which is profoundly useless in the case of an installed prefix build with sysroot and without extprefix. so to get actually useful paths, we just drop Raw from the fallback chain. qmake will be fixed later to actually conform with this much saner interpretation. amends 61419e7bf. Change-Id: I76fced03c5774ad581df2bf6ccc92a908fa243ca Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Merge remote-tracking branch 'origin/4.2'Eike Ziller2017-01-251-0/+4
|\| | | | | | | | | | | | | | | Conflicts: qbs/modules/qtc/qtc.qbs qtcreator.pri Change-Id: Ia6083434a811fc975696edf126df101ec8040f49
| * fix crash by guarding QString::setRawDataDavid Schulz2017-01-241-0/+4
| | | | | | | | | | | | | | | | | | QString::lastIndexOf can return a -1 if the pattern was not found. Using a QString that was created by QString::setRawData with a size of -1 will result in a crash. Change-Id: Ie02645f00db7e7150424ca367095a7ebc9051578 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | de-duplicate fallback paths in external qmake property parsingOswald Buddenhagen2017-01-241-7/+5
| | | | | | | | | | Change-Id: I976ab923d9ef213800eabe7a9c331191abea9430 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | fix fallbacks in external property parsingOswald Buddenhagen2017-01-241-6/+13
| | | | | | | | | | | | | | | | the fallback chain is "Put" => Raw => Get => Src. formerly, everything fell back on "Put", which is plain wrong. Change-Id: I13967120e381ddbb03ed6a877c2960f8e5bc4f7d Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | external qmake property parsing: ensure that QT_HOST_LIBS has a fallbackOswald Buddenhagen2017-01-241-0/+1
| | | | | | | | | | | | | | | | the property has been added to qmake a while ago. catch up with it. Change-Id: I8fae79c6d593ee201b44172d14189ec6502bc61c Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | simplify the qt4 fallback in the external property parsingOswald Buddenhagen2017-01-241-10/+10
| | | | | | | | | | | | | | | | | | only qmakes from qt4 don't have QT_HOST_* properties. and as they don't have _any_ of them, the fallback can be simplified. Change-Id: Id2ccbc7c01a56b894841980b0bc45bd84d160c54 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | de-duplicate qmake property parsing codeOswald Buddenhagen2017-01-242-2/+10
| | | | | | | | | | | | Change-Id: I7555de5c72a9250b31e20fc60e39680d19882fcb Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | BaseQtVersion: use QMakeEvaluator's native format for m_versionInfoOswald Buddenhagen2017-01-242-8/+0
| | | | | | | | | | Change-Id: I926bc97fe6fa510ac5a8fe77b64014333a69bd04 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Merge remote-tracking branch 'origin/4.2'Eike Ziller2017-01-231-5/+6
|\| | | | | | | Change-Id: Ib3073a0a3d80c99cf97b9839480dbf9583fa10de
| * QMake: fix filename normalizationOswald Buddenhagen2017-01-181-5/+6
| | | | | | | | | | | | | | | | apart from various project tree related issues, we've also seen crashes. Task-number: QTCREATORBUG-17364 Change-Id: I61bb8aff301a048646ed97f8fa2c825cbff8d2cb Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* | ProParser: Use the "Default Codec" when reading qmake filesAlessandro Portale2016-12-012-1/+30
|/ | | | | | | | | | | | | | | | | This change adds a QTextCodec* member to QMakeVfs. It is used to decode the qmake file contents in QMakeVfs::readFile. The QMakeProjectManager sets it to the current "Default Codec". This is necessary only in Qt Creator, where the parser would actually use Local8Bit (unlike qmake's Latin1), which would sometimes lead to misinterpreted multi-byte chars in comments swallowing newlines and thus falsifying the actual code. Bootstrapped qmake is not affected by this addition. Task-number: QTCREATORBUG-17309 Change-Id: I34b42bd19e0de973deb2291e91f306d1ca7c630e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* de-duplicate INSTALLS resolutionOswald Buddenhagen2016-11-012-20/+19
| | | | | | | | don't resolve the source files once for deployment and once for the project tree. Change-Id: Ifddf8fc7883bf025d3640de0d6676b5930991088 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* remove duplicate resolution of sources from cumulative passOswald Buddenhagen2016-11-012-2/+8
| | | | | | | | | instead of resolving all sources both in the exact and the cumulative pass and de-duplicating the joined list in the end, resolve only these files from the cumulative pass which are unique to it to start with. Change-Id: Ie3327799ecd94f8710f8b99bcc46998790ba2c74 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* de-duplicate resolution of exact sourcesOswald Buddenhagen2016-11-012-11/+17
| | | | | | | | | | | | | | | rather than resolving them once in bulk (for the code model) and once per pri file (for the project view), resolve them only in bulk, but "tag" them. then do a cheap filtering pass for the project view. as a side effect, this fixes the problem that sources that are listed by a file that is not shown in the project tree (as is the case for qrc files synthesized by resources.prf) would not be shown at all. instead, these sources now appear belonging directly to the pro file. Task-number: QTCREATORBUG-3670 Change-Id: I1a1756d95bd90db4da1274eebcc4dad2a854f43d Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* unify {,obj}c++{source,header} handling in qmake project managerOswald Buddenhagen2016-11-014-15/+41
| | | | | | | | | | | | | | | | | | | | | | consistently with Xcode, qmake nowadays knows only one SOURCES list, which is automatically classified by extension. to replicate that, we actually copy the objective_c.prf file from qt 5.6.3 and use it to override whatever comes with qt, so we can treat all qt versions uniformly. also, the code model throws away the information which files were listed as sources and which as headers. this is technically incorrect, as a source may be only included rather than compiled, but there is no point in extracting information which is not used. conclusion: lump all c-like sources into one variable as far as project processing is concerned. and as far as configuration goes, our code model doesn't differentiate anyway, so the duplicated setup paths can be eliminated as well. Change-Id: I24b1bc056f8d9eb579c9378817f602912ab49971 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* make VFS aware of exact vs. cumulative evaluationOswald Buddenhagen2016-11-018-47/+134
| | | | | | | | | | | | | | | | | | | | the cumulative evaluation has a good chance to make a mess of the virtual file contents created by the exact parsing, so better contain it to its own namespace. the ProFile cache also needs to keep the files separate. this specifically addresses the side issue discussed in QTCREATORBUG-10779. it also fixes attempts to deploy the wrong build when the variant is selected through a cache file, as in QTCREATORBUG-15815. in the project explorer, we don't track from which evaluation pass particular files came from, so we try the cumulative first to get the most contents, and fall back to the exact one if the former file is empty (or does not exist at all). Task-number: QTCREATORBUG-15815 Change-Id: I2c1eb16c97526fa275a1c6a2eae9266d385859ac Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* shave off duplicate stat()ing of source filesOswald Buddenhagen2016-11-013-2/+3
| | | | | | | | | | | | | ProFileEvaluator::absoluteFileValues() now returns only files, which allows us to skip the subsequent QFileInfo::isFile() calls at some call sites. as a side effect, IoUtils::fileType() does not see anything except regular files and directories any more. that's not expected to be a problem, given the function's scope. Change-Id: I53063ad8cacb3afe5cc1baf6d6d5feba3465e74f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* let QMakeVfs::readFile() report ENOFILE explicitlyOswald Buddenhagen2016-11-013-13/+21
| | | | | | | | | | | | | when the QFile object is already constructed, querying whether the file exists is actually cheap, so do it right away instead of later on demand. that makes the calling code a bit cleaner. fwiw, that we need to explicitly query the file's existence at all is a result of QFile's completely useless error "codes" (which merely say which function failed, as if the caller would not know). Change-Id: Ifec39d05b1713d8128046f679287e510f10e45dc Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* make resource file handling able to deal with QMakeProject's VFSOswald Buddenhagen2016-11-014-7/+29
| | | | | | | | resources.prf may create virtual qrc files when RESOURCES contains non-qrc files. Change-Id: If591de9b32b775059d67e94bc3cb06d23ee44b08 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* chuck sysroot handling out of ProFileEvaluatorOswald Buddenhagen2016-11-013-35/+11
| | | | | | | | | | | | qmake doesn't do anything with sysroots at this level, so this code plain does not belong here. sysrootification is used when resolving INCLUDEPATH, which is emulating compiler behavior. this is done by higher-level code. Task-number: QTCREATORBUG-11944 Change-Id: Ia25f0b6ef713e9809d974e3f3e49ba308b8c933f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* introduce ProFileReader::fixifiedValues()Oswald Buddenhagen2016-11-012-0/+20
| | | | | | | | | | | | | | | | | | ... and use it for PRECOMPILED_HEADER, INCLUDEPATH, and install target collection, instead of abusing ProFileReader::absoluteFileValues(). specifically, this falls back to a location in the build directory when the path is relative and the file cannot be found. in qmake, this somewhat weird behavior ensures that chaining extra compilers actually works (and also ensures a lot of frustration with non-clean source dirs ...). this also fixes INSTALLS with .CONFIG no_check_exists. Task-number: QTCREATORBUG-14848 Change-Id: Iaf9483c0c4586c464bd10a2aea7cbac7e0df1ec5 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* make message about not found mkspec less confusingOswald Buddenhagen2016-10-251-1/+1
| | | | | Change-Id: I9cfa2c9476d3d7fdb68b0a23e175eea4b3b11ad9 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* add discard_from() functionOswald Buddenhagen2016-10-253-5/+45
| | | | | | | | | | this function discards all values that come from a specific file. it will be needed for configure bootstrapping, but is too obscure to document it for general use. Change-Id: I62c18aeb1847712e33d0599dbb0b90ffa1722438 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from qtbase/12bb328bb0be8efe54aae750c21938aab4d17539)
* add support for returning the command's exit status to $$system()Oswald Buddenhagen2016-10-252-6/+17
| | | | | | | | ... and make use of it in qtRunLoggedCommand(). Change-Id: I242dfde344f555800cef1f55d3cb85418a93277f Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from qtbase/0eff800e81f3e7f803dffd77737faaed73002ac8)
* print no message at all when no argument is supplied to error()Oswald Buddenhagen2016-10-251-1/+1
| | | | | | | | | this is useful when an adequate message has already been emitted by other means, like various built-ins do. Change-Id: I092771f55969fad8b214204d666327664727c572 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from qtbase/22d1351ddea193f5c00d4ae12229358dea826c62)
* Merge remote-tracking branch 'origin/4.1'Orgad Shaneh2016-08-0512-241/+506
|\ | | | | | | Change-Id: Ia442f30f387fe9292217582260bbe79e54608810
| * Improve error reporting when parsing JSON filesLars Knoll2016-08-022-3/+9
| | | | | | | | | | | | | | | | | | | | | | At least report the error string and the file offset where the error happened. Change-Id: Iaa1733593b8af2a7a52b67c0f495731f045d2c11 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> (cherry picked from qtbase/34c24ceb1ffce964c9f139d84b6b271bd2e45c33) Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Robert Loehning <robert.loehning@qt.io>
| * add $$sorted() functionOswald Buddenhagen2016-08-022-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][qmake] Added $$sorted() function. Change-Id: Ic069d3ef7c0b7a260c714c76eecc71c41417d01f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Martin Smith <martin.smith@theqtcompany.com> (cherry picked from qtbase/50e22c765343102c4e0acf1eee8a6ce6f6f39ccf) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add $$str_member() functionOswald Buddenhagen2016-08-022-37/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | just like $$member(), but operates on a string value rather than a list variable. it is the swiss army knife of cutting, providing equivalents of left(), right(), mid() and reverse() all in one. [ChangeLog][qmake] Added $$str_member() function. Change-Id: I7c7c6c971db402fff41b428d32a4451f45400728 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> (cherry picked from qtbase/e70330f99e53bd34a518879a0a4c68bc7cb03949) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add $$str_size() functionOswald Buddenhagen2016-08-021-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is strlen(), but the name is matched to $$size(), just namespaced to reflect that it operates on a string value rather than a list variable. [ChangeLog][qmake] Added $$str_size() function. Change-Id: I56c8b863da244e66bd283257a66b197aa73b0e57 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> (cherry picked from qtbase/22f3800cac47b1b3d10474e8489ddb83cffd4b1e) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add $$num_add() (numeric addition) functionOswald Buddenhagen2016-08-021-2/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | amazing how we managed to do without it for so long. ^^ the name is intentionally somewhat obscure to avoid clashes, and some namespacing is good anyway. [ChangeLog][qmake] Added $$num_add() function. Change-Id: Ib7648b1f425ef096a87b51f158d0f1409e5c4daa Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/d3cc25ef52d0b2b7ba1cb06609f7c205ee19c2d6) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add $$take_first() and $$take_last() functionsOswald Buddenhagen2016-08-021-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | while implementing stacks and queues was possible before with the help of $$member(), these functions make it much more straight-forward. [ChangeLog][qmake] Added $$take_first() and $$take_last() functions. Change-Id: I4922a5331780e468a42c663c9ad3c6456a95a6bf Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> (cherry picked from qtbase/3d21634fb693634b7d41a152287d29afb80ac5e2) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * make split_value_list() take a QStringRef as inputOswald Buddenhagen2016-08-023-10/+12
| | | | | | | | | | | | | | | | | | this also saves some of the cheap but ugly toQString() calls. Change-Id: Iebe644986501db3878306521c76e4ba2c2fb97b4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/981f8ad2e4bc46d9a06dab0cbc32a7da755ececb) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * make QMakeParser take a QStringRef as inputOswald Buddenhagen2016-08-026-27/+30
| | | | | | | | | | | | | | | | | | | | | | | | the only place where this actually saves a deep copy is the evaluation of if(), but as a side effect the parser is now able to deal with not null-terminated strings, which is kinda nice as well. Change-Id: Ib6d08617aa79d2f9eaecd4906d4d548f34bf377d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> (cherry picked from qtbase/ad17a35853fe21a93fc34f7b2d9262c5ac992b29) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add ProStringList::join(ProString) overload and make use of itOswald Buddenhagen2016-08-023-3/+8
| | | | | | | | | | | | | | Change-Id: Ic3919a1fa9419bbb3b57dd1aa7eb95643ee59e53 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/e45a9fe457a4e5e70bf4e62092b253675dc97819) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * introduce a new way to pass arbitrary arguments to the project fileOswald Buddenhagen2016-08-022-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is done by recognizing the -- option and putting everything that follows it into the QMAKE_EXTRA_ARGS variable. the purpose of this is being able to pass "alien" arguments (for example configure options) without having to marshal them into a qmake variable assignment manually. this is expected to greatly enhance the convenience when no wrapper script (i.e., configure itself) is used (which will be the case outside qtbase). Change-Id: I47735bdab2811d17d7d394fbf638ebd14332ea73 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> (cherry picked from qtbase/26d44fce3dfb9dbd3b5be2a031fff8c1bb903960) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * add ProString::toLongLong() and make use of itOswald Buddenhagen2016-08-022-1/+2
| | | | | | | | | | | | | | | | | | this is just a bit cleaner. Change-Id: I03e628aca9e2e53c602a4db724da277a0e2c2486 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/e6b755e702fd6d8ebeb25ecd7a5059e62da6c971) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * remove pointless conversion to QString in isTrue()Oswald Buddenhagen2016-08-021-5/+4
| | | | | | | | | | | | | | Change-Id: I7766672018dd4acf9b9fb89acfe664671de4bc3d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/7931395d5bf30d783449e1696edf8d59b81462ed) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * remove pointless conversions to QString when converting to intOswald Buddenhagen2016-08-021-6/+6
| | | | | | | | | | | | | | | | | | this doesn't change a lot, but is cleaner. Change-Id: Ia89c399d6df7cc6264954cf309d2c971a5592d6b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/a7a3cd643a554c717ad8fb2bdad3e941dfd94cec) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * optimize ProString::toInt()/toShort()Oswald Buddenhagen2016-08-021-2/+2
| | | | | | | | | | | | | | | | | | QStringRef has respective overloads now. Change-Id: I9b94c53092ef3fdd62a68f5d3c5bacb98a14d8ec Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/e8bdca74b513b58d3db892d838b3a499365ca7e2) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * qmake: restore nothrow move special membersMarc Mutz2016-08-021-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | The user-defined copy assignment, copy constructor and dtor inhibit the move special member functions. Implement them manually. Change-Id: I0d38d7cf6c9611e13b5b081d734d01d6fe4d5276 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> (cherry picked from qtbase/9c63ad562bf0a44807f41ce49e4fe1b5ff181a63) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * qmake: de-duplicate QString::number() calls with same argAnton Kudryavtsev2016-08-021-2/+3
| | | | | | | | | | | | | | Change-Id: I6e05b9ad3350bd0da5b8a6dc1389ae05315a33df Reviewed-by: Marc Mutz <marc.mutz@kdab.com> (cherry picked from qtbase/27de4ea4d672d9f1b3a733f803f8605f81311d0a) Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
| * qmake: optimize container usage in the json handlingAnton Kudryavtsev2016-08-021-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Iterate only once over QJsonObject, create key list by existing loop instead of create by QJsonObject::keys(), which contains internal loop. In common case if loop's statement is lightweight, then effect of optimization is significant, and vice versa. Also make addJsonArray() and addJsonObject() functions more homogeneous. Use reserve to optimize memory allocation. Change-Id: Id122cd1becfd34bb06640876b1c79e1d396d2a6b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> (cherry picked from qtbase/69ab28031549ff1c9ceecdcb29197900e9bc4328) Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
| * qmake: use reserve to optimize memory allocationAnton Kudryavtsev2016-08-022-1/+6
| | | | | | | | | | | | | | | | Change-Id: I6ace338512c24fd9dc11c767a28f0a63454076fa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> (cherry picked from qtbase/1d3503b8f3b49b0f684e1caa504deb0d05f2c60a) Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
| * qmake: eradicate Q_FOREACH loops [already const]Marc Mutz2016-08-024-18/+18
| | | | | | | | | | | | | | | | | | | | | | (or trivially marked const) ... by replacing them with C++11 range-for loops. Change-Id: I1522e220a57ecb1c5ee0d4281233b3c3931a2ff8 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> (cherry picked from qtbase/d9229d849f44cf94e4ee19fac390811b474127d2) Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Jake Petroules <jake.petroules@qt.io>