aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppprojectfilecategorizer.h
Commit message (Collapse)AuthorAgeFilesLines
* CppTools: Move RawProjectPart to ProjectExplorerEike Ziller2019-09-111-3/+4
| | | | | | | | Doesn't have any dependencies into CppTools anymore, therefore moving it reduces the dependencies of the project managers to CppTools as well. Change-Id: Ibe728abe59eb88a8877943dca1f48a85163e27ac Reviewed-by: hjk <hjk@qt.io>
* CppTools: Remove dependency of RawProjectPart to ProjectFileEike Ziller2019-09-031-3/+7
| | | | | | | | | | | | The feature to category files to ProjectFiles was used by the qmake project manager to specify if the file is "active", and by the Qbs project manager to avoid unnecessary MIME type checking. Make these two different use-cases explicit in the API. Change-Id: Ia5a7da37f100149366fc75060fe04687e15f2bd3 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppTools: modernizeAlessandro Portale2019-01-211-2/+2
| | | | | | Change-Id: Iaf02e4d026f1ac8b216833d83cd7a735e21ff60a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* ClangTools/QMake: Stop analyzing files not part of build configurationNikolai Kosjar2019-01-081-2/+2
| | | | | | | | | | | | | | | ...for the qmake project manager. When parsing the project files, remember whether a file was discovered by the exact or cumulative parse. Only files that were discovered by the exact parse are considered "active" and thus part of the build configuration. The others are not offered for selection. Fixes: QTCREATORBUG-16016 Started-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Change-Id: I7a28b4de15e048975d7f0cd737dd8c11f744315b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CppTools/ProjectManagers: Reduce ui blocking when loading projectsNikolai Kosjar2017-02-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ${AnyProject}::updateCppCodeModel() did two potentially not that cheap operations in the ui thread: (1) Querying the MimeDatabase for the mime type for the source files of the project. In 99.9% of the cases no files need to be read for this as the file extension will resolve the type. The expensiveness comes from the sheer number of files that can occur. (2) Calling compilers with the "(sub)project's compiler command line" to determine the macros. While the caches avoid redundant calls, the number of the unique compiler calls makes this still a ui-freezing experience. These two operations are moved into a worker thread. For this, the expensive compiler calls are encapsulated in thread safe lambdas ("runners") in order to keep the "mutexed" data minimal. The original API calls of the toolchains are implemented in terms of the runners. While adapting the project managers, remove also the calls to setProjectLanguage(). These are redundant because all of the project managers already set a proper value in the constructor. Also, currently there is no need (client) to report back detection of C sources in project parts. This also keeps CppProjectUpdater simple. There is still room for improvement: * Run the compiler calls in parallel instead of sequence. * Ensure that the mime type for a file is determined exactly once. Change-Id: I2efc4e132ee88e3c8f264012ec8fafe3d86c404f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* CppTools: Refactor ProjectPartBuilderNikolai Kosjar2016-12-131-1/+1
| | | | | | | | | | | ...and add some basic tests. Introduce the abstractions ProjectInterface and ToolChainInterface in order to break the dependency to the ProjectExplorer. Also, some simple logic can go there to simplify the (Base)ProjectPartBuilder. Change-Id: I6c50a1804ce62098b87109931eb171f5c2542937 Reviewed-by: David Schulz <david.schulz@qt.io>
* CppTools: Classify ambiguous headers depending on other filesNikolai Kosjar2016-12-121-2/+8
| | | | | | | | | | | | | | This applies for all project managers, except qmake. The qmake project manager will make use of this in follow up changes. Before, "foo.h" was always recognized as a CXXHeader. Now, it depends on the other files. E.g. in a file list {"foo.h", "foo.c"} foo.h is now a CHeader. In {"foo.h", "foo.c", "bar.cpp"} the file "foo.h" is ambiguous and we will create two project parts, one where it is a CHeader, the other where it is a CXXHeader. Change-Id: I50505163368742584b1380c284d42cbe07cb4fc9 Reviewed-by: David Schulz <david.schulz@qt.io>
* CppTools: Clean up ProjectFileCategorizerNikolai Kosjar2016-12-081-13/+13
| | | | | Change-Id: Ia6954810ad49d43629be2db074d620ab71a09cee Reviewed-by: David Schulz <david.schulz@qt.io>
* CppTools: Extract ProjectFileCategorizerNikolai Kosjar2016-12-081-0/+68
Change-Id: Ib7a5c3c61b0ea172cbc6a3ac7c94e77ffabc0db4 Reviewed-by: David Schulz <david.schulz@qt.io>