summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanagerinterface.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2013-04-02 11:52:31 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-04-10 11:43:22 +0200
commitddafdf55de659cc27624f4d5c3288425adc59de0 (patch)
tree41505ece2ca3ae5bdb01ec0039aea7c886874e15 /src/plugins/cpptools/cppmodelmanagerinterface.cpp
parenta189ec5537f42c6c683515235ca79a6f4ceae237 (diff)
downloadqt-creator-ddafdf55de659cc27624f4d5c3288425adc59de0.tar.gz
CppTools: Rename files to comply with coding standard
Rename ModelManagerInterface.(h|cpp) to cppmodelmanagerinterface.(h|cpp). Rename TypeHierarchyBuilder.(h|cpp) to typehierarchybuilder.(h|cpp). Change-Id: I035d833fd205d7460819bd0fb7031294359032f9 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanagerinterface.cpp')
-rw-r--r--src/plugins/cpptools/cppmodelmanagerinterface.cpp115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.cpp b/src/plugins/cpptools/cppmodelmanagerinterface.cpp
new file mode 100644
index 0000000000..da9cc55605
--- /dev/null
+++ b/src/plugins/cpptools/cppmodelmanagerinterface.cpp
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "cppmodelmanagerinterface.h"
+
+#include <cplusplus/pp-engine.h>
+
+#include <QtCore/QSet>
+
+/*!
+ \enum CppTools::CppModelManagerInterface::QtVersion
+ Allows C++ parser engine to inject headers or change inner settings as
+ needed to parse Qt language extensions for concrete major Qt version
+ \value UnknownQt
+ Parser may choose any policy
+ \value NoQt
+ Parser must not use special tricks, because it parses non-qt project
+ \value Qt4
+ Parser may enable tricks for Qt v4.x
+ \value Qt5
+ Parser may enable tricks for Qt v5.x
+*/
+
+using namespace CppTools;
+
+static CppModelManagerInterface *g_instance = 0;
+
+const QString CppModelManagerInterface::configurationFileName()
+{ return CPlusPlus::Preprocessor::configurationFileName; }
+
+CppModelManagerInterface::CppModelManagerInterface(QObject *parent)
+ : QObject(parent)
+{
+ Q_ASSERT(! g_instance);
+ g_instance = this;
+}
+
+CppModelManagerInterface::~CppModelManagerInterface()
+{
+ Q_ASSERT(g_instance == this);
+ g_instance = 0;
+}
+
+CppModelManagerInterface *CppModelManagerInterface::instance()
+{
+ return g_instance;
+}
+
+
+void CppModelManagerInterface::ProjectInfo::clearProjectParts()
+{
+ m_projectParts.clear();
+ m_includePaths.clear();
+ m_frameworkPaths.clear();
+ m_sourceFiles.clear();
+ m_defines.clear();
+}
+
+void CppModelManagerInterface::ProjectInfo::appendProjectPart(
+ const ProjectPart::Ptr &part)
+{
+ if (!part)
+ return;
+
+ m_projectParts.append(part);
+
+ // update include paths
+ QSet<QString> incs = QSet<QString>::fromList(m_includePaths);
+ foreach (const QString &ins, part->includePaths)
+ incs.insert(ins);
+ m_includePaths = incs.toList();
+
+ // update framework paths
+ QSet<QString> frms = QSet<QString>::fromList(m_frameworkPaths);
+ foreach (const QString &frm, part->frameworkPaths)
+ frms.insert(frm);
+ m_frameworkPaths = frms.toList();
+
+ // update source files
+ QSet<QString> srcs = QSet<QString>::fromList(m_sourceFiles);
+ foreach (const ProjectFile &file, part->files)
+ srcs.insert(file.path);
+ m_sourceFiles = srcs.toList();
+
+ // update defines
+ if (!m_defines.isEmpty())
+ m_defines.append('\n');
+ m_defines.append(part->defines);
+}