src: updated SymbolKind enum

* removed SymbolKinds for Parameter and LocalSymbol, because these are not stored as symbols inside the database
* added Module symbol kind for Python
This commit is contained in:
mlangkabel
2018-12-10 16:26:38 +01:00
parent 6d5937d18f
commit 21d947ed6c
17 changed files with 90 additions and 58 deletions
@@ -349,6 +349,9 @@
<normal>#B05151</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
+3
View File
@@ -338,6 +338,9 @@
<normal>#FFDEDE</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
+3
View File
@@ -341,6 +341,9 @@
<normal>#521B1F</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -11,18 +11,17 @@ public enum SymbolKind
FUNCTION(7),
GLOBAL_VARIABLE(8),
INTERFACE(9),
LOCAL_VARIABLE(10),
MACRO(11),
METHOD(12),
MACRO(10),
METHOD(11),
MODULE(12),
NAMESPACE(13),
PACKAGE(14),
PARAMETER(15),
STRUCT(16),
TEMPLATE_PARAMETER(17),
TYPEDEF(18),
TYPE_PARAMETER(19),
UNION(20),
TYPE_MAX(21);
STRUCT(15),
TEMPLATE_PARAMETER(16),
TYPEDEF(17),
TYPE_PARAMETER(18),
UNION(19),
TYPE_MAX(20);
private final int m_value;
@@ -2377,6 +2377,8 @@ void GraphController::createLegendGraph()
addNode(NodeType::NODE_MACRO, L"Macro", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_ANNOTATION, L"Annotation", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_MODULE, L"module", Vec2i(x, y + dy * ++i));
y -= 15;
addNode(NodeType::NODE_NAMESPACE, L"namespace", Vec2i(x, y + dy * ++i));
y -= 15;
addNode(NodeType::NODE_PACKAGE, L"package", Vec2i(x, y + dy * ++i));
+10
View File
@@ -9,6 +9,7 @@ std::vector<NodeType> NodeType::getOverviewBundleNodeTypesOrdered()
NodeType(NodeType::NODE_FILE),
NodeType(NodeType::NODE_MACRO),
NodeType(NodeType::NODE_ANNOTATION),
NodeType(NodeType::NODE_MODULE),
NodeType(NodeType::NODE_NAMESPACE),
NodeType(NodeType::NODE_PACKAGE),
NodeType(NodeType::NODE_CLASS),
@@ -36,6 +37,8 @@ NodeType::Type NodeType::intToType(int value)
return NodeType::NODE_TYPE;
case NodeType::NODE_BUILTIN_TYPE:
return NodeType::NODE_BUILTIN_TYPE;
case NodeType::NODE_MODULE:
return NodeType::NODE_MODULE;
case NodeType::NODE_NAMESPACE:
return NodeType::NODE_NAMESPACE;
case NodeType::NODE_PACKAGE:
@@ -87,6 +90,8 @@ std::string NodeType::getReadableTypeString(NodeType::Type type)
return "built-in type";
case NodeType::NODE_TYPE:
return "type";
case NodeType::NODE_MODULE:
return "module";
case NodeType::NODE_NAMESPACE:
return "namespace";
case NodeType::NODE_PACKAGE:
@@ -211,6 +216,7 @@ bool NodeType::isInheritable() const
bool NodeType::isPackage() const
{
const NodeType::TypeMask mask =
NodeType::NODE_MODULE |
NodeType::NODE_NAMESPACE |
NodeType::NODE_PACKAGE;
return ((m_type & mask) > 0);
@@ -288,6 +294,7 @@ bool NodeType::hasSearchFilter() const
{
const NodeType::TypeMask mask =
NodeType::NODE_BUILTIN_TYPE |
NodeType::NODE_MODULE |
NodeType::NODE_NAMESPACE |
NodeType::NODE_PACKAGE |
NodeType::NODE_STRUCT |
@@ -327,6 +334,8 @@ Tree<NodeType::BundleInfo> NodeType::getOverviewBundleTree() const
));
return tree;
}
case NodeType::NODE_MODULE:
return Tree<BundleInfo>(BundleInfo(L"Modules"));
case NodeType::NODE_PACKAGE:
return Tree<BundleInfo>(BundleInfo(L"Packages"));
case NodeType::NODE_CLASS:
@@ -401,6 +410,7 @@ NodeType::StyleType NodeType::getNodeStyle() const
{
switch (m_type)
{
case NodeType::NODE_MODULE:
case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE:
return STYLE_PACKAGE;
+19 -18
View File
@@ -21,25 +21,26 @@ public:
NODE_TYPE = 1 << 1,
NODE_BUILTIN_TYPE = 1 << 2,
NODE_NAMESPACE = 1 << 3,
NODE_PACKAGE = 1 << 4,
NODE_STRUCT = 1 << 5,
NODE_CLASS = 1 << 6,
NODE_INTERFACE = 1 << 7,
NODE_ANNOTATION = 1 << 8,
NODE_GLOBAL_VARIABLE = 1 << 9,
NODE_FIELD = 1 << 10,
NODE_FUNCTION = 1 << 11,
NODE_METHOD = 1 << 12,
NODE_ENUM = 1 << 13,
NODE_ENUM_CONSTANT = 1 << 14,
NODE_TYPEDEF = 1 << 15,
NODE_TEMPLATE_PARAMETER = 1 << 16,
NODE_TYPE_PARAMETER = 1 << 17,
NODE_MODULE = 1 << 3,
NODE_NAMESPACE = 1 << 4,
NODE_PACKAGE = 1 << 5,
NODE_STRUCT = 1 << 6,
NODE_CLASS = 1 << 7,
NODE_INTERFACE = 1 << 8,
NODE_ANNOTATION = 1 << 9,
NODE_GLOBAL_VARIABLE = 1 << 10,
NODE_FIELD = 1 << 11,
NODE_FUNCTION = 1 << 12,
NODE_METHOD = 1 << 13,
NODE_ENUM = 1 << 14,
NODE_ENUM_CONSTANT = 1 << 15,
NODE_TYPEDEF = 1 << 16,
NODE_TEMPLATE_PARAMETER = 1 << 17,
NODE_TYPE_PARAMETER = 1 << 18,
NODE_FILE = 1 << 18,
NODE_MACRO = 1 << 19,
NODE_UNION = 1 << 20,
NODE_FILE = 1 << 19,
NODE_MACRO = 1 << 20,
NODE_UNION = 1 << 21,
NODE_MAX_VALUE = NODE_UNION
};
+1
View File
@@ -176,6 +176,7 @@ const std::vector<NodeType> NodeTypeSet::s_allNodeTypes = {
NodeType(NodeType::NODE_SYMBOL),
NodeType(NodeType::NODE_TYPE),
NodeType(NodeType::NODE_BUILTIN_TYPE),
NodeType(NodeType::NODE_MODULE),
NodeType(NodeType::NODE_NAMESPACE),
NodeType(NodeType::NODE_PACKAGE),
NodeType(NodeType::NODE_STRUCT),
+2
View File
@@ -120,6 +120,8 @@ NodeType ParserClientImpl::symbolKindToNodeType(SymbolKind symbolKind) const
return NodeType::NODE_MACRO;
case SYMBOL_METHOD:
return NodeType::NODE_METHOD;
case SYMBOL_MODULE:
return NodeType::NODE_MODULE;
case SYMBOL_NAMESPACE:
return NodeType::NODE_NAMESPACE;
case SYMBOL_PACKAGE:
+2 -5
View File
@@ -22,18 +22,16 @@ SymbolKind intToSymbolKind(int v)
return SYMBOL_GLOBAL_VARIABLE;
case SYMBOL_INTERFACE:
return SYMBOL_INTERFACE;
case SYMBOL_LOCAL_VARIABLE:
return SYMBOL_LOCAL_VARIABLE;
case SYMBOL_MACRO:
return SYMBOL_MACRO;
case SYMBOL_METHOD:
return SYMBOL_METHOD;
case SYMBOL_MODULE:
return SYMBOL_MODULE;
case SYMBOL_NAMESPACE:
return SYMBOL_NAMESPACE;
case SYMBOL_PACKAGE:
return SYMBOL_PACKAGE;
case SYMBOL_PARAMETER:
return SYMBOL_PARAMETER;
case SYMBOL_STRUCT:
return SYMBOL_STRUCT;
case SYMBOL_TEMPLATE_PARAMETER:
@@ -52,4 +50,3 @@ int symbolKindToInt(SymbolKind t)
{
return t;
}
+9 -10
View File
@@ -12,18 +12,17 @@ enum SymbolKind
SYMBOL_FUNCTION = 7,
SYMBOL_GLOBAL_VARIABLE = 8,
SYMBOL_INTERFACE = 9,
SYMBOL_LOCAL_VARIABLE = 10,
SYMBOL_MACRO = 11,
SYMBOL_METHOD = 12,
SYMBOL_MACRO = 10,
SYMBOL_METHOD = 11,
SYMBOL_MODULE = 12,
SYMBOL_NAMESPACE = 13,
SYMBOL_PACKAGE = 14,
SYMBOL_PARAMETER = 15,
SYMBOL_STRUCT = 16,
SYMBOL_TEMPLATE_PARAMETER = 17,
SYMBOL_TYPEDEF = 18,
SYMBOL_TYPE_PARAMETER = 19,
SYMBOL_UNION = 20,
SYMBOL_KIND_MAX = 21
SYMBOL_STRUCT = 15,
SYMBOL_TEMPLATE_PARAMETER = 16,
SYMBOL_TYPEDEF = 17,
SYMBOL_TYPE_PARAMETER = 18,
SYMBOL_UNION = 19,
SYMBOL_KIND_MAX = 20
};
SymbolKind intToSymbolKind(int v);
@@ -11,7 +11,7 @@
#include "SourceLocationFile.h"
#include "utilityString.h"
const size_t SqliteIndexStorage::s_storageVersion = 21;
const size_t SqliteIndexStorage::s_storageVersion = 22;
namespace
{
@@ -122,8 +122,7 @@ void CxxAstVisitorComponentIndexer::beginTraverseLambdaCapture(clang::LambdaExpr
if ((!lambdaExpr->isInitCapture(capture)) && (capture->capturesVariable()))
{
clang::VarDecl* d = capture->getCapturedVar();
SymbolKind symbolKind = utility::getSymbolKind(d);
if (symbolKind == SYMBOL_LOCAL_VARIABLE || symbolKind == SYMBOL_PARAMETER)
if (utility::isLocalVariable(d) || utility::isParameter(d))
{
if (!d->getNameAsString().empty()) // don't record anonymous parameters
{
@@ -205,8 +204,7 @@ void CxxAstVisitorComponentIndexer::visitVarDecl(clang::VarDecl* d)
{
if (getAstVisitor()->shouldVisitDecl(d))
{
SymbolKind symbolKind = utility::getSymbolKind(d);
if (symbolKind == SYMBOL_LOCAL_VARIABLE || symbolKind == SYMBOL_PARAMETER)
if (utility::isLocalVariable(d) || utility::isParameter(d))
{
if (!d->getNameAsString().empty()) // don't record anonymous parameters
{
@@ -215,6 +213,7 @@ void CxxAstVisitorComponentIndexer::visitVarDecl(clang::VarDecl* d)
}
else
{
const SymbolKind symbolKind = utility::getSymbolKind(d);
const ParseLocation location = getParseLocation(d->getLocation());
Id symbolId = getOrCreateSymbolId(d);
+15 -9
View File
@@ -85,15 +85,25 @@ SymbolKind utility::convertTagKind(const clang::TagTypeKind tagKind)
}
}
bool utility::isLocalVariable(const clang::VarDecl* d)
{
if (!llvm::isa<clang::ParmVarDecl>(d) && !(d->getParentFunctionOrMethod() == nullptr))
{
return true;
}
return false;
}
bool utility::isParameter(const clang::VarDecl* d)
{
return llvm::isa<clang::ParmVarDecl>(d);
}
SymbolKind utility::getSymbolKind(const clang::VarDecl* d)
{
SymbolKind symbolKind = SYMBOL_KIND_MAX;
if (llvm::isa<clang::ParmVarDecl>(d))
{
symbolKind = SYMBOL_PARAMETER;
}
else if (d->getParentFunctionOrMethod() == nullptr)
if (d->getParentFunctionOrMethod() == nullptr)
{
if (d->getAccess() == clang::AS_none)
{
@@ -104,10 +114,6 @@ SymbolKind utility::getSymbolKind(const clang::VarDecl* d)
symbolKind = SYMBOL_FIELD;
}
}
else
{
symbolKind = SYMBOL_LOCAL_VARIABLE;
}
return symbolKind;
}
@@ -24,6 +24,8 @@ namespace utility
bool isImplicit(const clang::Decl* d);
AccessKind convertAccessSpecifier(clang::AccessSpecifier access);
SymbolKind convertTagKind(const clang::TagTypeKind tagKind);
bool isLocalVariable(const clang::VarDecl* d);
bool isParameter(const clang::VarDecl* d);
SymbolKind getSymbolKind(const clang::VarDecl* d);
std::wstring getFileNameOfFileEntry(const clang::FileEntry* entry);
+1 -1
View File
@@ -171,7 +171,7 @@ void QtGraphView::initView()
m_groupNamespaceButton->setObjectName("group_left_button");
m_groupFileButton->setToolTip("group by file");
m_groupNamespaceButton->setToolTip("group by package/namespace");
m_groupNamespaceButton->setToolTip("group by package/namespace/module");
m_groupFileButton->setCheckable(true);
m_groupNamespaceButton->setCheckable(true);
@@ -299,6 +299,7 @@ public:
std::vector<std::wstring> globalVariables;
std::vector<std::wstring> methods;
std::vector<std::wstring> namespaces;
std::vector<std::wstring> modules;
std::vector<std::wstring> structs;
std::vector<std::wstring> macros;
std::vector<std::wstring> templateParameterTypes;
@@ -349,6 +350,8 @@ private:
return L"SYMBOL_MACRO";
case NodeType::NODE_METHOD:
return L"SYMBOL_METHOD";
case NodeType::NODE_MODULE:
return L"SYMBOL_MODULE";
case NodeType::NODE_NAMESPACE:
return L"SYMBOL_NAMESPACE";
case NodeType::NODE_PACKAGE:
@@ -437,6 +440,8 @@ private:
return &globalVariables;
case NodeType::NODE_METHOD:
return &methods;
case NodeType::NODE_MODULE:
return &modules;
case NodeType::NODE_NAMESPACE:
return &namespaces;
case NodeType::NODE_STRUCT: