[kdevplatform] /: Remove the need to install the google sparsehash headers
Aleix Pol
aleixpol at kde.org
Wed May 22 01:34:48 UTC 2013
Git commit 5a752757b1e30a2a2414e29c96bd54d50b4cd410 by Aleix Pol.
Committed on 22/05/2013 at 01:31.
Pushed by apol into branch 'master'.
Remove the need to install the google sparsehash headers
They were only needed because of the KDevelop::DUContextDynamicData class
being installed through the ducontextdata.h file which had both this class
and DUContextData. Now we have a separate file for DUContextDynamicData and
we are not installing it because it doesn't seem to be needed outside
kdevplatform.
CCMAIL: kdevelop-devel at kde.org
M +1 -0 language/duchain/declaration.cpp
M +1 -0 language/duchain/ducontext.cpp
M +4 -200 language/duchain/ducontextdata.h
C +6 -66 language/duchain/ducontextdynamicdata.h [from: language/duchain/ducontextdata.h - 075% similarity]
M +1 -0 language/duchain/indexedducontext.cpp
M +1 -0 language/duchain/localindexedducontext.cpp
M +1 -0 language/duchain/topducontextdynamicdata.cpp
M +0 -17 util/CMakeLists.txt
http://commits.kde.org/kdevplatform/5a752757b1e30a2a2414e29c96bd54d50b4cd410
diff --git a/language/duchain/declaration.cpp b/language/duchain/declaration.cpp
index 6a8cdcc..6ef3898 100644
--- a/language/duchain/declaration.cpp
+++ b/language/duchain/declaration.cpp
@@ -45,6 +45,7 @@
#include "types/typealiastype.h"
#include "classdeclaration.h"
#include "repositories/stringrepository.h"
+#include "ducontextdynamicdata.h"
namespace KDevelop
{
diff --git a/language/duchain/ducontext.cpp b/language/duchain/ducontext.cpp
index 34455f7..9451b32 100644
--- a/language/duchain/ducontext.cpp
+++ b/language/duchain/ducontext.cpp
@@ -44,6 +44,7 @@
#include "uses.h"
#include "navigation/abstractdeclarationnavigationcontext.h"
#include "navigation/abstractnavigationwidget.h"
+#include "ducontextdynamicdata.h"
#include "abstractfunctiondeclaration.h"
///It is fine to use one global static mutex here
diff --git a/language/duchain/ducontextdata.h b/language/duchain/ducontextdata.h
index caec51e..4d456d8 100644
--- a/language/duchain/ducontextdata.h
+++ b/language/duchain/ducontextdata.h
@@ -1,7 +1,7 @@
/***************************************************************************
* This file is part of KDevelop *
- * Copyright 2006 Hamish Rodda <rodda at kde.org> *
- * Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>
+ * Copyright 2006 Hamish Rodda <rodda at kde.org> *
+ * Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>*
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License as *
@@ -19,12 +19,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef ducontextdata_H
-#define ducontextdata_H
-
-#include <QtCore/QMutex>
-#include <QtCore/QMultiHash>
-#include <QtCore/QMap>
+#ifndef DUCONTEXTDATA_H
+#define DUCONTEXTDATA_H
#include "../editor/cursorinrevision.h"
@@ -34,7 +30,6 @@
#include "declaration.h"
#include "use.h"
#include "../languageexport.h"
-#include <util/google/dense_hash_map>
#include "localindexeddeclaration.h"
@@ -84,197 +79,6 @@ public:
}
};
-///This class contains data that is only runtime-dependant and does not need to be stored to disk
-class DUContextDynamicData
-{
-private:
- inline const DUContextData* d_func() { return m_context->d_func(); }
- static inline const DUContextData* ctx_d_func(DUContext* ctx) { return ctx->d_func(); }
- static inline DUContextDynamicData* ctx_dynamicData(DUContext* ctx) { return ctx->m_dynamicData; }
-
-public:
- DUContextDynamicData( DUContext* );
- DUContextPointer m_parentContext;
-
- TopDUContext* m_topContext;
-
- //Use DeclarationPointer instead of declaration, so we can locate management-problems
- typedef QMultiHash<Identifier, DeclarationPointer> DeclarationsHash;
-
- //Whether this context uses m_localDeclarationsHash
- bool m_hasLocalDeclarationsHash;
-
- static QMutex m_localDeclarationsMutex;
- ///@warning: Whenever m_localDeclarations is read or written, m_localDeclarationsHash must be locked.
- DeclarationsHash m_localDeclarationsHash; //This hash can contain more declarations than m_localDeclarations, due to declarations propagated up from children.
-
- uint m_indexInTopContext; //Index of this DUContext in the top-context
-
- DUContext* m_context;
-
- mutable bool m_rangesChanged : 1;
- /**
- * Adds a child context.
- *
- * \note Be sure to have set the text location first, so that
- * the chain is sorted correctly.
- */
- void addChildContext(DUContext* context);
-
- /**Removes the context from childContexts
- * @return Whether a context was removed
- * */
- bool removeChildContext(DUContext* context);
-
- void addImportedChildContext( DUContext * context );
- void removeImportedChildContext( DUContext * context );
-
- void addDeclaration(Declaration* declaration);
-
- /**Removes the declaration from localDeclarations
- * @return Whether a declaration was removed
- * */
- bool removeDeclaration(Declaration* declaration);
-
- //Files the scope identifier into target
- void scopeIdentifier(bool includeClasses, QualifiedIdentifier& target) const;
-
- /**
- * This propagates the declaration into the parent search-hashes,
- * up to the first parent that has m_propagateDeclarations set to false.
- *
- * Must be called with m_localDeclarationsMutex locked
- */
- void addDeclarationToHash(const Identifier& identifer, Declaration* declaration);
- ///Must be called with m_localDeclarationsMutex locked
- void removeDeclarationFromHash(const Identifier& identifer, Declaration* declaration);
-
- ///Adds all declarations that should be in the hash into the hash
- void enableLocalDeclarationsHash(DUContext* ctx, const Identifier& currentIdentifier = Identifier(), Declaration* currentDecl = 0);
-
- void disableLocalDeclarationsHash();
-
- bool needsLocalDeclarationsHash();
-
- //Iterates through all visible declarations within a given context, including the ones propagated from sub-contexts
- class VisibleDeclarationIterator {
- public:
- struct StackEntry {
- StackEntry() : data(0), item(0), endItem(0), nextChild(0) {
- }
-
- DUContextDynamicData* data;
- const LocalIndexedDeclaration* item;
- const LocalIndexedDeclaration* endItem;
- uint nextChild;
- };
-
- VisibleDeclarationIterator(DUContextDynamicData* data) {
- current.data = data;
- current.item = data->d_func()->m_localDeclarations();
- current.endItem = current.item + data->d_func()->m_localDeclarationsSize();
- current.nextChild = 0;
- toValidPosition();
- }
-
- Declaration* operator*() const {
- return current.item->data(current.data->m_topContext);
- }
-
- VisibleDeclarationIterator& operator++() {
- ++current.item;
- toValidPosition();
- return *this;
- }
-
- operator bool() const {
- return (bool)current.data;
- }
-
- //Moves the cursor to the next valid position, from an invalid one(currentPos.back() == current.data->declarationCount())
- void toValidPosition() {
- if(current.item == current.endItem) {
- {
- const DUContextData* data = current.data->d_func();
-
- //Check if we can proceed into a propagating child-context
- uint childContextCount = data->m_childContextsSize();
- const LocalIndexedDUContext* childContexts = data->m_childContexts();
-
- for(unsigned int a = 0; a < childContextCount; ++a) {
- DUContext* child = childContexts[a].data(current.data->m_topContext);
- if(ctx_d_func(child)->m_propagateDeclarations) {
- current.nextChild = a+1;
- stack.append(current);
- current.data = ctx_dynamicData(child);
- current.item = ctx_d_func(child)->m_localDeclarations();
- current.endItem = current.item + ctx_d_func(child)->m_localDeclarationsSize();
- current.nextChild = 0;
- toValidPosition();
- return;
- }
- }
- }
- upwards:
- //Go up and into the next valid context
- if(stack.isEmpty()) {
- current = StackEntry();
- return;
- }
-
- current = stack.back();
- stack.pop_back();
-
- const DUContextData* data = current.data->d_func();
- uint childContextCount = data->m_childContextsSize();
- const LocalIndexedDUContext* childContexts = data->m_childContexts();
-
- for(unsigned int a = current.nextChild; a < childContextCount; ++a) {
- DUContext* child = childContexts[a].data(current.data->m_topContext);
-
- if(ctx_d_func(child)->m_propagateDeclarations) {
-
- current.nextChild = a+1;
- stack.append(current);
-
- current.data = ctx_dynamicData(child);
- current.item = ctx_d_func(child)->m_localDeclarations();
- current.endItem = current.item + ctx_d_func(child)->m_localDeclarationsSize();
- current.nextChild = 0;
- toValidPosition();
- return;
- }
- }
-
- goto upwards;
- }
- }
-
- StackEntry current;
-
- KDevVarLengthArray<StackEntry> stack;
- };
-
- /**
- * Returns true if this context is imported by the given one, on any level.
- * */
- bool imports(const DUContext* context, const TopDUContext* source, int maxDepth) const;
-
- /**
- * This can deal with endless recursion
- */
-
- struct ImportsHash_Op {
- size_t operator() (const DUContextDynamicData* data) const {
- return (size_t)data;
- }
- };
-
- typedef google::dense_hash_map<const DUContextDynamicData*, bool, ImportsHash_Op> ImportsHash;
-
- bool importsSafeButSlow(const DUContext* context, const TopDUContext* source, ImportsHash& checked) const;
-};
-
}
diff --git a/language/duchain/ducontextdata.h b/language/duchain/ducontextdynamicdata.h
similarity index 75%
copy from language/duchain/ducontextdata.h
copy to language/duchain/ducontextdynamicdata.h
index caec51e..6884f70 100644
--- a/language/duchain/ducontextdata.h
+++ b/language/duchain/ducontextdynamicdata.h
@@ -1,7 +1,7 @@
/***************************************************************************
* This file is part of KDevelop *
- * Copyright 2006 Hamish Rodda <rodda at kde.org> *
- * Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>
+ * Copyright 2006 Hamish Rodda <rodda at kde.org> *
+ * Copyright 2007-2008 David Nolden <david.nolden.kdevelop at art-master.de>*
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Library General Public License as *
@@ -19,70 +19,13 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef ducontextdata_H
-#define ducontextdata_H
+#ifndef DUCONTEXTDYNAMICDATA_H
+#define DUCONTEXTDYNAMICDATA_H
-#include <QtCore/QMutex>
-#include <QtCore/QMultiHash>
-#include <QtCore/QMap>
-
-#include "../editor/cursorinrevision.h"
-
-#include "duchainbase.h"
-#include "ducontext.h"
-#include "duchainpointer.h"
-#include "declaration.h"
-#include "use.h"
-#include "../languageexport.h"
+#include "ducontextdata.h"
#include <util/google/dense_hash_map>
-#include "localindexeddeclaration.h"
-
-namespace KDevelop{
-class DUContext;
-
-KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(DUContextData, m_childContexts, LocalIndexedDUContext)
-KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(DUContextData, m_importers, IndexedDUContext)
-KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(DUContextData, m_importedContexts, DUContext::Import)
-KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(DUContextData, m_localDeclarations, LocalIndexedDeclaration)
-KDEVPLATFORMLANGUAGE_EXPORT DECLARE_LIST_MEMBER_HASH(DUContextData, m_uses, Use)
-
-///This class contains data that needs to be stored to disk
-class KDEVPLATFORMLANGUAGE_EXPORT DUContextData : public DUChainBaseData
-{
-public:
- DUContextData();
- ~DUContextData();
- DUContextData(const DUContextData& rhs);
- DUContext::ContextType m_contextType;
- IndexedQualifiedIdentifier m_scopeIdentifier;
- IndexedDeclaration m_owner;
- typedef DUContext::Import Import;
- START_APPENDED_LISTS_BASE(DUContextData, DUChainBaseData);
- APPENDED_LIST_FIRST(DUContextData, Import, m_importedContexts);
- APPENDED_LIST(DUContextData, LocalIndexedDUContext, m_childContexts, m_importedContexts);
-
- ///@todo Create an additional structure for importing to/from "temporary" contexts and classes in a way that it persists while saving/loading,
- /// and doesn't require changing a top-contexts data only because a class was derived from.
- APPENDED_LIST(DUContextData, IndexedDUContext, m_importers, m_childContexts);
-
- ///@warning: Whenever m_localDeclarations is read or written, DUContextDynamicData::m_localDeclarationsMutex must be locked.
- APPENDED_LIST(DUContextData, LocalIndexedDeclaration, m_localDeclarations, m_importers);
- /**
- * Vector of all uses in this context
- * Mutable for range synchronization
- * */
- APPENDED_LIST(DUContextData, Use, m_uses, m_localDeclarations);
- END_APPENDED_LISTS(DUContextData, m_uses);
-
- bool m_inSymbolTable : 1;
- bool m_anonymousInParent : 1; //Whether this context was added anonymously into the parent. This means that it cannot be found as child-context in the parent.
- bool m_propagateDeclarations : 1;
- private:
- DUContextData& operator=(const DUContextData&) {
- return *this;
- }
-};
+namespace KDevelop {
///This class contains data that is only runtime-dependant and does not need to be stored to disk
class DUContextDynamicData
@@ -277,7 +220,4 @@ public:
}
-
#endif
-
-//kate: space-indent on; indent-width 2; replace-tabs on; auto-insert-doxygen on; indent-mode cstyle;
diff --git a/language/duchain/indexedducontext.cpp b/language/duchain/indexedducontext.cpp
index fa7d015..f9b0552 100644
--- a/language/duchain/indexedducontext.cpp
+++ b/language/duchain/indexedducontext.cpp
@@ -21,6 +21,7 @@
#include "ducontext.h"
#include "ducontextdata.h"
+#include "ducontextdynamicdata.h"
#include "topducontext.h"
#include "duchain.h"
#include "topducontextdynamicdata.h"
diff --git a/language/duchain/localindexedducontext.cpp b/language/duchain/localindexedducontext.cpp
index af107c3..b2aad4f 100644
--- a/language/duchain/localindexedducontext.cpp
+++ b/language/duchain/localindexedducontext.cpp
@@ -22,6 +22,7 @@
#include "ducontextdata.h"
#include "ducontext.h"
#include "topducontextdynamicdata.h"
+#include "ducontextdynamicdata.h"
using namespace KDevelop;
diff --git a/language/duchain/topducontextdynamicdata.cpp b/language/duchain/topducontextdynamicdata.cpp
index 969eba7..b51ebf0 100644
--- a/language/duchain/topducontextdynamicdata.cpp
+++ b/language/duchain/topducontextdynamicdata.cpp
@@ -29,6 +29,7 @@
#include "topducontext.h"
#include "topducontextdata.h"
#include "ducontextdata.h"
+#include "ducontextdynamicdata.h"
#include "duchainregister.h"
#include "repositories/itemrepository.h"
diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt
index b372129..d7e56e8 100644
--- a/util/CMakeLists.txt
+++ b/util/CMakeLists.txt
@@ -77,20 +77,3 @@ install( FILES
multilevellistview.h
projecttestjob.h
DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/util COMPONENT Devel)
-
-install( FILES
- google/dense_hash_map
- google/dense_hash_set
- google/sparse_hash_map
- google/sparse_hash_set
- google/sparsetable
- google/type_traits.h
- google/hash_fun.h
- DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/util/google COMPONENT Devel)
-
-install( FILES
- google/sparsehash/densehashtable.h
- google/sparsehash/sparseconfig.h
- google/sparsehash/sparseconfig_windows.h
- google/sparsehash/sparsehashtable.h
- DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/util/google/sparsehash COMPONENT Devel)
More information about the KDevelop-devel
mailing list