src: converted NodeType to a class

NodeType internally still uses the Type enum
This commit is contained in:
mlangkabel
2017-11-23 17:05:15 +01:00
parent c512992e2c
commit 90e17c5868
52 changed files with 779 additions and 656 deletions
+2
View File
@@ -266,6 +266,8 @@ add_files(
data/ErrorInfo.h
data/HierarchyCache.cpp
data/HierarchyCache.h
data/NodeType.cpp
data/NodeType.h
data/TaskCleanStorage.cpp
data/TaskCleanStorage.h
data/TaskFinishParsing.cpp
@@ -500,10 +500,10 @@ std::vector<std::string> BookmarkController::getActiveEdgeDisplayNames() const
std::string BookmarkController::getNodeDisplayName(const Id nodeId) const
{
Node::NodeType type = m_storageAccess->getNodeTypeForNodeWithId(nodeId);
NodeType type = m_storageAccess->getNodeTypeForNodeWithId(nodeId);
NameHierarchy nameHierarchy = m_storageAccess->getNameHierarchyForNodeId(nodeId);
if (type == Node::NODE_FILE)
if (type.getType() == NodeType::NODE_FILE)
{
return FilePath(nameHierarchy.getQualifiedName()).fileName();
}
@@ -488,7 +488,7 @@ void GraphController::createDummyGraphForTokenIds(const std::vector<Id>& tokenId
{
node->hasParent = false;
if (node->data->isType(Node::NODE_NAMESPACE | Node::NODE_PACKAGE))
if (node->data->isType(NodeType::NODE_NAMESPACE | NodeType::NODE_PACKAGE))
{
node->name = node->data->getFullName();
}
@@ -546,7 +546,7 @@ std::vector<std::shared_ptr<DummyNode>> GraphController::createDummyNodeTopDown(
m_dummyGraphNodes.emplace(result->data->getId(), result);
nodes.push_back(result);
if (node->isType(Node::NODE_NAMESPACE))
if (node->isType(NodeType::NODE_NAMESPACE))
{
node->forEachChildNode(
[&nodes, &ancestorId, this](Node* child)
@@ -602,7 +602,7 @@ std::vector<Id> GraphController::getExpandedNodeIds() const
{
DummyNode* oldNode = p.second.get();
if (oldNode->expanded && !oldNode->autoExpanded && oldNode->isGraphNode() &&
!oldNode->data->isType(Node::NODE_FUNCTION | Node::NODE_METHOD))
!oldNode->data->isType(NodeType::NODE_FUNCTION | NodeType::NODE_METHOD))
{
nodeIds.push_back(p.first);
}
@@ -763,7 +763,7 @@ void GraphController::setNodeVisibilityRecursiveTopDown(DummyNode* node, bool pa
{
node->visible = true;
if (node->isGraphNode() && node->data->getType() == Node::NODE_ENUM && !node->isExpanded())
if (node->isGraphNode() && node->data->getType().getType() == NodeType::NODE_ENUM && !node->isExpanded())
{
return;
}
@@ -891,7 +891,7 @@ void GraphController::bundleNodes()
for (const std::shared_ptr<DummyNode>& node : m_dummyNodes)
{
if (node->bundleInfo.isActive && (
node->data->isType(Node::NODE_FILE | Node::NODE_MACRO) ||
node->data->isType(NodeType::NODE_FILE | NodeType::NODE_MACRO) ||
node->data->findEdgeOfType(Edge::EDGE_INCLUDE | Edge::EDGE_MACRO_USAGE) != nullptr))
{
fileOrMacroActive = true;
@@ -907,7 +907,7 @@ void GraphController::bundleNodes()
bundleNodesAndEdgesMatching(
[](const DummyNode::BundleInfo& info, const Node* data)
{
return data->isType(Node::NODE_FILE);
return data->isType(NodeType::NODE_FILE);
},
1,
false,
@@ -937,7 +937,7 @@ void GraphController::bundleNodes()
bundleNodesAndEdgesMatching(
[](const DummyNode::BundleInfo& info, const Node* data)
{
return info.isDefined && info.isReferenced && data->isType(Node::NODE_BUILTIN_TYPE);
return info.isDefined && info.isReferenced && data->isType(NodeType::NODE_BUILTIN_TYPE);
},
3,
false,
@@ -1133,13 +1133,13 @@ std::shared_ptr<DummyNode> GraphController::bundleNodesMatching(
}
void GraphController::bundleByType(
std::list<std::shared_ptr<DummyNode>>& nodes, Node::NodeType type, const std::string& name)
std::list<std::shared_ptr<DummyNode>>& nodes, NodeType::Type type, const std::string& name)
{
std::shared_ptr<DummyNode> bundleNode = bundleNodesMatching(
nodes,
[&](const DummyNode* node)
{
return node->visible && node->isGraphNode() && node->data->isType(type);
return node->visible && node->isGraphNode() && node->data->getType().getType() == type;
},
name
);
@@ -1164,33 +1164,33 @@ void GraphController::bundleNodesByType()
nodes.push_back(oldNodes[i]);
}
bundleByType(nodes, Node::NODE_FILE, "Files");
bundleByType(nodes, Node::NODE_MACRO, "Macros");
bundleByType(nodes, NodeType::NODE_FILE, "Files");
bundleByType(nodes, NodeType::NODE_MACRO, "Macros");
bundleByType(nodes, Node::NODE_NAMESPACE, "Namespaces");
bundleByType(nodes, Node::NODE_PACKAGE, "Packages");
bundleByType(nodes, NodeType::NODE_NAMESPACE, "Namespaces");
bundleByType(nodes, NodeType::NODE_PACKAGE, "Packages");
// bundleByType(nodes, Node::NODE_BUILTIN_TYPE, "Built-in Types");
bundleByType(nodes, Node::NODE_CLASS, "Classes");
bundleByType(nodes, Node::NODE_INTERFACE, "Interfaces");
bundleByType(nodes, Node::NODE_STRUCT, "Structs");
// bundleByType(nodes, NodeType::NODE_BUILTIN_TYPE, "Built-in Types");
bundleByType(nodes, NodeType::NODE_CLASS, "Classes");
bundleByType(nodes, NodeType::NODE_INTERFACE, "Interfaces");
bundleByType(nodes, NodeType::NODE_STRUCT, "Structs");
bundleByType(nodes, Node::NODE_FUNCTION, "Functions");
bundleByType(nodes, Node::NODE_GLOBAL_VARIABLE, "Global Variables");
bundleByType(nodes, NodeType::NODE_FUNCTION, "Functions");
bundleByType(nodes, NodeType::NODE_GLOBAL_VARIABLE, "Global Variables");
bundleByType(nodes, Node::NODE_TYPE, "Types");
bundleByType(nodes, Node::NODE_TYPEDEF, "Typedefs");
bundleByType(nodes, Node::NODE_ENUM, "Enums");
bundleByType(nodes, Node::NODE_UNION, "Unions");
bundleByType(nodes, NodeType::NODE_TYPE, "Types");
bundleByType(nodes, NodeType::NODE_TYPEDEF, "Typedefs");
bundleByType(nodes, NodeType::NODE_ENUM, "Enums");
bundleByType(nodes, NodeType::NODE_UNION, "Unions");
// // should never be visible
// bundleByType(nodes, Node::NODE_METHOD, "Methods");
// bundleByType(nodes, Node::NODE_FIELD, "Fields");
// bundleByType(nodes, Node::NODE_ENUM_CONSTANT, "Enum Constants");
// bundleByType(nodes, Node::NODE_TEMPLATE_PARAMETER_TYPE, "Template Parameter Types");
// bundleByType(nodes, Node::NODE_TYPE_PARAMETER, "Type Parameters");
// bundleByType(nodes, Node::NODE_NON_INDEXED, "Non-indexed Symbols");
// bundleByType(nodes, NodeType::NODE_METHOD, "Methods");
// bundleByType(nodes, NodeType::NODE_FIELD, "Fields");
// bundleByType(nodes, NodeType::NODE_ENUM_CONSTANT, "Enum Constants");
// bundleByType(nodes, NodeType::NODE_TEMPLATE_PARAMETER_TYPE, "Template Parameter Types");
// bundleByType(nodes, NodeType::NODE_TYPE_PARAMETER, "Type Parameters");
// bundleByType(nodes, NodeType::NODE_NON_INDEXED, "Non-indexed Symbols");
if (nodes.size())
{
@@ -1229,7 +1229,7 @@ void GraphController::bundleNodesByType()
if (anonymousBundle)
{
anonymousBundle->bundledNodeType = Node::NODE_NAMESPACE;
anonymousBundle->bundledNodeType = NodeType::NODE_NAMESPACE;
bundleNode->bundledNodeCount = bundleNode->getBundledNodeCount() + anonymousBundle->getBundledNodeCount();
bundleNode->bundledNodes.insert(anonymousBundle);
}
@@ -1312,7 +1312,7 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
}
else if (node->isBundleNode())
{
if (node->bundledNodeType != Node::NODE_NON_INDEXED)
if (node->bundledNodeType.getType() != NodeType::NODE_NON_INDEXED)
{
margins = GraphViewStyle::getMarginsForNodeType(node->bundledNodeType, false);
}
@@ -1345,7 +1345,7 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
width = margins.charWidth * node->name.size();
if (node->data->isType(Node::NODE_COLLAPSIBLE_TYPE) && node->data->getChildCount() > 0)
if (node->data->getType().isCollapsible() && node->data->getChildCount() > 0)
{
addExpandToggleNode(node);
}
@@ -1626,10 +1626,10 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
std::shared_ptr<Graph> graph = std::make_shared<Graph>();
std::function<void(Id, Node::NodeType, NameDelimiterType)> createNodes(
[&](Id id, Node::NodeType type, NameDelimiterType delimiter)
std::function<void(Id, NodeType, NameDelimiterType)> createNodes(
[&](Id id, NodeType type, NameDelimiterType delimiter)
{
std::string name = Node::getReadableTypeString(type);
std::string name = type.getReadableTypeString();
graph->createNode(id + 1, type, NameHierarchy(name, delimiter), true);
graph->createNode(id + 2, type, NameHierarchy("focused " + name, delimiter), true);
graph->createNode(id + 3, type, NameHierarchy("active " + name, delimiter), true);
@@ -1640,17 +1640,17 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
}
);
createNodes( 0, Node::NODE_FUNCTION, NAME_DELIMITER_CXX);
createNodes(10, Node::NODE_GLOBAL_VARIABLE, NAME_DELIMITER_CXX);
createNodes(20, Node::NODE_NON_INDEXED, NAME_DELIMITER_CXX);
createNodes(30, Node::NODE_TYPE, NAME_DELIMITER_CXX);
createNodes(40, Node::NODE_TYPEDEF, NAME_DELIMITER_CXX);
createNodes(50, Node::NODE_NAMESPACE, NAME_DELIMITER_CXX);
createNodes(60, Node::NODE_FILE, NAME_DELIMITER_FILE);
createNodes(70, Node::NODE_MACRO, NAME_DELIMITER_CXX);
createNodes( 0, NodeType::NODE_FUNCTION, NAME_DELIMITER_CXX);
createNodes(10, NodeType::NODE_GLOBAL_VARIABLE, NAME_DELIMITER_CXX);
createNodes(20, NodeType::NODE_NON_INDEXED, NAME_DELIMITER_CXX);
createNodes(30, NodeType::NODE_TYPE, NAME_DELIMITER_CXX);
createNodes(40, NodeType::NODE_TYPEDEF, NAME_DELIMITER_CXX);
createNodes(50, NodeType::NODE_NAMESPACE, NAME_DELIMITER_CXX);
createNodes(60, NodeType::NODE_FILE, NAME_DELIMITER_FILE);
createNodes(70, NodeType::NODE_MACRO, NAME_DELIMITER_CXX);
std::function<Node*(Node*, Id, Node::NodeType, std::string, AccessKind)> createChild(
[&](Node* parent, Id id, Node::NodeType type, std::string name, AccessKind access)
std::function<Node*(Node*, Id, NodeType, std::string, AccessKind)> createChild(
[&](Node* parent, Id id, NodeType type, std::string name, AccessKind access)
{
Node* node = graph->createNode(id + 1000, type, NameHierarchy(name, NAME_DELIMITER_CXX), true);
graph->createEdge(id + 10000, Edge::EDGE_MEMBER, parent, node);
@@ -1667,9 +1667,9 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
std::function<void(Id, std::string)> createEnum(
[&](Id id, std::string name)
{
Node* enumNode = graph->createNode(id, Node::NODE_ENUM,
NameHierarchy(name + Node::getReadableTypeString(Node::NODE_ENUM), NAME_DELIMITER_CXX), true);
createChild(enumNode, id + 10, Node::NODE_ENUM_CONSTANT, name + Node::getReadableTypeString(Node::NODE_ENUM_CONSTANT), ACCESS_NONE);
Node* enumNode = graph->createNode(id, NodeType::NODE_ENUM,
NameHierarchy(name + NodeType(NodeType::NODE_ENUM).getReadableTypeString(), NAME_DELIMITER_CXX), true);
createChild(enumNode, id + 10, NodeType::NODE_ENUM_CONSTANT, name + NodeType(NodeType::NODE_ENUM_CONSTANT).getReadableTypeString(), ACCESS_NONE);
}
);
@@ -1681,27 +1681,27 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
createEnum(105, "Non-indexed focused ");
createEnum(106, "Non-indexed active ");
std::function<void(Id, Node::NodeType, std::string)> createClass(
[&](Id id, Node::NodeType type, std::string name)
std::function<void(Id, NodeType, std::string)> createClass(
[&](Id id, NodeType type, std::string name)
{
Node* classNode = graph->createNode(id, type, NameHierarchy(name + Node::getReadableTypeString(type), NAME_DELIMITER_CXX), true);
Node* classNode = graph->createNode(id, type, NameHierarchy(name + NodeType(type).getReadableTypeString(), NAME_DELIMITER_CXX), true);
if (type == Node::NODE_CLASS)
if (type.getType() == NodeType::NODE_CLASS)
{
createChild(classNode, id, Node::NODE_TEMPLATE_PARAMETER_TYPE, name + "temp_param", ACCESS_TEMPLATE_PARAMETER);
createChild(classNode, id, NodeType::NODE_TEMPLATE_PARAMETER_TYPE, name + "temp_param", ACCESS_TEMPLATE_PARAMETER);
}
createChild(classNode, id + 10, Node::NODE_METHOD, name + "method", ACCESS_PUBLIC);
if (type == Node::NODE_CLASS)
createChild(classNode, id + 10, NodeType::NODE_METHOD, name + "method", ACCESS_PUBLIC);
if (type.getType() == NodeType::NODE_CLASS)
{
createChild(classNode, id + 30, Node::NODE_METHOD, name + "method", ACCESS_PROTECTED);
createChild(classNode, id + 30, NodeType::NODE_METHOD, name + "method", ACCESS_PROTECTED);
}
createChild(classNode, id + 60, Node::NODE_FIELD, name + "field", ACCESS_PRIVATE);
createChild(classNode, id + 60, NodeType::NODE_FIELD, name + "field", ACCESS_PRIVATE);
}
);
std::function<void(Id, Node::NodeType)> createClasses(
[&](Id id, Node::NodeType type)
std::function<void(Id, NodeType)> createClasses(
[&](Id id, NodeType type)
{
createClass(id + 1, type, "");
createClass(id + 2, type, "focused ");
@@ -1713,19 +1713,19 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
}
);
createClasses(200, Node::NODE_STRUCT);
createClasses(300, Node::NODE_CLASS);
createClasses(200, NodeType::NODE_STRUCT);
createClasses(300, NodeType::NODE_CLASS);
std::function<void(Id, Edge::EdgeType, Node::NodeType, Node::NodeType, std::string)> createEdge(
[&](Id id, Edge::EdgeType type, Node::NodeType origin, Node::NodeType target, std::string name)
std::function<void(Id, Edge::EdgeType, NodeType, NodeType, std::string)> createEdge(
[&](Id id, Edge::EdgeType type, NodeType origin, NodeType target, std::string name)
{
Node* originNode;
if (origin == Node::NODE_METHOD)
if (origin.getType() == NodeType::NODE_METHOD)
{
Node* classNode = graph->createNode(id + 101, Node::NODE_CLASS,
NameHierarchy(name + Node::getReadableTypeString(Node::NODE_CLASS), NAME_DELIMITER_CXX), true);
originNode = createChild(classNode, id + 111, Node::NODE_METHOD, name + Edge::getReadableTypeString(type), ACCESS_PUBLIC);
Node* classNode = graph->createNode(id + 101, NodeType::NODE_CLASS,
NameHierarchy(name + NodeType(NodeType::NODE_CLASS).getReadableTypeString(), NAME_DELIMITER_CXX), true);
originNode = createChild(classNode, id + 111, NodeType::NODE_METHOD, name + Edge::getReadableTypeString(type), ACCESS_PUBLIC);
}
else
{
@@ -1733,11 +1733,11 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
}
Node* targetNode;
if (target == Node::NODE_METHOD)
if (target.getType() == NodeType::NODE_METHOD)
{
Node* classNode = graph->createNode(id + 201, Node::NODE_CLASS,
NameHierarchy(name + Node::getReadableTypeString(Node::NODE_CLASS), NAME_DELIMITER_CXX), true);
targetNode = createChild(classNode, id + 211, Node::NODE_METHOD, name + Edge::getReadableTypeString(type), ACCESS_PUBLIC);
Node* classNode = graph->createNode(id + 201, NodeType::NODE_CLASS,
NameHierarchy(name + NodeType(NodeType::NODE_CLASS).getReadableTypeString(), NAME_DELIMITER_CXX), true);
targetNode = createChild(classNode, id + 211, NodeType::NODE_METHOD, name + Edge::getReadableTypeString(type), ACCESS_PUBLIC);
}
else
{
@@ -1758,8 +1758,8 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
}
);
std::function<void(Id, Edge::EdgeType, Node::NodeType, Node::NodeType)> createEdges(
[&](Id id, Edge::EdgeType type, Node::NodeType origin, Node::NodeType target)
std::function<void(Id, Edge::EdgeType, NodeType, NodeType)> createEdges(
[&](Id id, Edge::EdgeType type, NodeType origin, NodeType target)
{
createEdge(id, type, origin, target, "");
createEdge(id + 1000, type, origin, target, "focused ");
@@ -1767,21 +1767,21 @@ void GraphController::handleMessage(MessageColorSchemeTest* message)
}
);
createEdges( 100000, Edge::EDGE_CALL, Node::NODE_FUNCTION, Node::NODE_FUNCTION);
createEdges( 200000, Edge::EDGE_USAGE, Node::NODE_GLOBAL_VARIABLE, Node::NODE_GLOBAL_VARIABLE);
createEdges( 300000, Edge::EDGE_TYPE_USAGE, Node::NODE_FUNCTION, Node::NODE_TYPE);
createEdges( 100000, Edge::EDGE_CALL, NodeType::NODE_FUNCTION, NodeType::NODE_FUNCTION);
createEdges( 200000, Edge::EDGE_USAGE, NodeType::NODE_GLOBAL_VARIABLE, NodeType::NODE_GLOBAL_VARIABLE);
createEdges( 300000, Edge::EDGE_TYPE_USAGE, NodeType::NODE_FUNCTION, NodeType::NODE_TYPE);
createEdges( 400000, Edge::EDGE_AGGREGATION, Node::NODE_TYPE, Node::NODE_TYPE);
createEdges( 500000, Edge::EDGE_INCLUDE, Node::NODE_FILE, Node::NODE_FILE);
createEdges( 600000, Edge::EDGE_MACRO_USAGE, Node::NODE_MACRO, Node::NODE_MACRO);
createEdges( 400000, Edge::EDGE_AGGREGATION, NodeType::NODE_TYPE, NodeType::NODE_TYPE);
createEdges( 500000, Edge::EDGE_INCLUDE, NodeType::NODE_FILE, NodeType::NODE_FILE);
createEdges( 600000, Edge::EDGE_MACRO_USAGE, NodeType::NODE_MACRO, NodeType::NODE_MACRO);
createEdges( 700000, Edge::EDGE_INHERITANCE, Node::NODE_CLASS, Node::NODE_CLASS);
createEdges( 800000, Edge::EDGE_OVERRIDE, Node::NODE_METHOD, Node::NODE_METHOD);
createEdges( 700000, Edge::EDGE_INHERITANCE, NodeType::NODE_CLASS, NodeType::NODE_CLASS);
createEdges( 800000, Edge::EDGE_OVERRIDE, NodeType::NODE_METHOD, NodeType::NODE_METHOD);
createEdges( 900000, Edge::EDGE_TEMPLATE_ARGUMENT, Node::NODE_TYPE, Node::NODE_TYPE);
createEdges(1000000, Edge::EDGE_TEMPLATE_DEFAULT_ARGUMENT, Node::NODE_TYPE, Node::NODE_TYPE);
createEdges(1100000, Edge::EDGE_TEMPLATE_SPECIALIZATION, Node::NODE_TYPE, Node::NODE_TYPE);
createEdges(1200000, Edge::EDGE_TEMPLATE_MEMBER_SPECIALIZATION, Node::NODE_METHOD, Node::NODE_METHOD);
createEdges( 900000, Edge::EDGE_TEMPLATE_ARGUMENT, NodeType::NODE_TYPE, NodeType::NODE_TYPE);
createEdges(1000000, Edge::EDGE_TEMPLATE_DEFAULT_ARGUMENT, NodeType::NODE_TYPE, NodeType::NODE_TYPE);
createEdges(1100000, Edge::EDGE_TEMPLATE_SPECIALIZATION, NodeType::NODE_TYPE, NodeType::NODE_TYPE);
createEdges(1200000, Edge::EDGE_TEMPLATE_MEMBER_SPECIALIZATION, NodeType::NODE_METHOD, NodeType::NODE_METHOD);
std::vector<Id> focusedTokenIds;
std::vector<Id> activeTokenIds;
@@ -94,7 +94,7 @@ private:
const std::string& name);
std::shared_ptr<DummyNode> bundleNodesMatching(
std::list<std::shared_ptr<DummyNode>>& nodes, std::function<bool(const DummyNode*)> matcher, const std::string& name);
void bundleByType(std::list<std::shared_ptr<DummyNode>>& nodes, Node::NodeType type, const std::string& name);
void bundleByType(std::list<std::shared_ptr<DummyNode>>& nodes, NodeType::Type type, const std::string& name);
void bundleNodesByType();
void addCharacterIndex();
@@ -615,7 +615,7 @@ SearchMatch UndoRedoController::getSearchMatchForMessage(MessageBase* message) c
SearchMatch match;
match.name = match.text = "aggregation"; // TODO: show aggregation source and target
match.searchType = SearchMatch::SEARCH_TOKEN;
match.nodeType = Node::NODE_TYPE;
match.nodeType = NodeType::NODE_TYPE;
return match;
}
}
@@ -67,7 +67,7 @@ public:
, bundleId(0)
, layoutBucket(0, 0)
, bundledNodeCount(0)
, bundledNodeType(Node::NODE_NON_INDEXED)
, bundledNodeType(NodeType::NODE_NON_INDEXED)
, qualifierName(NAME_DELIMITER_UNKNOWN)
, textNode(false)
{
@@ -376,7 +376,7 @@ public:
// BundleNode
BundledNodesSet bundledNodes;
size_t bundledNodeCount;
Node::NodeType bundledNodeType;
NodeType bundledNodeType;
// QualifierNode
NameHierarchy qualifierName;
+69 -96
View File
@@ -11,8 +11,8 @@
int GraphViewStyle::s_gridCellSize = 5;
int GraphViewStyle::s_gridCellPadding = 10;
std::map<Node::NodeType, float> GraphViewStyle::s_charWidths;
std::map<Node::NodeType, float> GraphViewStyle::s_charHeights;
std::unordered_map<std::string, float> GraphViewStyle::s_charWidths;
std::unordered_map<std::string, float> GraphViewStyle::s_charHeights;
std::shared_ptr<GraphViewStyleImpl> GraphViewStyle::s_impl;
@@ -145,13 +145,13 @@ void GraphViewStyle::loadStyleSettings()
s_edgeColors.clear();
s_screenMatchColors.clear();
s_gridCellPadding = getImpl()->getCharHeightForNodeType(Node::NODE_TYPE) - 8;
s_gridCellPadding = getImpl()->getCharHeightForNodeType(NodeType::NODE_TYPE) - 8;
s_gridCellSize = s_gridCellPadding / 2;
}
float GraphViewStyle::getCharWidthForNodeType(Node::NodeType type)
float GraphViewStyle::getCharWidthForNodeType(NodeType type)
{
std::map<Node::NodeType, float>::const_iterator it = s_charWidths.find(type);
std::unordered_map<std::string, float>::const_iterator it = s_charWidths.find(type.getReadableTypeString());
if (it != s_charWidths.end())
{
@@ -159,13 +159,13 @@ float GraphViewStyle::getCharWidthForNodeType(Node::NodeType type)
}
float charWidth = getImpl()->getCharWidthForNodeType(type);
s_charWidths.emplace(type, charWidth);
s_charWidths.emplace(type.getReadableTypeString(), charWidth);
return charWidth;
}
float GraphViewStyle::getCharHeightForNodeType(Node::NodeType type)
float GraphViewStyle::getCharHeightForNodeType(NodeType type)
{
std::map<Node::NodeType, float>::const_iterator it = s_charHeights.find(type);
std::unordered_map<std::string, float>::const_iterator it = s_charHeights.find(type.getReadableTypeString());
if (it != s_charHeights.end())
{
@@ -173,40 +173,13 @@ float GraphViewStyle::getCharHeightForNodeType(Node::NodeType type)
}
float charHeight = getImpl()->getCharHeightForNodeType(type);
s_charHeights.emplace(type, charHeight);
s_charHeights.emplace(type.getReadableTypeString(), charHeight);
return charHeight;
}
size_t GraphViewStyle::getFontSizeForNodeType(Node::NodeType type)
size_t GraphViewStyle::getFontSizeForNodeType(NodeType type)
{
switch (type)
{
case Node::NODE_NAMESPACE:
case Node::NODE_PACKAGE:
return s_fontSize - 3;
case Node::NODE_NON_INDEXED:
case Node::NODE_TYPE:
case Node::NODE_BUILTIN_TYPE:
case Node::NODE_STRUCT:
case Node::NODE_CLASS:
case Node::NODE_UNION:
case Node::NODE_INTERFACE:
case Node::NODE_ENUM:
case Node::NODE_TYPEDEF:
case Node::NODE_TEMPLATE_PARAMETER_TYPE:
case Node::NODE_TYPE_PARAMETER:
case Node::NODE_FILE:
case Node::NODE_MACRO:
return s_fontSize;
case Node::NODE_FUNCTION:
case Node::NODE_METHOD:
case Node::NODE_GLOBAL_VARIABLE:
case Node::NODE_FIELD:
case Node::NODE_ENUM_CONSTANT:
return s_fontSize - 3;
}
return s_fontSize + type.getFontSizeOffset();
}
size_t GraphViewStyle::getFontSizeOfAccessNode()
@@ -234,7 +207,7 @@ size_t GraphViewStyle::getFontSizeOfTextNode()
return s_fontSize + 5;
}
std::string GraphViewStyle::getFontNameForNodeType(Node::NodeType type)
std::string GraphViewStyle::getFontNameForDataNode()
{
return s_fontName;
}
@@ -254,35 +227,35 @@ std::string GraphViewStyle::getFontNameOfTextNode()
return "Fira Sans";
}
GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(Node::NodeType type, bool hasChildren)
GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(NodeType type, bool hasChildren)
{
NodeMargins margins;
margins.spacingX = 6;
margins.spacingY = 8;
switch (type)
switch (type.getType())
{
case Node::NODE_NAMESPACE:
case Node::NODE_PACKAGE:
case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE:
margins.left = margins.right = 5;
margins.top = margins.bottom = 3;
margins.iconWidth = s_fontSize - 3;
break;
case Node::NODE_ENUM:
case Node::NODE_TYPEDEF:
case Node::NODE_FILE:
case Node::NODE_MACRO:
case NodeType::NODE_ENUM:
case NodeType::NODE_TYPEDEF:
case NodeType::NODE_FILE:
case NodeType::NODE_MACRO:
margins.iconWidth = s_fontSize + 11;
case Node::NODE_NON_INDEXED:
case Node::NODE_TYPE:
case Node::NODE_BUILTIN_TYPE:
case Node::NODE_STRUCT:
case Node::NODE_CLASS:
case Node::NODE_UNION:
case Node::NODE_INTERFACE:
case Node::NODE_TEMPLATE_PARAMETER_TYPE:
case Node::NODE_TYPE_PARAMETER:
case NodeType::NODE_NON_INDEXED:
case NodeType::NODE_TYPE:
case NodeType::NODE_BUILTIN_TYPE:
case NodeType::NODE_STRUCT:
case NodeType::NODE_CLASS:
case NodeType::NODE_UNION:
case NodeType::NODE_INTERFACE:
case NodeType::NODE_TEMPLATE_PARAMETER_TYPE:
case NodeType::NODE_TYPE_PARAMETER:
if (hasChildren)
{
margins.left = margins.right = 10;
@@ -296,11 +269,11 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(Node::NodeType
}
break;
case Node::NODE_FUNCTION:
case Node::NODE_METHOD:
case Node::NODE_GLOBAL_VARIABLE:
case Node::NODE_FIELD:
case Node::NODE_ENUM_CONSTANT:
case NodeType::NODE_FUNCTION:
case NodeType::NODE_METHOD:
case NodeType::NODE_GLOBAL_VARIABLE:
case NodeType::NODE_FIELD:
case NodeType::NODE_ENUM_CONSTANT:
if (hasChildren)
{
margins.top = margins.bottom = 5;
@@ -370,7 +343,7 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsOfExpandToggleNode()
GraphViewStyle::NodeMargins GraphViewStyle::getMarginsOfBundleNode()
{
return getMarginsForNodeType(Node::NODE_ENUM, false);
return getMarginsForNodeType(NodeType::NODE_ENUM, false);
}
GraphViewStyle::NodeMargins GraphViewStyle::getMarginsOfTextNode()
@@ -385,13 +358,13 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsOfTextNode()
}
GraphViewStyle::NodeStyle GraphViewStyle::getStyleForNodeType(
Node::NodeType type, bool defined, bool isActive, bool isFocused, bool hasChildren, bool hasQualifier
NodeType type, bool defined, bool isActive, bool isFocused, bool hasChildren, bool hasQualifier
){
NodeStyle style;
style.color = getNodeColor(Node::getUnderscoredTypeString(type), isActive || isFocused);
style.color = getNodeColor(type.getUnderscoredTypeString(), isActive || isFocused);
style.fontName = getFontNameForNodeType(type);
style.fontName = getFontNameForDataNode();
style.fontSize = getFontSizeForNodeType(type);
if (isActive || isFocused)
@@ -408,28 +381,28 @@ GraphViewStyle::NodeStyle GraphViewStyle::getStyleForNodeType(
style.borderWidth = 1;
}
switch (type)
switch (type.getType())
{
case Node::NODE_NAMESPACE:
case Node::NODE_PACKAGE:
case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE:
style.cornerRadius = 0;
style.textOffset.x = 5;
style.textOffset.y = 3;
break;
case Node::NODE_NON_INDEXED:
case Node::NODE_TYPE:
case Node::NODE_BUILTIN_TYPE:
case Node::NODE_STRUCT:
case Node::NODE_CLASS:
case Node::NODE_UNION:
case Node::NODE_INTERFACE:
case Node::NODE_ENUM:
case Node::NODE_TYPEDEF:
case Node::NODE_TEMPLATE_PARAMETER_TYPE:
case Node::NODE_TYPE_PARAMETER:
case Node::NODE_FILE:
case Node::NODE_MACRO:
case NodeType::NODE_NON_INDEXED:
case NodeType::NODE_TYPE:
case NodeType::NODE_BUILTIN_TYPE:
case NodeType::NODE_STRUCT:
case NodeType::NODE_CLASS:
case NodeType::NODE_UNION:
case NodeType::NODE_INTERFACE:
case NodeType::NODE_ENUM:
case NodeType::NODE_TYPEDEF:
case NodeType::NODE_TEMPLATE_PARAMETER_TYPE:
case NodeType::NODE_TYPE_PARAMETER:
case NodeType::NODE_FILE:
case NodeType::NODE_MACRO:
if (hasChildren)
{
style.cornerRadius = 20;
@@ -444,11 +417,11 @@ GraphViewStyle::NodeStyle GraphViewStyle::getStyleForNodeType(
}
break;
case Node::NODE_FUNCTION:
case Node::NODE_METHOD:
case Node::NODE_GLOBAL_VARIABLE:
case Node::NODE_FIELD:
case Node::NODE_ENUM_CONSTANT:
case NodeType::NODE_FUNCTION:
case NodeType::NODE_METHOD:
case NodeType::NODE_GLOBAL_VARIABLE:
case NodeType::NODE_FIELD:
case NodeType::NODE_ENUM_CONSTANT:
style.cornerRadius = 8;
style.textOffset.x = 5;
style.textOffset.y = 3;
@@ -520,11 +493,11 @@ GraphViewStyle::NodeStyle GraphViewStyle::getStyleOfCountCircle()
GraphViewStyle::NodeStyle GraphViewStyle::getStyleOfBundleNode(bool isFocused)
{
NodeStyle style = getStyleForNodeType(Node::NODE_CLASS, true, false, isFocused, false, false);
NodeStyle style = getStyleForNodeType(NodeType::NODE_CLASS, true, false, isFocused, false, false);
style.color = getNodeColor("bundle", isFocused);
addIcon(Node::NODE_ENUM, false, &style);
addIcon(NodeType::NODE_ENUM, false, &style);
style.iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/bundle.png";
return style;
@@ -737,28 +710,28 @@ const GraphViewStyle::NodeColor& GraphViewStyle::getScreenMatchColor(bool focus)
return s_screenMatchColors.find(focus)->second;
}
void GraphViewStyle::addIcon(Node::NodeType type, bool hasChildren, NodeStyle* style)
void GraphViewStyle::addIcon(NodeType type, bool hasChildren, NodeStyle* style)
{
switch (type)
switch (type.getType())
{
case Node::NODE_NAMESPACE:
case Node::NODE_PACKAGE:
case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE:
style->iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/namespace.png";
style->iconSize = s_fontSize - 4;
style->iconOffset.x = -1;
style->iconOffset.y = 5;
return;
case Node::NODE_ENUM:
case NodeType::NODE_ENUM:
style->iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/enum.png";
break;
case Node::NODE_TYPEDEF:
case NodeType::NODE_TYPEDEF:
style->iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/typedef.png";
break;
case Node::NODE_MACRO:
case NodeType::NODE_MACRO:
style->iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/macro.png";
break;
case Node::NODE_FILE:
case NodeType::NODE_FILE:
style->iconPath = ResourcePaths::getGuiPath().str() + "graph_view/images/file.png";
break;
default:
+10 -9
View File
@@ -3,6 +3,7 @@
#include <map>
#include <memory>
#include <unordered_map>
#include "utility/math/Vector2.h"
@@ -98,29 +99,29 @@ public:
static void loadStyleSettings();
static float getCharWidthForNodeType(Node::NodeType type);
static float getCharHeightForNodeType(Node::NodeType type);
static float getCharWidthForNodeType(NodeType type);
static float getCharHeightForNodeType(NodeType type);
static size_t getFontSizeForNodeType(Node::NodeType type);
static size_t getFontSizeForNodeType(NodeType type);
static size_t getFontSizeOfAccessNode();
static size_t getFontSizeOfExpandToggleNode();
static size_t getFontSizeOfCountCircle();
static size_t getFontSizeOfQualifier();
static size_t getFontSizeOfTextNode();
static std::string getFontNameForNodeType(Node::NodeType type);
static std::string getFontNameForDataNode();
static std::string getFontNameOfAccessNode();
static std::string getFontNameOfExpandToggleNode();
static std::string getFontNameOfTextNode();
static NodeMargins getMarginsForNodeType(Node::NodeType type, bool hasChildren);
static NodeMargins getMarginsForNodeType(NodeType type, bool hasChildren);
static NodeMargins getMarginsOfAccessNode(AccessKind access);
static NodeMargins getMarginsOfExpandToggleNode();
static NodeMargins getMarginsOfBundleNode();
static NodeMargins getMarginsOfTextNode();
static NodeStyle getStyleForNodeType(
Node::NodeType type, bool defined, bool isActive, bool isFocused, bool hasChildren, bool hasQualifier);
NodeType type, bool defined, bool isActive, bool isFocused, bool hasChildren, bool hasQualifier);
static NodeStyle getStyleOfAccessNode();
static NodeStyle getStyleOfExpandToggleNode();
static NodeStyle getStyleOfCountCircle();
@@ -144,10 +145,10 @@ public:
static int s_gridCellPadding;
private:
static void addIcon(Node::NodeType type, bool hasChildren, NodeStyle* style);
static void addIcon(NodeType type, bool hasChildren, NodeStyle* style);
static std::map<Node::NodeType, float> s_charWidths;
static std::map<Node::NodeType, float> s_charHeights;
static std::unordered_map<std::string, float> s_charWidths;
static std::unordered_map<std::string, float> s_charHeights;
static std::shared_ptr<GraphViewStyleImpl> s_impl;
+2 -2
View File
@@ -7,8 +7,8 @@ class GraphViewStyleImpl
{
public:
virtual ~GraphViewStyleImpl() { }
virtual float getCharWidthForNodeType(Node::NodeType type) = 0;
virtual float getCharHeightForNodeType(Node::NodeType type) = 0;
virtual float getCharWidthForNodeType(NodeType type) = 0;
virtual float getCharHeightForNodeType(NodeType type) = 0;
virtual float getGraphViewZoomDifferenceForPlatform() = 0;
};
+260
View File
@@ -0,0 +1,260 @@
#include "data/NodeType.h"
#include "utility/utilityString.h"
NodeType::NodeType(Type type)
: m_type(type)
{
}
bool NodeType::operator==(const NodeType& o) const
{
return m_type == o.m_type;
}
NodeType::Type NodeType::getType() const
{
return m_type;
}
bool NodeType::isFile() const
{
const NodeType::TypeMask mask =
NodeType::NODE_FILE;
return ((m_type & mask) > 0);
}
bool NodeType::isInheritable() const
{
// what about java enums?
const NodeType::TypeMask mask =
NodeType::NODE_NON_INDEXED |
NodeType::NODE_BUILTIN_TYPE |
NodeType::NODE_TYPE |
NodeType::NODE_STRUCT |
NodeType::NODE_CLASS |
NodeType::NODE_INTERFACE;
return ((m_type & mask) > 0);
}
bool NodeType::isPackage() const
{
const NodeType::TypeMask mask =
NodeType::NODE_NAMESPACE |
NodeType::NODE_PACKAGE;
return ((m_type & mask) > 0);
}
bool NodeType::isCallable() const
{
const NodeType::TypeMask mask =
NodeType::NODE_FUNCTION |
NodeType::NODE_METHOD;
return ((m_type & mask) > 0);
}
bool NodeType::isUsable() const
{
const NodeType::TypeMask mask =
NodeType::NODE_NON_INDEXED |
NodeType::NODE_BUILTIN_TYPE |
NodeType::NODE_STRUCT |
NodeType::NODE_CLASS |
NodeType::NODE_ENUM |
NodeType::NODE_UNION |
NodeType::NODE_INTERFACE |
NodeType::NODE_TYPEDEF;
return ((m_type & mask) > 0);
}
bool NodeType::isPotentialMember() const
{
const NodeType::TypeMask mask =
NodeType::NODE_METHOD |
NodeType::NODE_FIELD |
NodeType::NODE_CLASS |
NodeType::NODE_INTERFACE |
NodeType::NODE_STRUCT |
NodeType::NODE_UNION |
NodeType::NODE_TYPEDEF |
NodeType::NODE_ENUM;
return ((m_type & mask) > 0);
}
bool NodeType::isCollapsible() const
{
const NodeType::TypeMask mask =
NodeType::NODE_NON_INDEXED |
NodeType::NODE_TYPE |
NodeType::NODE_BUILTIN_TYPE |
NodeType::NODE_CLASS |
NodeType::NODE_STRUCT |
NodeType::NODE_ENUM |
NodeType::NODE_UNION |
NodeType::NODE_INTERFACE;
return ((m_type & mask) > 0);
}
bool NodeType::isVisibleAsParentInGraph() const
{
return !isPackage();
}
int NodeType::getFontSizeOffset() const
{
switch (m_type)
{
case NodeType::NODE_NAMESPACE:
case NodeType::NODE_PACKAGE:
return - 3;
case NodeType::NODE_NON_INDEXED:
case NodeType::NODE_TYPE:
case NodeType::NODE_BUILTIN_TYPE:
case NodeType::NODE_STRUCT:
case NodeType::NODE_CLASS:
case NodeType::NODE_UNION:
case NodeType::NODE_INTERFACE:
case NodeType::NODE_ENUM:
case NodeType::NODE_TYPEDEF:
case NodeType::NODE_TEMPLATE_PARAMETER_TYPE:
case NodeType::NODE_TYPE_PARAMETER:
case NodeType::NODE_FILE:
case NodeType::NODE_MACRO:
return 0;
case NodeType::NODE_FUNCTION:
case NodeType::NODE_METHOD:
case NodeType::NODE_GLOBAL_VARIABLE:
case NodeType::NODE_FIELD:
case NodeType::NODE_ENUM_CONSTANT:
return - 3;
}
}
std::string NodeType::getUnderscoredTypeString() const
{
return utility::replace(utility::replace(getReadableTypeString(), "-", "_"), " ", "_");
}
std::string NodeType::getReadableTypeString() const
{
return utility::getReadableTypeString(m_type);
}
int utility::nodeTypeToInt(NodeType::Type type)
{
return type;
}
NodeType::Type utility::intToType(int value)
{
switch (value)
{
case NodeType::NODE_TYPE:
return NodeType::NODE_TYPE;
case NodeType::NODE_BUILTIN_TYPE:
return NodeType::NODE_BUILTIN_TYPE;
case NodeType::NODE_NAMESPACE:
return NodeType::NODE_NAMESPACE;
case NodeType::NODE_PACKAGE:
return NodeType::NODE_PACKAGE;
case NodeType::NODE_STRUCT:
return NodeType::NODE_STRUCT;
case NodeType::NODE_CLASS:
return NodeType::NODE_CLASS;
case NodeType::NODE_INTERFACE:
return NodeType::NODE_INTERFACE;
case NodeType::NODE_GLOBAL_VARIABLE:
return NodeType::NODE_GLOBAL_VARIABLE;
case NodeType::NODE_FIELD:
return NodeType::NODE_FIELD;
case NodeType::NODE_FUNCTION:
return NodeType::NODE_FUNCTION;
case NodeType::NODE_METHOD:
return NodeType::NODE_METHOD;
case NodeType::NODE_ENUM:
return NodeType::NODE_ENUM;
case NodeType::NODE_ENUM_CONSTANT:
return NodeType::NODE_ENUM_CONSTANT;
case NodeType::NODE_TYPEDEF:
return NodeType::NODE_TYPEDEF;
case NodeType::NODE_TEMPLATE_PARAMETER_TYPE:
return NodeType::NODE_TEMPLATE_PARAMETER_TYPE;
case NodeType::NODE_TYPE_PARAMETER:
return NodeType::NODE_TYPE_PARAMETER;
case NodeType::NODE_FILE:
return NodeType::NODE_FILE;
case NodeType::NODE_MACRO:
return NodeType::NODE_MACRO;
case NodeType::NODE_UNION:
return NodeType::NODE_UNION;
}
return NodeType::NODE_NON_INDEXED;
}
std::string utility::getReadableTypeString(NodeType::Type type)
{
switch (type)
{
case NodeType::NODE_NON_INDEXED:
return "non-indexed";
case NodeType::NODE_BUILTIN_TYPE:
return "built-in type";
case NodeType::NODE_TYPE:
return "type";
case NodeType::NODE_NAMESPACE:
return "namespace";
case NodeType::NODE_PACKAGE:
return "package";
case NodeType::NODE_STRUCT:
return "struct";
case NodeType::NODE_CLASS:
return "class";
case NodeType::NODE_INTERFACE:
return "interface";
case NodeType::NODE_GLOBAL_VARIABLE:
return "global variable";
case NodeType::NODE_FIELD:
return "field";
case NodeType::NODE_FUNCTION:
return "function";
case NodeType::NODE_METHOD:
return "method";
case NodeType::NODE_ENUM:
return "enum";
case NodeType::NODE_ENUM_CONSTANT:
return "enum constant";
case NodeType::NODE_TYPEDEF:
return "typedef";
case NodeType::NODE_TEMPLATE_PARAMETER_TYPE:
return "template parameter type";
case NodeType::NODE_TYPE_PARAMETER:
return "type parameter";
case NodeType::NODE_FILE:
return "file";
case NodeType::NODE_MACRO:
return "macro";
case NodeType::NODE_UNION:
return "union";
}
return "";
}
NodeType::Type utility::getTypeForReadableTypeString(const std::string str)
{
for (NodeType::TypeMask mask = 1; mask <= NodeType::NODE_MAX_VALUE; mask *= 2)
{
NodeType::Type type = intToType(mask);
if (getReadableTypeString(type) == str)
{
return type;
}
}
return NodeType::NODE_NON_INDEXED;
}
+76
View File
@@ -0,0 +1,76 @@
#ifndef NODE_TYPE_H
#define NODE_TYPE_H
#include <map>
#include <memory>
#include <set>
#include <vector>
#include "utility/types.h"
class NodeType
{
public:
typedef int NodeType::TypeMask;
enum Type : NodeType::TypeMask
{ // make sure that the value of 0x0 is not used here because it doesn't work for bitmasking.
NODE_NON_INDEXED = 0x1,
NODE_TYPE = 0x2,
NODE_BUILTIN_TYPE = 0x4,
NODE_NAMESPACE = 0x8,
NODE_PACKAGE = 0x10,
NODE_STRUCT = 0x20,
NODE_CLASS = 0x40,
NODE_INTERFACE = 0x80,
NODE_GLOBAL_VARIABLE = 0x100,
NODE_FIELD = 0x200,
NODE_FUNCTION = 0x400,
NODE_METHOD = 0x800,
NODE_ENUM = 0x1000,
NODE_ENUM_CONSTANT = 0x2000,
NODE_TYPEDEF = 0x4000,
NODE_TEMPLATE_PARAMETER_TYPE = 0x8000,
NODE_TYPE_PARAMETER = 0x10000,
NODE_FILE = 0x20000,
NODE_MACRO = 0x40000,
NODE_UNION = 0x80000,
NODE_MAX_VALUE = NODE_UNION
};
NodeType(Type type);
bool operator==(const NodeType& o) const;
Type getType() const;
bool isFile() const;
bool isInheritable() const;
bool isPackage() const;
bool isCallable() const;
bool isUsable() const;
bool isPotentialMember() const;
bool isCollapsible() const;
bool isVisibleAsParentInGraph() const;
int getFontSizeOffset() const;
std::string getUnderscoredTypeString() const;
std::string getReadableTypeString() const;
private:
Type m_type;
};
namespace utility
{
int nodeTypeToInt(NodeType::Type type);
NodeType::Type intToType(int value);
std::string getReadableTypeString(NodeType::Type type);
NodeType::Type getTypeForReadableTypeString(const std::string str);
}
#endif // NODE_TYPE_H
+4 -4
View File
@@ -40,7 +40,7 @@ public:
virtual NameHierarchy getNameHierarchyForNodeId(Id id) const = 0;
virtual std::vector<NameHierarchy> getNameHierarchiesForNodeIds(const std::vector<Id>& nodeIds) const = 0;
virtual Node::NodeType getNodeTypeForNodeWithId(Id id) const = 0;
virtual NodeType getNodeTypeForNodeWithId(Id id) const = 0;
virtual Id getIdForEdge(
Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy) const = 0;
@@ -48,15 +48,15 @@ public:
virtual std::shared_ptr<SourceLocationCollection> getFullTextSearchLocations(
const std::string& searchTerm, bool caseSensitive) const = 0;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, Node::NodeTypeMask filter) const = 0;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, NodeType::TypeMask filter) const = 0;
virtual std::vector<SearchMatch> getSearchMatchesForTokenIds(const std::vector<Id>& tokenIds) const = 0;
virtual std::shared_ptr<Graph> getGraphForAll() const = 0;
virtual std::shared_ptr<Graph> getGraphForFilter(Node::NodeTypeMask filter) const = 0;
virtual std::shared_ptr<Graph> getGraphForFilter(NodeType::TypeMask filter) const = 0;
virtual std::shared_ptr<Graph> getGraphForActiveTokenIds(
const std::vector<Id>& tokenIds, const std::vector<Id>& expandedNodeIds, bool* isActiveNamespace = nullptr) const = 0;
virtual std::shared_ptr<Graph> getGraphForChildrenOfNodeId(Id nodeId) const = 0;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth) const = 0;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::TypeMask trailType, size_t depth) const = 0;
virtual std::vector<Id> getActiveTokenIdsForId(Id tokenId, Id* declarationId) const = 0;
virtual std::vector<Id> getNodeIdsForLocationIds(const std::vector<Id>& locationIds) const = 0;
+5 -5
View File
@@ -84,13 +84,13 @@ std::vector<NameHierarchy> StorageAccessProxy::getNameHierarchiesForNodeIds(cons
return std::vector<NameHierarchy>();
}
Node::NodeType StorageAccessProxy::getNodeTypeForNodeWithId(Id id) const
NodeType StorageAccessProxy::getNodeTypeForNodeWithId(Id id) const
{
if (hasSubject())
{
return m_subject->getNodeTypeForNodeWithId(id);
}
return Node::NODE_NON_INDEXED;
return NodeType::NODE_NON_INDEXED;
}
Id StorageAccessProxy::getIdForEdge(
@@ -125,7 +125,7 @@ std::shared_ptr<SourceLocationCollection> StorageAccessProxy::getFullTextSearchL
return std::make_shared<SourceLocationCollection>();
}
std::vector<SearchMatch> StorageAccessProxy::getAutocompletionMatches(const std::string& query, Node::NodeTypeMask filter) const
std::vector<SearchMatch> StorageAccessProxy::getAutocompletionMatches(const std::string& query, NodeType::TypeMask filter) const
{
if (hasSubject())
{
@@ -155,7 +155,7 @@ std::shared_ptr<Graph> StorageAccessProxy::getGraphForAll() const
return std::make_shared<Graph>();
}
std::shared_ptr<Graph> StorageAccessProxy::getGraphForFilter(Node::NodeTypeMask filter) const
std::shared_ptr<Graph> StorageAccessProxy::getGraphForFilter(NodeType::TypeMask filter) const
{
if (hasSubject())
{
@@ -186,7 +186,7 @@ std::shared_ptr<Graph> StorageAccessProxy::getGraphForChildrenOfNodeId(Id nodeId
return std::make_shared<Graph>();
}
std::shared_ptr<Graph> StorageAccessProxy::getGraphForTrail(Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth) const
std::shared_ptr<Graph> StorageAccessProxy::getGraphForTrail(Id originId, Id targetId, Edge::TypeMask trailType, size_t depth) const
{
if (hasSubject())
{
+4 -4
View File
@@ -25,7 +25,7 @@ public:
virtual NameHierarchy getNameHierarchyForNodeId(Id id) const;
virtual std::vector<NameHierarchy> getNameHierarchiesForNodeIds(const std::vector<Id>& nodeIds) const;
virtual Node::NodeType getNodeTypeForNodeWithId(Id id) const;
virtual NodeType getNodeTypeForNodeWithId(Id id) const;
virtual Id getIdForEdge(
Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy) const;
@@ -33,15 +33,15 @@ public:
virtual std::shared_ptr<SourceLocationCollection> getFullTextSearchLocations(
const std::string& searchTerm, bool caseSensitive) const;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, Node::NodeTypeMask filter) const;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, NodeType::TypeMask filter) const;
virtual std::vector<SearchMatch> getSearchMatchesForTokenIds(const std::vector<Id>& tokenIds) const;
virtual std::shared_ptr<Graph> getGraphForAll() const;
virtual std::shared_ptr<Graph> getGraphForFilter(Node::NodeTypeMask filter) const;
virtual std::shared_ptr<Graph> getGraphForFilter(NodeType::TypeMask filter) const;
virtual std::shared_ptr<Graph> getGraphForActiveTokenIds(
const std::vector<Id>& tokenIds, const std::vector<Id>& expandedNodeIds, bool* isActiveNamespace = nullptr) const;
virtual std::shared_ptr<Graph> getGraphForChildrenOfNodeId(Id nodeId) const;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth) const;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::TypeMask trailType, size_t depth) const;
virtual std::vector<Id> getActiveTokenIdsForId(Id tokenId, Id* declarationId) const;
virtual std::vector<Id> getNodeIdsForLocationIds(const std::vector<Id>& locationIds) const;
+1 -1
View File
@@ -89,7 +89,7 @@ Edge::EdgeType Edge::getType() const
return m_type;
}
bool Edge::isType(EdgeTypeMask mask) const
bool Edge::isType(TypeMask mask) const
{
return (m_type & mask) > 0;
}
+3 -3
View File
@@ -14,8 +14,8 @@ class Edge
: public Token
{
public:
typedef int EdgeTypeMask;
enum EdgeType : EdgeTypeMask
typedef int TypeMask;
enum EdgeType : TypeMask
{
EDGE_UNDEFINED = 0x0,
EDGE_MEMBER = 0x1,
@@ -43,7 +43,7 @@ public:
virtual ~Edge();
EdgeType getType() const;
bool isType(EdgeTypeMask mask) const;
bool isType(TypeMask mask) const;
Node* getFrom() const;
Node* getTo() const;
+1 -1
View File
@@ -41,7 +41,7 @@ void Graph::forEachToken(std::function<void(Token*)> func) const
forEachEdge(func);
}
Node* Graph::createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy, bool defined)
Node* Graph::createNode(Id id, NodeType type, NameHierarchy nameHierarchy, bool defined)
{
Node* n = getNodeById(id);
if (n)
+1 -1
View File
@@ -27,7 +27,7 @@ public:
void forEachEdge(std::function<void(Edge*)> func) const;
void forEachToken(std::function<void(Token*)> func) const;
Node* createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy, bool defined);
Node* createNode(Id id, NodeType type, NameHierarchy nameHierarchy, bool defined);
Edge* createEdge(Id id, Edge::EdgeType type, Node* from, Node* to);
size_t getNodeCount() const;
+9 -162
View File
@@ -11,143 +11,6 @@
#include "data/graph/token_component/TokenComponentStatic.h"
#include "data/graph/token_component/TokenComponentFilePath.h"
const Node::NodeTypeMask Node::NODE_NOT_VISIBLE =
NODE_NAMESPACE | NODE_PACKAGE;
const Node::NodeTypeMask Node::NODE_USEABLE_TYPE =
NODE_NON_INDEXED | NODE_BUILTIN_TYPE | NODE_STRUCT | NODE_CLASS | NODE_ENUM | NODE_UNION | NODE_INTERFACE |
NODE_TYPEDEF;
const Node::NodeTypeMask Node::NODE_INHERITABLE_TYPE =
NODE_NON_INDEXED | NODE_BUILTIN_TYPE | NODE_TYPE | NODE_STRUCT | NODE_CLASS | NODE_INTERFACE;
const Node::NodeTypeMask Node::NODE_MEMBER_TYPE =
NODE_METHOD | NODE_FIELD | NODE_CLASS | NODE_INTERFACE | NODE_STRUCT | NODE_UNION | NODE_TYPEDEF | NODE_ENUM;
const Node::NodeTypeMask Node::NODE_COLLAPSIBLE_TYPE =
NODE_NON_INDEXED | NODE_TYPE | NODE_BUILTIN_TYPE | NODE_CLASS | NODE_STRUCT | NODE_ENUM | NODE_UNION |
NODE_INTERFACE;
std::string Node::getUnderscoredTypeString(NodeType type)
{
return utility::replace(utility::replace(getReadableTypeString(type), "-", "_"), " ", "_");
}
std::string Node::getReadableTypeString(NodeType type)
{
switch (type)
{
case NODE_NON_INDEXED:
return "non-indexed";
case NODE_BUILTIN_TYPE:
return "built-in type";
case NODE_TYPE:
return "type";
case NODE_NAMESPACE:
return "namespace";
case NODE_PACKAGE:
return "package";
case NODE_STRUCT:
return "struct";
case NODE_CLASS:
return "class";
case NODE_INTERFACE:
return "interface";
case NODE_GLOBAL_VARIABLE:
return "global variable";
case NODE_FIELD:
return "field";
case NODE_FUNCTION:
return "function";
case NODE_METHOD:
return "method";
case NODE_ENUM:
return "enum";
case NODE_ENUM_CONSTANT:
return "enum constant";
case NODE_TYPEDEF:
return "typedef";
case NODE_TEMPLATE_PARAMETER_TYPE:
return "template parameter type";
case NODE_TYPE_PARAMETER:
return "type parameter";
case NODE_FILE:
return "file";
case NODE_MACRO:
return "macro";
case NODE_UNION:
return "union";
}
return "";
}
Node::NodeType Node::getTypeForReadableTypeString(const std::string str)
{
for (Node::NodeTypeMask mask = 1; mask <= NODE_MAX_VALUE; mask *= 2)
{
Node::NodeType type = intToType(mask);
if (getReadableTypeString(type) == str)
{
return type;
}
}
return NODE_NON_INDEXED;
}
int Node::typeToInt(NodeType type)
{
return type;
}
Node::NodeType Node::intToType(int value)
{
switch (value)
{
case NODE_TYPE:
return NODE_TYPE;
case NODE_BUILTIN_TYPE:
return NODE_BUILTIN_TYPE;
case NODE_NAMESPACE:
return NODE_NAMESPACE;
case NODE_PACKAGE:
return NODE_PACKAGE;
case NODE_STRUCT:
return NODE_STRUCT;
case NODE_CLASS:
return NODE_CLASS;
case NODE_INTERFACE:
return NODE_INTERFACE;
case NODE_GLOBAL_VARIABLE:
return NODE_GLOBAL_VARIABLE;
case NODE_FIELD:
return NODE_FIELD;
case NODE_FUNCTION:
return NODE_FUNCTION;
case NODE_METHOD:
return NODE_METHOD;
case NODE_ENUM:
return NODE_ENUM;
case NODE_ENUM_CONSTANT:
return NODE_ENUM_CONSTANT;
case NODE_TYPEDEF:
return NODE_TYPEDEF;
case NODE_TEMPLATE_PARAMETER_TYPE:
return NODE_TEMPLATE_PARAMETER_TYPE;
case NODE_TYPE_PARAMETER:
return NODE_TYPE_PARAMETER;
case NODE_FILE:
return NODE_FILE;
case NODE_MACRO:
return NODE_MACRO;
case NODE_UNION:
return NODE_UNION;
}
return NODE_NON_INDEXED;
}
Node::Node(Id id, NodeType type, NameHierarchy nameHierarchy, bool defined)
: Token(id)
, m_type(type)
@@ -174,26 +37,26 @@ Node::~Node()
{
}
Node::NodeType Node::getType() const
NodeType Node::getType() const
{
return m_type;
}
void Node::setType(NodeType type)
{
if (!isType(type | NODE_NON_INDEXED))
if (!isType(type.getType() | NodeType::NODE_NON_INDEXED))
{
LOG_WARNING(
"Cannot change NodeType after it was already set from " + getReadableTypeString() + " to " + getReadableTypeString(type)
"Cannot change NodeType after it was already set from " + getReadableTypeString() + " to " + type.getReadableTypeString()
);
return;
}
m_type = type;
}
bool Node::isType(NodeTypeMask mask) const
bool Node::isType(NodeType::TypeMask mask) const
{
return (m_type & mask) > 0;
return (m_type.getType() & mask) > 0;
}
std::string Node::getName() const
@@ -317,12 +180,12 @@ Edge* Node::findEdge(std::function<bool(Edge*)> func) const
return nullptr;
}
Edge* Node::findEdgeOfType(Edge::EdgeTypeMask mask) const
Edge* Node::findEdgeOfType(Edge::TypeMask mask) const
{
return findEdgeOfType(mask, [](Edge* e){ return true; });
}
Edge* Node::findEdgeOfType(Edge::EdgeTypeMask mask, std::function<bool(Edge*)> func) const
Edge* Node::findEdgeOfType(Edge::TypeMask mask, std::function<bool(Edge*)> func) const
{
auto it = find_if(m_edges.begin(), m_edges.end(),
[mask, func](std::pair<Id, Edge*> p)
@@ -374,7 +237,7 @@ void Node::forEachEdge(std::function<void(Edge*)> func) const
);
}
void Node::forEachEdgeOfType(Edge::EdgeTypeMask mask, std::function<void(Edge*)> func) const
void Node::forEachEdgeOfType(Edge::TypeMask mask, std::function<void(Edge*)> func) const
{
for_each(m_edges.begin(), m_edges.end(),
[mask, func](std::pair<Id, Edge*> p)
@@ -432,10 +295,6 @@ void Node::addComponentAbstraction(std::shared_ptr<TokenComponentAbstraction> co
// LOG_ERROR("TokenComponentAbstraction has been set before!");
return;
}
else if (!isType(NODE_METHOD))
{
LOG_ERROR("TokenComponentAbstraction can't be set on node of type: " + getReadableTypeString());
}
else
{
addComponent(component);
@@ -449,10 +308,6 @@ void Node::addComponentConst(std::shared_ptr<TokenComponentConst> component)
// LOG_ERROR("TokenComponentConst has been set before!");
return;
}
else if (!isType(NODE_METHOD))
{
LOG_ERROR("TokenComponentConst can't be set on node of type: " + getReadableTypeString());
}
else
{
addComponent(component);
@@ -466,10 +321,6 @@ void Node::addComponentStatic(std::shared_ptr<TokenComponentStatic> component)
// LOG_ERROR("TokenComponentStatic has been set before!");
return;
}
else if (!isType(NODE_GLOBAL_VARIABLE | NODE_FIELD | NODE_FUNCTION | NODE_METHOD))
{
LOG_ERROR("TokenComponentStatic can't be set on node of type: " + getReadableTypeString());
}
else
{
addComponent(component);
@@ -483,10 +334,6 @@ void Node::addComponentFilePath(std::shared_ptr<TokenComponentFilePath> componen
// LOG_ERROR("TokenComponentFilePath has been set before!");
return;
}
else if (!isType(NODE_FILE))
{
LOG_ERROR("TokenComponentFilePath can't be set on node of type: " + getReadableTypeString());
}
else
{
addComponent(component);
@@ -508,7 +355,7 @@ void Node::addComponentAccess(std::shared_ptr<TokenComponentAccess> component)
std::string Node::getReadableTypeString() const
{
return getReadableTypeString(m_type);
return m_type.getReadableTypeString();
}
std::string Node::getAsString() const
+5 -48
View File
@@ -9,6 +9,7 @@
#include "data/graph/Edge.h"
#include "data/graph/Token.h"
#include "data/name/NameHierarchy.h"
#include "data/NodeType.h"
class TokenComponentAbstraction;
class TokenComponentAccess;
@@ -21,56 +22,13 @@ class Node
: public Token
{
public:
typedef int NodeTypeMask;
enum NodeType : NodeTypeMask
{ // make sure that the value of 0x0 is not used here because it doesn't work for bitmasking.
NODE_NON_INDEXED = 0x1,
NODE_TYPE = 0x2,
NODE_BUILTIN_TYPE = 0x4,
NODE_NAMESPACE = 0x8,
NODE_PACKAGE = 0x10,
NODE_STRUCT = 0x20,
NODE_CLASS = 0x40,
NODE_INTERFACE = 0x80,
NODE_GLOBAL_VARIABLE = 0x100,
NODE_FIELD = 0x200,
NODE_FUNCTION = 0x400,
NODE_METHOD = 0x800,
NODE_ENUM = 0x1000,
NODE_ENUM_CONSTANT = 0x2000,
NODE_TYPEDEF = 0x4000,
NODE_TEMPLATE_PARAMETER_TYPE = 0x8000,
NODE_TYPE_PARAMETER = 0x10000,
NODE_FILE = 0x20000,
NODE_MACRO = 0x40000,
NODE_UNION = 0x80000,
NODE_MAX_VALUE = NODE_UNION
};
static std::string getUnderscoredTypeString(NodeType type);
static std::string getReadableTypeString(NodeType type);
static Node::NodeType getTypeForReadableTypeString(const std::string str);
static int typeToInt(NodeType type);
static NodeType intToType(int value);
static const NodeTypeMask NODE_NOT_VISIBLE;
static const NodeTypeMask NODE_USEABLE_TYPE;
static const NodeTypeMask NODE_INHERITABLE_TYPE;
static const NodeTypeMask NODE_MEMBER_TYPE;
static const NodeTypeMask NODE_COLLAPSIBLE_TYPE;
Node(Id id, NodeType type, NameHierarchy nameHierarchy, bool defined);
Node(const Node& other);
virtual ~Node();
NodeType getType() const;
void setType(NodeType type);
bool isType(NodeTypeMask mask) const;
bool isType(NodeType::TypeMask mask) const;
std::string getName() const;
std::string getFullName() const;
@@ -98,12 +56,12 @@ public:
Edge* getMemberEdge() const;
Edge* findEdge(std::function<bool(Edge*)> func) const;
Edge* findEdgeOfType(Edge::EdgeTypeMask mask) const;
Edge* findEdgeOfType(Edge::EdgeTypeMask mask, std::function<bool(Edge*)> func) const;
Edge* findEdgeOfType(Edge::TypeMask mask) const;
Edge* findEdgeOfType(Edge::TypeMask mask, std::function<bool(Edge*)> func) const;
Node* findChildNode(std::function<bool(Node*)> func) const;
void forEachEdge(std::function<void(Edge*)> func) const;
void forEachEdgeOfType(Edge::EdgeTypeMask mask, std::function<void(Edge*)> func) const;
void forEachEdgeOfType(Edge::TypeMask mask, std::function<void(Edge*)> func) const;
void forEachChildNode(std::function<void(Node*)> func) const;
void forEachNodeRecursive(std::function<void(const Node*)> func) const;
@@ -116,7 +74,6 @@ public:
void addComponentConst(std::shared_ptr<TokenComponentConst> component);
void addComponentStatic(std::shared_ptr<TokenComponentStatic> component);
void addComponentFilePath(std::shared_ptr<TokenComponentFilePath> component);
void addComponentSignature(std::shared_ptr<TokenComponentSignature> component);
void addComponentAccess(std::shared_ptr<TokenComponentAccess> component);
// Logging.
+27 -27
View File
@@ -69,7 +69,7 @@ void ParserClientImpl::recordReference(
void ParserClientImpl::recordQualifierLocation(const NameHierarchy& qualifierName, const ParseLocation& location)
{
Id nodeId = addNodeHierarchy(qualifierName, Node::NODE_NON_INDEXED);
Id nodeId = addNodeHierarchy(qualifierName, NodeType::NODE_NON_INDEXED);
addSourceLocation(nodeId, location, locationTypeToInt(LOCATION_QUALIFIER));
}
@@ -81,7 +81,7 @@ void ParserClientImpl::recordLocalSymbol(const std::string& name, const ParseLoc
void ParserClientImpl::recordFile(const FileInfo& fileInfo)
{
const Id nodeId = addNodeHierarchy(NameHierarchy(fileInfo.path.str(), NAME_DELIMITER_FILE), Node::NODE_FILE);
const Id nodeId = addNodeHierarchy(NameHierarchy(fileInfo.path.str(), NAME_DELIMITER_FILE), NodeType::NODE_FILE);
addFile(nodeId, fileInfo.path, fileInfo.lastWriteTime.toString());
}
@@ -99,48 +99,48 @@ void ParserClientImpl::doRecordError(
}
}
Node::NodeType ParserClientImpl::symbolKindToNodeType(SymbolKind symbolKind) const
NodeType ParserClientImpl::symbolKindToNodeType(SymbolKind symbolKind) const
{
switch (symbolKind)
{
case SYMBOL_BUILTIN_TYPE:
return Node::NODE_BUILTIN_TYPE;
return NodeType::NODE_BUILTIN_TYPE;
case SYMBOL_CLASS:
return Node::NODE_CLASS;
return NodeType::NODE_CLASS;
case SYMBOL_ENUM:
return Node::NODE_ENUM;
return NodeType::NODE_ENUM;
case SYMBOL_ENUM_CONSTANT:
return Node::NODE_ENUM_CONSTANT;
return NodeType::NODE_ENUM_CONSTANT;
case SYMBOL_FIELD:
return Node::NODE_FIELD;
return NodeType::NODE_FIELD;
case SYMBOL_FUNCTION:
return Node::NODE_FUNCTION;
return NodeType::NODE_FUNCTION;
case SYMBOL_GLOBAL_VARIABLE:
return Node::NODE_GLOBAL_VARIABLE;
return NodeType::NODE_GLOBAL_VARIABLE;
case SYMBOL_INTERFACE:
return Node::NODE_INTERFACE;
return NodeType::NODE_INTERFACE;
case SYMBOL_MACRO:
return Node::NODE_MACRO;
return NodeType::NODE_MACRO;
case SYMBOL_METHOD:
return Node::NODE_METHOD;
return NodeType::NODE_METHOD;
case SYMBOL_NAMESPACE:
return Node::NODE_NAMESPACE;
return NodeType::NODE_NAMESPACE;
case SYMBOL_PACKAGE:
return Node::NODE_PACKAGE;
return NodeType::NODE_PACKAGE;
case SYMBOL_STRUCT:
return Node::NODE_STRUCT;
return NodeType::NODE_STRUCT;
case SYMBOL_TEMPLATE_PARAMETER:
return Node::NODE_TEMPLATE_PARAMETER_TYPE;
return NodeType::NODE_TEMPLATE_PARAMETER_TYPE;
case SYMBOL_TYPEDEF:
return Node::NODE_TYPEDEF;
return NodeType::NODE_TYPEDEF;
case SYMBOL_TYPE_PARAMETER:
return Node::NODE_TYPE_PARAMETER;
return NodeType::NODE_TYPE_PARAMETER;
case SYMBOL_UNION:
return Node::NODE_UNION;
return NodeType::NODE_UNION;
default:
break;
}
return Node::NODE_NON_INDEXED;
return NodeType::NODE_NON_INDEXED;
}
Edge::EdgeType ParserClientImpl::referenceKindToEdgeType(ReferenceKind referenceKind) const
@@ -187,7 +187,7 @@ void ParserClientImpl::addAccess(Id nodeId, AccessKind access)
}
}
Id ParserClientImpl::addNodeHierarchy(NameHierarchy nameHierarchy, Node::NodeType nodeType)
Id ParserClientImpl::addNodeHierarchy(NameHierarchy nameHierarchy, NodeType nodeType)
{
if (nameHierarchy.size() == 0)
{
@@ -201,7 +201,7 @@ Id ParserClientImpl::addNodeHierarchy(NameHierarchy nameHierarchy, Node::NodeTyp
{
currentNameHierarchy.push(nameHierarchy[i]);
const bool currentIsLastElement = (i == nameHierarchy.size() - 1);
const Node::NodeType currentType = (currentIsLastElement ? nodeType : Node::NODE_NON_INDEXED); // TODO: rename to unknown!
const NodeType currentType = (currentIsLastElement ? nodeType : NodeType::NODE_NON_INDEXED); // TODO: rename to unknown!
Id nodeId = addNode(currentType, currentNameHierarchy);
@@ -215,14 +215,14 @@ Id ParserClientImpl::addNodeHierarchy(NameHierarchy nameHierarchy, Node::NodeTyp
return parentNodeId;
}
Id ParserClientImpl::addNode(Node::NodeType nodeType, NameHierarchy nameHierarchy)
Id ParserClientImpl::addNode(NodeType nodeType, NameHierarchy nameHierarchy)
{
if (!m_storage)
{
return 0;
}
return m_storage->addNode(StorageNodeData(Node::typeToInt(nodeType), NameHierarchy::serialize(nameHierarchy)));
return m_storage->addNode(StorageNodeData(utility::nodeTypeToInt(nodeType.getType()), NameHierarchy::serialize(nameHierarchy)));
}
void ParserClientImpl::addFile(Id id, const FilePath& filePath, const std::string& modificationTime)
@@ -292,7 +292,7 @@ void ParserClientImpl::addSourceLocation(Id elementId, const ParseLocation& loca
}
Id sourceLocationId = m_storage->addSourceLocation(StorageSourceLocationData(
addNodeHierarchy(NameHierarchy(location.filePath.str(), NAME_DELIMITER_FILE), Node::NODE_FILE),
addNodeHierarchy(NameHierarchy(location.filePath.str(), NAME_DELIMITER_FILE), NodeType::NODE_FILE),
location.startLineNumber,
location.startColumnNumber,
location.endLineNumber,
@@ -324,7 +324,7 @@ void ParserClientImpl::addCommentLocation(const ParseLocation& location)
}
m_storage->addCommentLocation(StorageCommentLocationData(
addNodeHierarchy(NameHierarchy(location.filePath.str(), NAME_DELIMITER_FILE), Node::NODE_FILE),
addNodeHierarchy(NameHierarchy(location.filePath.str(), NAME_DELIMITER_FILE), NodeType::NODE_FILE),
location.startLineNumber,
location.startColumnNumber,
location.endLineNumber,
+3 -3
View File
@@ -47,12 +47,12 @@ private:
virtual void doRecordError(const ParseLocation& location, const std::string& message, const std::string& commandline,
bool fatal, bool indexed) override;
Node::NodeType symbolKindToNodeType(SymbolKind symbolType) const;
NodeType symbolKindToNodeType(SymbolKind symbolType) const;
Edge::EdgeType referenceKindToEdgeType(ReferenceKind referenceKind) const;
void addAccess(Id nodeId, AccessKind access);
Id addNodeHierarchy(NameHierarchy nameHierarchy, Node::NodeType nodeType = Node::NODE_NON_INDEXED);
Id addNodeHierarchy(NameHierarchy nameHierarchy, NodeType nodeType = NodeType::NODE_NON_INDEXED);
Id addNode(Node::NodeType nodeType, NameHierarchy nameHierarchy);
Id addNode(NodeType nodeType, NameHierarchy nameHierarchy);
void addFile(Id id, const FilePath& filePath, const std::string& modificationTime);
void addSymbol(Id id, DefinitionKind definitionKind);
Id addEdge(int type, Id sourceId, Id targetId);
+4 -4
View File
@@ -16,7 +16,7 @@ SearchIndex::~SearchIndex()
{
}
void SearchIndex::addNode(Id id, const std::string& name, Node::NodeTypeMask type)
void SearchIndex::addNode(Id id, const std::string& name, NodeType::TypeMask type)
{
SearchNode* currentNode = m_root;
@@ -100,7 +100,7 @@ void SearchIndex::clear()
}
std::vector<SearchResult> SearchIndex::search(
const std::string& query, Node::NodeTypeMask filter, size_t maxResultCount, size_t maxBestScoredResultsLength) const
const std::string& query, NodeType::TypeMask filter, size_t maxResultCount, size_t maxBestScoredResultsLength) const
{
// find paths containing query
SearchPath startPath;
@@ -147,7 +147,7 @@ void SearchIndex::populateEdgeGate(SearchEdge* e)
}
void SearchIndex::searchRecursive(
const SearchPath& path, const std::string& remainingQuery, Node::NodeTypeMask filter,
const SearchPath& path, const std::string& remainingQuery, NodeType::TypeMask filter,
std::vector<SearchIndex::SearchPath>* results) const
{
if (remainingQuery.size() == 0 && (!filter || (path.node->mask & filter)))
@@ -197,7 +197,7 @@ void SearchIndex::searchRecursive(
}
std::multiset<SearchResult> SearchIndex::createScoredResults(
const std::vector<SearchPath>& paths, Node::NodeTypeMask filter, size_t maxResultCount) const
const std::vector<SearchPath>& paths, NodeType::TypeMask filter, size_t maxResultCount) const
{
// score and order initial paths
std::multimap<int, SearchPath, std::greater<int>> scoredPaths;
+5 -5
View File
@@ -30,13 +30,13 @@ public:
SearchIndex();
virtual ~SearchIndex();
void addNode(Id id, const std::string& name, Node::NodeTypeMask type = 0);
void addNode(Id id, const std::string& name, NodeType::TypeMask type = 0);
void finishSetup();
void clear();
// maxResultCount == 0 means "no restriction".
std::vector<SearchResult> search(
const std::string& query, Node::NodeTypeMask filter, size_t maxResultCount, size_t maxBestScoredResultsLength = 0) const;
const std::string& query, NodeType::TypeMask filter, size_t maxResultCount, size_t maxBestScoredResultsLength = 0) const;
private:
struct SearchEdge;
@@ -44,7 +44,7 @@ private:
struct SearchNode
{
std::set<Id> elementIds;
Node::NodeTypeMask mask = 0;
NodeType::TypeMask mask = 0;
std::map<char, SearchEdge*> edges;
};
@@ -63,11 +63,11 @@ private:
};
void populateEdgeGate(SearchEdge* e);
void searchRecursive(const SearchPath& path, const std::string& remainingQuery, Node::NodeTypeMask filter,
void searchRecursive(const SearchPath& path, const std::string& remainingQuery, NodeType::TypeMask filter,
std::vector<SearchIndex::SearchPath>* results) const;
std::multiset<SearchResult> createScoredResults(
const std::vector<SearchPath>& paths, Node::NodeTypeMask filter, size_t maxResultCount) const;
const std::vector<SearchPath>& paths, NodeType::TypeMask filter, size_t maxResultCount) const;
static SearchResult bestScoredResult(
SearchResult result, std::map<std::string, SearchResult>* scoresCache, size_t maxBestScoredResultsLength);
+8 -8
View File
@@ -56,20 +56,20 @@ SearchMatch SearchMatch::createCommand(CommandType type)
return match;
}
std::vector<SearchMatch> SearchMatch::createCommandsForFilter(Node::NodeTypeMask filter)
std::vector<SearchMatch> SearchMatch::createCommandsForFilter(NodeType::TypeMask filter)
{
std::vector<SearchMatch> matches;
for (Node::NodeTypeMask type = 1; type <= filter; type *= 2)
for (NodeType::TypeMask type = 1; type <= filter; type *= 2)
{
if (type & filter)
{
SearchMatch match;
match.name = Node::getReadableTypeString(Node::intToType(type));
match.name = NodeType(utility::intToType(type)).getReadableTypeString();
match.text = match.name;
match.typeName = "filter";
match.searchType = SEARCH_COMMAND;
match.nodeType = Node::intToType(type);
match.nodeType = NodeType(utility::intToType(type));
matches.push_back(match);
}
}
@@ -96,7 +96,7 @@ std::string SearchMatch::getCommandName(CommandType type)
SearchMatch::SearchMatch()
: typeName("")
, nodeType(Node::NODE_NON_INDEXED)
, nodeType(NodeType::NODE_NON_INDEXED)
, searchType(SEARCH_NONE)
, hasChildren(false)
{
@@ -106,7 +106,7 @@ SearchMatch::SearchMatch(const std::string& query)
: name(query)
, text(query)
, typeName("")
, nodeType(Node::NODE_NON_INDEXED)
, nodeType(NodeType::NODE_NON_INDEXED)
, searchType(SEARCH_NONE)
, hasChildren(false)
{
@@ -224,7 +224,7 @@ void SearchMatch::print(std::ostream& ostream) const
std::string SearchMatch::getFullName() const
{
if (searchType == SEARCH_TOKEN && nodeType == Node::NODE_FILE)
if (searchType == SEARCH_TOKEN && nodeType.getType() == NodeType::NODE_FILE)
{
return text;
}
@@ -234,7 +234,7 @@ std::string SearchMatch::getFullName() const
std::string SearchMatch::getNodeTypeAsUnderscoredString() const
{
return Node::getUnderscoredTypeString(nodeType);
return nodeType.getUnderscoredTypeString();
}
std::string SearchMatch::getSearchTypeName() const
+2 -2
View File
@@ -34,7 +34,7 @@ struct SearchMatch
static std::string searchMatchesToString(const std::vector<SearchMatch>& matches);
static SearchMatch createCommand(CommandType type);
static std::vector<SearchMatch> createCommandsForFilter(Node::NodeTypeMask filter);
static std::vector<SearchMatch> createCommandsForFilter(NodeType::TypeMask filter);
static std::string getCommandName(CommandType type);
static const char FULLTEXT_SEARCH_CHARACTER = '?';
@@ -67,7 +67,7 @@ struct SearchMatch
std::string typeName;
Node::NodeType nodeType;
NodeType nodeType;
SearchType searchType;
std::vector<size_t> indices;
+73 -66
View File
@@ -32,26 +32,26 @@ PersistentStorage::PersistentStorage(const FilePath& dbPath, const FilePath& boo
m_commandIndex.addNode(0, SearchMatch::getCommandName(SearchMatch::COMMAND_ALL));
m_commandIndex.addNode(0, SearchMatch::getCommandName(SearchMatch::COMMAND_ERROR));
// m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_NON_INDEXED));
// m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_TYPE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_BUILTIN_TYPE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_NAMESPACE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_PACKAGE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_STRUCT));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_CLASS));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_INTERFACE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_GLOBAL_VARIABLE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_FIELD));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_FUNCTION));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_METHOD));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_ENUM));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_ENUM_CONSTANT));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_TYPEDEF));
// m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_TEMPLATE_PARAMETER_TYPE));
// m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_TYPE_PARAMETER));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_FILE));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_MACRO));
m_commandIndex.addNode(0, Node::getReadableTypeString(Node::NODE_UNION));
// m_commandIndex.addNode(0, NodeType(NodeType::NODE_NON_INDEXED).getReadableTypeString());
// m_commandIndex.addNode(0, NodeType(NodeType::NODE_TYPE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_BUILTIN_TYPE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_NAMESPACE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_PACKAGE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_STRUCT).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_CLASS).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_INTERFACE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_GLOBAL_VARIABLE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_FIELD).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_FUNCTION).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_METHOD).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_ENUM).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_ENUM_CONSTANT).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_TYPEDEF).getReadableTypeString());
// m_commandIndex.addNode(0, NodeType(NodeType::NODE_TEMPLATE_PARAMETER_TYPE).getReadableTypeString());
// m_commandIndex.addNode(0, NodeType(NodeType::NODE_TYPE_PARAMETER).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_FILE).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_MACRO).getReadableTypeString());
m_commandIndex.addNode(0, NodeType(NodeType::NODE_UNION).getReadableTypeString());
// m_commandIndex.addNode(0, SearchMatch::getCommandName(SearchMatch::COMMAND_COLOR_SCHEME_TEST));
@@ -440,9 +440,9 @@ std::vector<NameHierarchy> PersistentStorage::getNameHierarchiesForNodeIds(const
return nameHierarchies;
}
Node::NodeType PersistentStorage::getNodeTypeForNodeWithId(Id nodeId) const
NodeType PersistentStorage::getNodeTypeForNodeWithId(Id nodeId) const
{
return Node::intToType(m_sqliteIndexStorage.getFirstById<StorageNode>(nodeId).type);
return utility::intToType(m_sqliteIndexStorage.getFirstById<StorageNode>(nodeId).type);
}
Id PersistentStorage::getIdForEdge(
@@ -558,7 +558,7 @@ std::shared_ptr<SourceLocationCollection> PersistentStorage::getFullTextSearchLo
return collection;
}
std::vector<SearchMatch> PersistentStorage::getAutocompletionMatches(const std::string& query, Node::NodeTypeMask filter) const
std::vector<SearchMatch> PersistentStorage::getAutocompletionMatches(const std::string& query, NodeType::TypeMask filter) const
{
TRACE();
@@ -569,12 +569,12 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionMatches(const std::
// create SearchMatches
std::vector<SearchMatch> matches;
if (!filter || (filter & ~Node::NODE_FILE))
if (!filter || (filter & ~NodeType::NODE_FILE))
{
utility::append(matches, getAutocompletionSymbolMatches(query, filter, maxResultsCount, maxBestScoredResultsLength));
}
if (!filter || (filter & Node::NODE_FILE))
if (!filter || (filter & NodeType::NODE_FILE))
{
utility::append(matches, getAutocompletionFileMatches(query, maxResultsCount));
}
@@ -606,7 +606,7 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionMatches(const std::
}
std::vector<SearchMatch> PersistentStorage::getAutocompletionSymbolMatches(
const std::string& query, Node::NodeTypeMask filter, size_t maxResultsCount, size_t maxBestScoredResultsLength) const
const std::string& query, NodeType::TypeMask filter, size_t maxResultsCount, size_t maxBestScoredResultsLength) const
{
// search in indices
std::vector<SearchResult> results =
@@ -674,12 +674,12 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionSymbolMatches(
match.indices = result.indices;
match.score = result.score;
match.nodeType = Node::intToType(firstNode->type);
match.typeName = Node::getReadableTypeString(match.nodeType);
match.nodeType = utility::intToType(firstNode->type);
match.typeName = match.nodeType.getReadableTypeString();
match.searchType = SearchMatch::SEARCH_TOKEN;
if (storageSymbolMap.find(firstNode->id) == storageSymbolMap.end() &&
match.nodeType != Node::NODE_NON_INDEXED)
match.nodeType.getType() != NodeType::NODE_NON_INDEXED)
{
match.typeName = "non-indexed " + match.typeName;
}
@@ -692,7 +692,7 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionSymbolMatches(
std::vector<SearchMatch> PersistentStorage::getAutocompletionFileMatches(const std::string& query, size_t maxResultsCount) const
{
std::vector<SearchResult> results = m_fileIndex.search(query, Node::NODE_FILE, maxResultsCount, 100);
std::vector<SearchResult> results = m_fileIndex.search(query, NodeType::NODE_FILE, maxResultsCount, 100);
// create SearchMatches
std::vector<SearchMatch> matches;
@@ -712,8 +712,8 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionFileMatches(const s
match.indices = result.indices;
match.score = result.score;
match.nodeType = Node::NODE_FILE;
match.typeName = Node::getReadableTypeString(match.nodeType);
match.nodeType = NodeType::NODE_FILE;
match.typeName = match.nodeType.getReadableTypeString();
match.searchType = SearchMatch::SEARCH_TOKEN;
@@ -724,7 +724,7 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionFileMatches(const s
}
std::vector<SearchMatch> PersistentStorage::getAutocompletionCommandMatches(
const std::string& query, Node::NodeTypeMask filter) const
const std::string& query, NodeType::TypeMask filter) const
{
// search in indices
std::vector<SearchResult> results = m_commandIndex.search(query, 0, 0);
@@ -748,11 +748,11 @@ std::vector<SearchMatch> PersistentStorage::getAutocompletionCommandMatches(
if (match.getCommandType() == SearchMatch::COMMAND_NODE_FILTER)
{
match.nodeType = Node::getTypeForReadableTypeString(match.name);
match.nodeType = utility::getTypeForReadableTypeString(match.name);
match.typeName = "filter";
}
if (!filter || (match.getCommandType() == SearchMatch::COMMAND_NODE_FILTER && !(filter & match.nodeType)))
if (!filter || (match.getCommandType() == SearchMatch::COMMAND_NODE_FILTER && !(filter & match.nodeType.getType())))
{
matches.push_back(match);
}
@@ -791,12 +791,12 @@ std::vector<SearchMatch> PersistentStorage::getSearchMatchesForTokenIds(const st
match.text = nameHierarchy.getRawName();
match.tokenIds.push_back(elementId);
match.nodeType = Node::intToType(node.type);
match.nodeType = utility::intToType(node.type);
match.searchType = SearchMatch::SEARCH_TOKEN;
match.delimiter = nameHierarchy.getDelimiter();
if (match.nodeType == Node::NODE_FILE)
if (match.nodeType.getType() == NodeType::NODE_FILE)
{
match.text = FilePath(match.text).fileName();
}
@@ -819,7 +819,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForAll() const
auto it = m_symbolDefinitionKinds.find(node.id);
if (it != m_symbolDefinitionKinds.end() && it->second == DEFINITION_EXPLICIT &&
(
Node::intToType(node.type) & (Node::NODE_NAMESPACE | Node::NODE_PACKAGE) ||
utility::intToType(node.type) & (NodeType::NODE_NAMESPACE | NodeType::NODE_PACKAGE) ||
!m_hierarchyCache.isChildOfVisibleNodeOrInvisible(node.id)
)
){
@@ -837,7 +837,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForAll() const
return graph;
}
std::shared_ptr<Graph> PersistentStorage::getGraphForFilter(Node::NodeTypeMask filter) const
std::shared_ptr<Graph> PersistentStorage::getGraphForFilter(NodeType::TypeMask filter) const
{
TRACE();
@@ -846,7 +846,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForFilter(Node::NodeTypeMask f
std::vector<Id> tokenIds;
for (StorageNode& node: m_sqliteIndexStorage.getAll<StorageNode>())
{
if ((filter & Node::intToType(node.type)))
if ((filter & utility::intToType(node.type)))
{
auto it = m_symbolDefinitionKinds.find(node.id);
if (it != m_symbolDefinitionKinds.end() && it->second == DEFINITION_EXPLICIT)
@@ -856,7 +856,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForFilter(Node::NodeTypeMask f
}
}
if (!filter || (filter & Node::NODE_FILE))
if (!filter || (filter & NodeType::NODE_FILE))
{
for (const auto& p : m_fileNodePaths)
{
@@ -890,8 +890,8 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForActiveTokenIds(
if (node.id > 0)
{
Node::NodeType nodeType = Node::intToType(node.type);
if (nodeType & (Node::NODE_NAMESPACE | Node::NODE_PACKAGE))
NodeType nodeType = utility::intToType(node.type);
if (nodeType.getType() & (NodeType::NODE_NAMESPACE | NodeType::NODE_PACKAGE))
{
ids.clear();
m_hierarchyCache.addFirstChildIdsForNodeId(elementId, &ids, &edgeIds);
@@ -904,7 +904,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForActiveTokenIds(
m_hierarchyCache.addFirstChildIdsForNodeId(elementId, &nodeIds, &edgeIds);
// don't expand active node if it has more than 20 child nodes
if (nodeIds.size() > 20 && nodeType & Node::NODE_COLLAPSIBLE_TYPE)
if (nodeIds.size() > 20 && nodeType.isCollapsible())
{
nodeIds.clear();
}
@@ -921,7 +921,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForActiveTokenIds(
continue;
}
if ((nodeType & Node::NODE_USEABLE_TYPE) && (edgeType & Edge::EDGE_TYPE_USAGE) &&
if (nodeType.isUsable() && (edgeType & Edge::EDGE_TYPE_USAGE) &&
m_hierarchyCache.isChildOfVisibleNodeOrInvisible(edge.sourceNodeId) &&
(m_hierarchyCache.getLastVisibleParentNodeId(edge.targetNodeId) !=
m_hierarchyCache.getLastVisibleParentNodeId(edge.sourceNodeId)))
@@ -1046,7 +1046,7 @@ std::shared_ptr<Graph> PersistentStorage::getGraphForChildrenOfNodeId(Id nodeId)
}
std::shared_ptr<Graph> PersistentStorage::getGraphForTrail(
Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth) const
Id originId, Id targetId, Edge::TypeMask trailType, size_t depth) const
{
TRACE();
@@ -1212,7 +1212,7 @@ std::shared_ptr<SourceLocationCollection> PersistentStorage::getSourceLocationsF
if (path.empty() && m_symbolDefinitionKinds.find(tokenId) == m_symbolDefinitionKinds.end())
{
StorageNode fileNode = m_sqliteIndexStorage.getNodeById(tokenId);
if (Node::intToType(fileNode.type) == Node::NODE_FILE)
if (utility::intToType(fileNode.type) == NodeType::NODE_FILE)
{
path = FilePath(NameHierarchy::deserialize(fileNode.serializedName).getQualifiedName());
}
@@ -1705,8 +1705,8 @@ TooltipInfo PersistentStorage::getTooltipInfoForTokenIds(const std::vector<Id>&
return info;
}
Node::NodeType type = Node::intToType(node.type);
info.title = Node::getReadableTypeString(type);
NodeType type = utility::intToType(node.type);
info.title = type.getReadableTypeString();
DefinitionKind defKind = DEFINITION_NONE;
StorageSymbol symbol = m_sqliteIndexStorage.getFirstById<StorageSymbol>(node.id);
@@ -1715,7 +1715,7 @@ TooltipInfo PersistentStorage::getTooltipInfoForTokenIds(const std::vector<Id>&
defKind = intToDefinitionKind(symbol.definitionKind);
}
if (type & Node::NODE_MEMBER_TYPE)
if (type.isPotentialMember())
{
StorageComponentAccess access = m_sqliteIndexStorage.getComponentAccessByNodeId(node.id);
if (access.nodeId != 0)
@@ -1724,7 +1724,7 @@ TooltipInfo PersistentStorage::getTooltipInfoForTokenIds(const std::vector<Id>&
}
}
if (type == Node::NODE_FILE && m_fileNodePaths.find(node.id) != m_fileNodePaths.end())
if (type.getType() == NodeType::NODE_FILE && m_fileNodePaths.find(node.id) != m_fileNodePaths.end())
{
bool complete = false;
auto it = m_fileNodeComplete.find(node.id);
@@ -1738,7 +1738,7 @@ TooltipInfo PersistentStorage::getTooltipInfoForTokenIds(const std::vector<Id>&
info.title = "incomplete " + info.title;
}
}
else if (defKind == DEFINITION_NONE && type != Node::NODE_NON_INDEXED)
else if (defKind == DEFINITION_NONE && type.getType() != NodeType::NODE_NON_INDEXED)
{
info.title = "non-indexed " + info.title;
}
@@ -1781,7 +1781,7 @@ TooltipSnippet PersistentStorage::getTooltipSnippetForNode(const StorageNode& no
snippet.locationFile = std::make_shared<SourceLocationFile>(
FilePath(nameHierarchy.getDelimiter() == NAME_DELIMITER_JAVA ? "main.java" : "main.cpp"), true, true);
if (Node::intToType(node.type) & (Node::NODE_FUNCTION | Node::NODE_METHOD | Node::NODE_FIELD | Node::NODE_GLOBAL_VARIABLE))
if (utility::intToType(node.type) & (NodeType::NODE_FUNCTION | NodeType::NODE_METHOD | NodeType::NODE_FIELD | NodeType::NODE_GLOBAL_VARIABLE))
{
snippet.code = utility::breakSignature(
nameHierarchy.getSignature().getPrefix(),
@@ -1892,7 +1892,7 @@ TooltipInfo PersistentStorage::getTooltipInfoForSourceLocationIdsAndLocalSymbolI
snippet.locationFile->addSourceLocation(
LOCATION_TOKEN, 0, std::vector<Id>(1, node.id), 1, 1, 1, snippet.code.size());
if (Node::intToType(node.type) & (Node::NODE_METHOD | Node::NODE_FUNCTION))
if (utility::intToType(node.type) & (NodeType::NODE_METHOD | NodeType::NODE_FUNCTION))
{
snippet.code += "()";
}
@@ -2170,8 +2170,8 @@ void PersistentStorage::addNodesToGraph(const std::vector<Id>& newNodeIds, Graph
for (const StorageNode& storageNode : m_sqliteIndexStorage.getAllByIds<StorageNode>(nodeIds))
{
const Node::NodeType type = Node::intToType(storageNode.type);
if (type == Node::NODE_FILE)
const NodeType type(utility::intToType(storageNode.type));
if (type.getType() == NodeType::NODE_FILE)
{
const FilePath filePath(NameHierarchy::deserialize(storageNode.serializedName).getRawName());
@@ -2184,7 +2184,7 @@ void PersistentStorage::addNodesToGraph(const std::vector<Id>& newNodeIds, Graph
Node* node = graph->createNode(
storageNode.id,
Node::NODE_FILE,
type,
NameHierarchy(filePath.fileName(), NAME_DELIMITER_FILE),
defined
);
@@ -2452,7 +2452,7 @@ void PersistentStorage::addInheritanceChainsToGraph(const std::vector<Id>& activ
for (Id nodeId : visibleParentIds)
{
Node* node = graph->getNodeById(nodeId);
if (node && node->isType(Node::NODE_INHERITABLE_TYPE))
if (node && node->getType().isInheritable())
{
activeNodeIdsSet.insert(node->getId());
}
@@ -2463,7 +2463,7 @@ void PersistentStorage::addInheritanceChainsToGraph(const std::vector<Id>& activ
graph->forEachNode(
[&nodeIdsSet, &activeNodeIdsSet](Node* node)
{
if (node->isType(Node::NODE_INHERITABLE_TYPE) && activeNodeIdsSet.find(node->getId()) == activeNodeIdsSet.end())
if (node->getType().isInheritable() && activeNodeIdsSet.find(node->getId()) == activeNodeIdsSet.end())
{
nodeIdsSet.insert(node->getId());
}
@@ -2536,8 +2536,8 @@ void PersistentStorage::buildSearchIndex()
for (StorageNode& node : m_sqliteIndexStorage.getAll<StorageNode>())
{
Node::NodeType type = Node::intToType(node.type);
if (type == Node::NODE_FILE)
NodeType::Type type = utility::intToType(node.type);
if (type == NodeType::NODE_FILE)
{
auto it = m_fileNodePaths.find(node.id);
if (it != m_fileNodePaths.end())
@@ -2549,7 +2549,7 @@ void PersistentStorage::buildSearchIndex()
filePath = filePath.relativeTo(dbPath);
}
m_fileIndex.addNode(node.id, filePath.str(), type);
m_fileIndex.addNode(node.id, filePath.str(), node.type);
}
}
else
@@ -2570,7 +2570,7 @@ void PersistentStorage::buildSearchIndex()
name = utility::replaceBetween(name, '<', '>', "..");
}
m_symbolIndex.addNode(node.id, name, type);
m_symbolIndex.addNode(node.id, name, node.type);
}
}
}
@@ -2676,15 +2676,22 @@ void PersistentStorage::buildHierarchyCache()
std::vector<StorageNode> sourceNodes = m_sqliteIndexStorage.getAllByIds<StorageNode>(sourceNodeIds);
std::map<Id, Node::NodeType> sourceNodeTypeMap;
std::map<Id, NodeType> sourceNodeTypeMap;
for (const StorageNode& node : sourceNodes)
{
sourceNodeTypeMap.emplace(node.id, Node::intToType(node.type));
sourceNodeTypeMap.emplace(node.id, utility::intToType(node.type));
}
for (const StorageEdge& edge : memberEdges)
{
bool sourceIsVisible = !(sourceNodeTypeMap[edge.sourceNodeId] & Node::NODE_NOT_VISIBLE);
bool sourceIsVisible = true;
{
std::map<Id, NodeType>::const_iterator it = sourceNodeTypeMap.find(edge.sourceNodeId);
if (it != sourceNodeTypeMap.end())
{
sourceIsVisible = it->second.isVisibleAsParentInGraph();
}
}
bool sourceIsImplicit = false;
auto it = m_symbolDefinitionKinds.find(edge.sourceNodeId);
+6 -6
View File
@@ -77,7 +77,7 @@ public:
virtual NameHierarchy getNameHierarchyForNodeId(Id nodeId) const;
virtual std::vector<NameHierarchy> getNameHierarchiesForNodeIds(const std::vector<Id>& nodeIds) const;
virtual Node::NodeType getNodeTypeForNodeWithId(Id nodeId) const;
virtual NodeType getNodeTypeForNodeWithId(Id nodeId) const;
virtual Id getIdForEdge(
Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy) const;
@@ -86,19 +86,19 @@ public:
virtual std::shared_ptr<SourceLocationCollection> getFullTextSearchLocations(
const std::string& searchTerm, bool caseSensitive) const;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, Node::NodeTypeMask filter) const;
virtual std::vector<SearchMatch> getAutocompletionMatches(const std::string& query, NodeType::TypeMask filter) const;
std::vector<SearchMatch> getAutocompletionSymbolMatches(
const std::string& query, Node::NodeTypeMask filter, size_t maxResultsCount, size_t maxBestScoredResultsLength) const;
const std::string& query, NodeType::TypeMask filter, size_t maxResultsCount, size_t maxBestScoredResultsLength) const;
std::vector<SearchMatch> getAutocompletionFileMatches(const std::string& query, size_t maxResultsCount) const;
std::vector<SearchMatch> getAutocompletionCommandMatches(const std::string& query, Node::NodeTypeMask filter) const;
std::vector<SearchMatch> getAutocompletionCommandMatches(const std::string& query, NodeType::TypeMask filter) const;
virtual std::vector<SearchMatch> getSearchMatchesForTokenIds(const std::vector<Id>& elementIds) const;
virtual std::shared_ptr<Graph> getGraphForAll() const;
virtual std::shared_ptr<Graph> getGraphForFilter(Node::NodeTypeMask filter) const;
virtual std::shared_ptr<Graph> getGraphForFilter(NodeType::TypeMask filter) const;
virtual std::shared_ptr<Graph> getGraphForActiveTokenIds(
const std::vector<Id>& tokenIds, const std::vector<Id>& expandedNodeIds, bool* isActiveNamespace = nullptr) const;
virtual std::shared_ptr<Graph> getGraphForChildrenOfNodeId(Id nodeId) const;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth) const;
virtual std::shared_ptr<Graph> getGraphForTrail(Id originId, Id targetId, Edge::TypeMask trailType, size_t depth) const;
virtual std::vector<Id> getActiveTokenIdsForId(Id tokenId, Id* declarationId) const;
virtual std::vector<Id> getNodeIdsForLocationIds(const std::vector<Id>& locationIds) const;
+2 -2
View File
@@ -26,9 +26,9 @@ std::string ColorScheme::getColor(const std::string& key, const std::string& def
return getValue<std::string>(key, defaultColor);
}
std::string ColorScheme::getNodeTypeColor(Node::NodeType type, const std::string& key, ColorState state) const
std::string ColorScheme::getNodeTypeColor(NodeType type, const std::string& key, ColorState state) const
{
return getNodeTypeColor(Node::getUnderscoredTypeString(type), key, state);
return getNodeTypeColor(type.getUnderscoredTypeString(), key, state);
}
std::string ColorScheme::getNodeTypeColor(const std::string& typeStr, const std::string& key, ColorState state) const
+1 -1
View File
@@ -22,7 +22,7 @@ public:
std::string getColor(const std::string& key) const;
std::string getColor(const std::string& key, const std::string& defaultColor) const;
std::string getNodeTypeColor(Node::NodeType type, const std::string& key, ColorState state) const;
std::string getNodeTypeColor(NodeType type, const std::string& key, ColorState state) const;
std::string getNodeTypeColor(const std::string& typeStr, const std::string& key, ColorState state) const;
std::string getEdgeTypeColor(Edge::EdgeType type, ColorState state) const;
@@ -8,7 +8,7 @@ class MessageActivateAll
: public Message<MessageActivateAll>
{
public:
MessageActivateAll(Node::NodeTypeMask filter = 0)
MessageActivateAll(NodeType::TypeMask filter = 0)
: filter(filter)
{
setIsParallel(true);
@@ -19,7 +19,7 @@ public:
return "MessageActivateAll";
}
Node::NodeTypeMask filter;
NodeType::TypeMask filter;
};
#endif // MESSAGE_ACTIVATE_ALL_H
@@ -8,7 +8,7 @@ class MessageActivateTrail
: public Message<MessageActivateTrail>
{
public:
MessageActivateTrail(Id originId, Id targetId, Edge::EdgeTypeMask trailType, size_t depth, bool horizontalLayout)
MessageActivateTrail(Id originId, Id targetId, Edge::TypeMask trailType, size_t depth, bool horizontalLayout)
: originId(originId)
, targetId(targetId)
, trailType(trailType)
@@ -24,7 +24,7 @@ public:
const Id originId;
const Id targetId;
const Edge::EdgeTypeMask trailType;
const Edge::TypeMask trailType;
const size_t depth;
const bool horizontalLayout;
};
@@ -9,7 +9,7 @@ class MessageSearch
: public Message<MessageSearch>
{
public:
MessageSearch(const std::vector<SearchMatch>& matches, Node::NodeTypeMask filter = 0)
MessageSearch(const std::vector<SearchMatch>& matches, NodeType::TypeMask filter = 0)
: isFromSearch(true)
, filter(filter)
, m_matches(matches)
@@ -28,7 +28,7 @@ public:
for (size_t i = 0; i < m_matches.size(); i++)
{
ss << '@';
if (m_matches[i].nodeType == Node::NODE_FILE)
if (m_matches[i].nodeType.getType() == NodeType::NODE_FILE)
{
ss << m_matches[i].subtext;
}
@@ -72,7 +72,7 @@ public:
}
bool isFromSearch;
Node::NodeTypeMask filter;
NodeType::TypeMask filter;
private:
const std::vector<SearchMatch> m_matches;
@@ -8,7 +8,7 @@ class MessageSearchAutocomplete
: public Message<MessageSearchAutocomplete>
{
public:
MessageSearchAutocomplete(const std::string& query, Node::NodeTypeMask filter)
MessageSearchAutocomplete(const std::string& query, NodeType::TypeMask filter)
: query(query)
, filter(filter)
{
@@ -25,7 +25,7 @@ public:
}
const std::string query;
const Node::NodeTypeMask filter;
const NodeType::TypeMask filter;
};
#endif // MESSAGE_SEARCH_AUTOCOMPLETE_H
@@ -30,12 +30,12 @@ void StorageTransformationAnonymousTypedef::transform(std::shared_ptr<Intermedia
for (const StorageNode& node : nodes)
{
const Node::NodeType nodeType = Node::intToType(node.type);
if (nodeType & Node::NODE_TYPEDEF)
const NodeType::Type nodeType = utility::intToType(node.type);
if (nodeType & NodeType::NODE_TYPEDEF)
{
typedefNodes.insert(std::pair<Id, StorageNode>(node.id, node));
}
else if(nodeType & (Node::NODE_STRUCT | Node::NODE_CLASS | Node::NODE_ENUM | Node::NODE_UNION))
else if(nodeType & (NodeType::NODE_STRUCT | NodeType::NODE_CLASS | NodeType::NODE_ENUM | NodeType::NODE_UNION))
{
const NameHierarchy nameHierarchy = NameHierarchy::deserialize(node.serializedName);
if (nameHierarchy.back() && utility::isPrefix("anonymous ", nameHierarchy.back()->getName()))
@@ -64,7 +64,7 @@ QVariant QtAutocompletionModel::data(const QModelIndex &index, int role) const
return indices;
}
case 5:
return match.nodeType;
return match.nodeType.getType();
default:
return QVariant();
}
@@ -140,7 +140,7 @@ void QtAutocompletionDelegate::paint(QPainter* painter, const QStyleOptionViewIt
QString subtext = index.sibling(index.row(), index.column() + 2).data().toString();
QString type = index.sibling(index.row(), index.column() + 3).data().toString();
QList<QVariant> indices = index.sibling(index.row(), index.column() + 4).data().toList();
Node::NodeType nodeType = static_cast<Node::NodeType>(index.sibling(index.row(), index.column() + 5).data().toInt());
NodeType nodeType = utility::intToType(index.sibling(index.row(), index.column() + 5).data().toInt());
// define highlight colors
ColorScheme* scheme = ColorScheme::getInstance().get();
@@ -149,7 +149,7 @@ void QtAutocompletionDelegate::paint(QPainter* painter, const QStyleOptionViewIt
if (type.size() && type != "command" && type != "filter")
{
const GraphViewStyle::NodeColor& nodeColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(nodeType), false);
const GraphViewStyle::NodeColor& nodeColor = GraphViewStyle::getNodeColor(nodeType.getUnderscoredTypeString(), false);
fillColor = QColor(nodeColor.fill.c_str());
textColor = QColor(nodeColor.text.c_str());
}
+3 -3
View File
@@ -22,7 +22,7 @@ QtHistoryItem::QtHistoryItem(const SearchMatch& match, size_t index, bool isCurr
layout->setContentsMargins(0, 0, 0, 0);
layout->setAlignment(Qt::AlignTop);
std::string name = utility::elide(match.nodeType == Node::NODE_FILE ? match.text : match.name, utility::ELIDE_RIGHT, 100);
std::string name = utility::elide(match.nodeType.getType() == NodeType::NODE_FILE ? match.text : match.name, utility::ELIDE_RIGHT, 100);
m_name = new QLabel(name.c_str(), this);
m_name->setAttribute(Qt::WA_MacShowFocusRect, 0);
@@ -43,8 +43,8 @@ QtHistoryItem::QtHistoryItem(const SearchMatch& match, size_t index, bool isCurr
ColorScheme* scheme = ColorScheme::getInstance().get();
if (match.searchType == SearchMatch::SEARCH_TOKEN)
{
m_indicatorColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), false).fill;
m_indicatorHoverColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), true).fill;
m_indicatorColor = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), false).fill;
m_indicatorHoverColor = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), true).fill;
}
else
{
+7 -7
View File
@@ -807,10 +807,10 @@ void QtSmartSearchBox::updateElements()
if (match.searchType == SearchMatch::SEARCH_TOKEN)
{
color = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), false).fill;
hoverColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), true).fill;
textColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), false).text;
textHoverColor = GraphViewStyle::getNodeColor(Node::getUnderscoredTypeString(match.nodeType), true).text;
color = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), false).fill;
hoverColor = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), true).fill;
textColor = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), false).text;
textHoverColor = GraphViewStyle::getNodeColor(match.nodeType.getUnderscoredTypeString(), true).text;
}
else
{
@@ -1040,15 +1040,15 @@ std::deque<SearchMatch> QtSmartSearchBox::getMatchesForInput(const std::string&
return matches;
}
Node::NodeTypeMask QtSmartSearchBox::getMatchFilter() const
NodeType::TypeMask QtSmartSearchBox::getMatchFilter() const
{
Node::NodeTypeMask filter = 0;
NodeType::TypeMask filter = 0;
for (const SearchMatch& match : m_matches)
{
if (match.isFilterCommand())
{
filter |= match.nodeType;
filter |= match.nodeType.getType();
}
else
{
+1 -1
View File
@@ -99,7 +99,7 @@ private:
std::deque<SearchMatch> getMatchesForInput(const std::string& text) const;
Node::NodeTypeMask getMatchFilter() const;
NodeType::TypeMask getMatchFilter() const;
bool lastMatchIsNoFilter() const;
bool m_allowTextChange;
+9 -9
View File
@@ -661,27 +661,27 @@ MessageActivateTrail QtGraphView::getMessageActivateTrail(bool forward)
QtGraphNodeData* node = nullptr;
if (m_oldActiveNode && (node = dynamic_cast<QtGraphNodeData*>(m_oldActiveNode)))
{
Edge::EdgeTypeMask trailType;
Edge::TypeMask trailType;
bool horizontalLayout = true;
switch (node->getData()->getType())
switch (node->getData()->getType().getType())
{
case Node::NODE_NON_INDEXED:
case Node::NODE_CLASS:
case Node::NODE_STRUCT:
case Node::NODE_INTERFACE:
case NodeType::NODE_NON_INDEXED:
case NodeType::NODE_CLASS:
case NodeType::NODE_STRUCT:
case NodeType::NODE_INTERFACE:
trailType = Edge::EDGE_INHERITANCE;
horizontalLayout = false;
break;
case Node::NODE_FUNCTION:
case Node::NODE_METHOD:
case NodeType::NODE_FUNCTION:
case NodeType::NODE_METHOD:
trailType = Edge::EDGE_CALL | Edge::EDGE_OVERRIDE |
Edge::EDGE_TEMPLATE_SPECIALIZATION | Edge::EDGE_TEMPLATE_MEMBER_SPECIALIZATION;
horizontalLayout = true;
break;
case Node::NODE_FILE:
case NodeType::NODE_FILE:
trailType = Edge::EDGE_INCLUDE;
horizontalLayout = true;
break;
+2 -2
View File
@@ -9,12 +9,12 @@ QtGraphViewStyleImpl::~QtGraphViewStyleImpl()
{
}
float QtGraphViewStyleImpl::getCharWidthForNodeType(Node::NodeType type)
float QtGraphViewStyleImpl::getCharWidthForNodeType(NodeType type)
{
return QFontMetrics(QtGraphNode::getFontForNodeType(type)).width("QtGraphNode::QtGraphNode::QtGraphNode") / 37.0f;
}
float QtGraphViewStyleImpl::getCharHeightForNodeType(Node::NodeType type)
float QtGraphViewStyleImpl::getCharHeightForNodeType(NodeType type)
{
return QFontMetrics(QtGraphNode::getFontForNodeType(type)).height();
}
+2 -2
View File
@@ -8,8 +8,8 @@ class QtGraphViewStyleImpl
{
public:
virtual ~QtGraphViewStyleImpl();
virtual float getCharWidthForNodeType(Node::NodeType type);
virtual float getCharHeightForNodeType(Node::NodeType type);
virtual float getCharWidthForNodeType(NodeType type);
virtual float getCharHeightForNodeType(NodeType type);
virtual float getGraphViewZoomDifferenceForPlatform();
};
@@ -34,9 +34,9 @@ void QtGraphNode::hideNode()
this->hide();
}
QFont QtGraphNode::getFontForNodeType(Node::NodeType type)
QFont QtGraphNode::getFontForNodeType(NodeType type)
{
QFont font(GraphViewStyle::getFontNameForNodeType(type).c_str());
QFont font(GraphViewStyle::getFontNameForDataNode().c_str());
font.setPixelSize(GraphViewStyle::getFontSizeForNodeType(type));
return font;
}
@@ -31,7 +31,7 @@ public slots:
void hideNode();
public:
static QFont getFontForNodeType(Node::NodeType type);
static QFont getFontForNodeType(NodeType type);
QtGraphNode();
virtual ~QtGraphNode();
@@ -9,7 +9,7 @@
#include "component/view/GraphViewStyle.h"
#include "qt/graphics/QtCountCircleItem.h"
QtGraphNodeBundle::QtGraphNodeBundle(Id tokenId, size_t nodeCount, Node::NodeType type, std::string name)
QtGraphNodeBundle::QtGraphNodeBundle(Id tokenId, size_t nodeCount, NodeType type, std::string name)
: QtGraphNode()
, m_tokenId(tokenId)
, m_type(type)
@@ -42,8 +42,8 @@ void QtGraphNodeBundle::onClick()
{
MessageGraphNodeBundleSplit(
m_tokenId,
m_type != Node::NODE_NON_INDEXED && getName() != "Anonymous Namespaces",
m_type != Node::NODE_NON_INDEXED
m_type.getType() != NodeType::NODE_NON_INDEXED && getName() != "Anonymous Namespaces",
m_type.getType() != NodeType::NODE_NON_INDEXED
).dispatch();
}
@@ -57,7 +57,7 @@ void QtGraphNodeBundle::moved(const Vec2i& oldPosition)
void QtGraphNodeBundle::updateStyle()
{
GraphViewStyle::NodeStyle style;
if (m_type != Node::NODE_NON_INDEXED)
if (m_type.getType() != NodeType::NODE_NON_INDEXED)
{
style = GraphViewStyle::getStyleForNodeType(m_type, true, false, m_isHovering, false, false);
}
@@ -11,7 +11,7 @@ class QtGraphNodeBundle
{
Q_OBJECT
public:
QtGraphNodeBundle(Id tokenId, size_t nodeCount, Node::NodeType type, std::string name);
QtGraphNodeBundle(Id tokenId, size_t nodeCount, NodeType type, std::string name);
virtual ~QtGraphNodeBundle();
// QtGraphNode implementation
@@ -29,7 +29,7 @@ protected:
private:
QtCountCircleItem* m_circle;
Id m_tokenId;
Node::NodeType m_type;
NodeType m_type;
};
#endif // QT_GRAPH_NODE_BUNDLE_H
@@ -30,7 +30,7 @@ const Node* QtGraphNodeData::getData() const
FilePath QtGraphNodeData::getFilePath() const
{
if (m_data->isType(Node::NODE_FILE))
if (m_data->getType().isFile())
{
return m_data->getComponent<TokenComponentFilePath>()->getFilePath();
}
@@ -21,7 +21,7 @@ QtGraphNodeQualifier::QtGraphNodeQualifier(const NameHierarchy& name)
m_rightArrowSmall = new QGraphicsPolygonItem(this);
QFont font;
font.setFamily(GraphViewStyle::getFontNameForNodeType(Node::NODE_NON_INDEXED).c_str());
font.setFamily(GraphViewStyle::getFontNameForDataNode().c_str());
font.setPixelSize(GraphViewStyle::getFontSizeOfQualifier());
font.setWeight(QFont::Normal);
+1 -1
View File
@@ -867,7 +867,7 @@ void QtMainWindow::setupHistoryMenu()
for (size_t i = 0; i < m_history.size(); i++)
{
SearchMatch& match = m_history[i];
std::string name = utility::elide(match.nodeType == Node::NODE_FILE ? match.text : match.name, utility::ELIDE_RIGHT, 50);
std::string name = utility::elide(match.nodeType.getType() == NodeType::NODE_FILE ? match.text : match.name, utility::ELIDE_RIGHT, 50);
QAction* action = new QAction();
action->setText(name.c_str());
+36 -36
View File
@@ -90,7 +90,7 @@ public:
void test_nodes_are_nodes()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
TS_ASSERT(a.isNode());
TS_ASSERT(!a.isEdge());
@@ -98,8 +98,8 @@ public:
void test_edges_are_edges()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Edge e(3, Edge::EDGE_USAGE, &a, &b);
TS_ASSERT(!e.isNode());
@@ -108,27 +108,27 @@ public:
void test_set_type_of_node_from_constructor()
{
Node n(1, Node::NODE_FUNCTION, NameHierarchy("A", NAME_DELIMITER_CXX), false);
TS_ASSERT_EQUALS(Node::NODE_FUNCTION, n.getType());
Node n(1, NodeType(NodeType::NODE_FUNCTION), NameHierarchy("A", NAME_DELIMITER_CXX), false);
TS_ASSERT_EQUALS(NodeType(NodeType::NODE_FUNCTION), n.getType());
}
void test_set_type_of_node_from_non_indexed()
{
Node n(2, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
n.setType(Node::NODE_CLASS);
TS_ASSERT_EQUALS(Node::NODE_CLASS, n.getType());
Node n(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
n.setType(NodeType(NodeType::NODE_CLASS));
TS_ASSERT_EQUALS(NodeType(NodeType::NODE_CLASS), n.getType());
}
void test_can_not_change_type_of_node_after_it_was_set()
{
Node n(3, Node::NODE_NAMESPACE, NameHierarchy("A", NAME_DELIMITER_CXX), false);
n.setType(Node::NODE_CLASS);
TS_ASSERT_DIFFERS(Node::NODE_CLASS, n.getType());
Node n(3, NodeType(NodeType::NODE_NAMESPACE), NameHierarchy("A", NAME_DELIMITER_CXX), false);
n.setType(NodeType(NodeType::NODE_CLASS));
TS_ASSERT_DIFFERS(NodeType(NodeType::NODE_CLASS), n.getType());
}
void test_node_can_be_copied_and_keeps_same_id()
{
Node n(4, Node::NODE_NAMESPACE, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node n(4, NodeType(NodeType::NODE_NAMESPACE), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node n2(n);
TS_ASSERT_DIFFERS(&n, &n2);
@@ -139,15 +139,15 @@ public:
void test_node_type_bit_masking()
{
Node n(1, Node::NODE_NAMESPACE, NameHierarchy("A", NAME_DELIMITER_CXX), false);
TS_ASSERT(n.isType(Node::NODE_FUNCTION | Node::NODE_NAMESPACE | Node::NODE_CLASS));
TS_ASSERT(!n.isType(Node::NODE_FUNCTION | Node::NODE_METHOD | Node::NODE_CLASS));
Node n(1, NodeType(NodeType::NODE_NAMESPACE), NameHierarchy("A", NAME_DELIMITER_CXX), false);
TS_ASSERT(n.isType(NodeType::NODE_FUNCTION | NodeType::NODE_NAMESPACE | NodeType::NODE_CLASS));
TS_ASSERT(!n.isType(NodeType::NODE_FUNCTION | NodeType::NODE_METHOD | NodeType::NODE_CLASS));
}
void test_get_type_of_edges()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Edge e(3, Edge::EDGE_USAGE, &a, &b);
TS_ASSERT_EQUALS(Edge::EDGE_USAGE, e.getType());
@@ -155,8 +155,8 @@ public:
void test_edge_can_be_copied_and_keeps_same_id()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Edge e(3, Edge::EDGE_USAGE, &a, &b);
Edge e2(e, &a, &b);
@@ -167,8 +167,8 @@ public:
void test_edge_type_bit_masking()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Edge e(3, Edge::EDGE_USAGE, &a, &b);
TS_ASSERT(e.isType(Edge::EDGE_MEMBER | Edge::EDGE_CALL | Edge::EDGE_USAGE));
@@ -177,9 +177,9 @@ public:
void test_node_finds_child_node()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, Node::NODE_NON_INDEXED, NameHierarchy("C", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("C", NAME_DELIMITER_CXX), false);
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
@@ -196,9 +196,9 @@ public:
void test_node_can_not_find_child_node()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, Node::NODE_NON_INDEXED, NameHierarchy("C", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("C", NAME_DELIMITER_CXX), false);
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
@@ -214,9 +214,9 @@ public:
void test_node_visits_child_nodes()
{
Node a(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, Node::NODE_NON_INDEXED, NameHierarchy("C", NAME_DELIMITER_CXX), false);
Node a(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node b(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node c(3, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("C", NAME_DELIMITER_CXX), false);
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
@@ -236,8 +236,8 @@ public:
void test_graph_saves_nodes()
{
Graph graph;
Node* a = graph.createNode(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node* b = graph.createNode(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node* a = graph.createNode(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node* b = graph.createNode(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
TS_ASSERT_EQUALS(2, graph.getNodeCount());
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
@@ -255,8 +255,8 @@ public:
{
Graph graph;
Node* a = graph.createNode(1, Node::NODE_FUNCTION, NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node* b = graph.createNode(2, Node::NODE_FUNCTION, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node* a = graph.createNode(1, NodeType(NodeType::NODE_FUNCTION), NameHierarchy("A", NAME_DELIMITER_CXX), false);
Node* b = graph.createNode(2, NodeType(NodeType::NODE_FUNCTION), NameHierarchy("B", NAME_DELIMITER_CXX), false);
Edge* e = graph.createEdge(3, Edge::EDGE_CALL, a, b);
@@ -271,8 +271,8 @@ public:
{
Graph graph;
Node* a = graph.createNode(1, Node::NODE_NON_INDEXED, NameHierarchy("A", NAME_DELIMITER_CXX), false);
graph.createNode(2, Node::NODE_NON_INDEXED, NameHierarchy("B", NAME_DELIMITER_CXX), false);
Node* a = graph.createNode(1, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("A", NAME_DELIMITER_CXX), false);
graph.createNode(2, NodeType(NodeType::NODE_NON_INDEXED), NameHierarchy("B", NAME_DELIMITER_CXX), false);
TS_ASSERT_EQUALS(2, graph.getNodeCount());
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
+7 -7
View File
@@ -21,13 +21,13 @@ public:
std::string filePath = "path/to/test.h";
std::shared_ptr<IntermediateStorage> intermetiateStorage = std::make_shared<IntermediateStorage>();
Id id = intermetiateStorage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_FILE), NameHierarchy::serialize(NameHierarchy(filePath, NAME_DELIMITER_FILE))));
Id id = intermetiateStorage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_FILE), NameHierarchy::serialize(NameHierarchy(filePath, NAME_DELIMITER_FILE))));
intermetiateStorage->addFile(StorageFile(id, filePath, "someTime", true));
storage.inject(intermetiateStorage.get());
TS_ASSERT_EQUALS(storage.getNameHierarchyForNodeId(id).getQualifiedName(), filePath);
TS_ASSERT_EQUALS(storage.getNodeTypeForNodeWithId(id), Node::NODE_FILE);
TS_ASSERT(storage.getNodeTypeForNodeWithId(id).isFile());
}
void test_storage_saves_node()
@@ -37,14 +37,14 @@ public:
TestStorage storage;
std::shared_ptr<IntermediateStorage> intermetiateStorage = std::make_shared<IntermediateStorage>();
intermetiateStorage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(a)));
intermetiateStorage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(a)));
storage.inject(intermetiateStorage.get());
Id storedId = storage.getNodeIdForNameHierarchy(a);
TS_ASSERT(storedId != 0);
TS_ASSERT_EQUALS(storage.getNodeTypeForNodeWithId(storedId), Node::NODE_TYPEDEF);
TS_ASSERT_EQUALS(storage.getNodeTypeForNodeWithId(storedId).getType(), NodeType::NODE_TYPEDEF);
}
@@ -57,10 +57,10 @@ public:
std::shared_ptr<IntermediateStorage> intermetiateStorage = std::make_shared<IntermediateStorage>();
Id aId = intermetiateStorage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_STRUCT), NameHierarchy::serialize(a)));
Id aId = intermetiateStorage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_STRUCT), NameHierarchy::serialize(a)));
intermetiateStorage->addSymbol(StorageSymbol(aId, DEFINITION_EXPLICIT));
Id bId = intermetiateStorage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_FIELD), NameHierarchy::serialize(b)));
Id bId = intermetiateStorage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_FIELD), NameHierarchy::serialize(b)));
intermetiateStorage->addSymbol(StorageSymbol(bId, DEFINITION_EXPLICIT));
intermetiateStorage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_MEMBER), aId, bId));
@@ -84,7 +84,7 @@ public:
//Node* node = storage.getNodeWithId(id);
//TS_ASSERT(node);
//TS_ASSERT_EQUALS(node->getQualifiedNameWithSignature(), "isMethod");
//TS_ASSERT_EQUALS(node->getType(), Node::NODE_METHOD);
//TS_ASSERT_EQUALS(node->getType(), NodeType::NODE_METHOD);
//TS_ASSERT(node->getComponent<TokenComponentStatic>());
}
@@ -12,8 +12,8 @@ public:
{
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
Id anonymousTypeId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
Id anonymousTypeId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), typedefId, anonymousTypeId));
StorageTransformationAnonymousTypedef::transform(storage);
@@ -35,8 +35,8 @@ public:
{
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
Id anonymousTypeId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
Id anonymousTypeId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), typedefId, anonymousTypeId));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), 42, typedefId));
@@ -69,8 +69,8 @@ public:
{
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
Id anonymousTypeId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
Id anonymousTypeId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), typedefId, anonymousTypeId));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), anonymousTypeId, 42));
@@ -103,12 +103,12 @@ public:
{
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
Id anonymousTypeId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
Id anonymousTypeId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_CLASS), NameHierarchy::serialize(NameHierarchy("anonymous class (input.cc<1:9>)", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), typedefId, anonymousTypeId));
Id anonymousTypeMemberId = storage->addNode(StorageNodeData(
Node::typeToInt(Node::NODE_FIELD),
utility::nodeTypeToInt(NodeType::NODE_FIELD),
NameHierarchy::serialize(NameHierarchy(utility::createVectorFromElements<std::string>("anonymous class (input.cc<1:9>)", "field"), NAME_DELIMITER_CXX))
));
@@ -132,10 +132,10 @@ public:
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
Id typeId = storage->addNode(StorageNodeData(
Node::typeToInt(Node::NODE_CLASS),
utility::nodeTypeToInt(NodeType::NODE_CLASS),
NameHierarchy::serialize(NameHierarchy(utility::createVectorFromElements<std::string>("anonymous namespace (input.cc<1:9>)", "Type"), NAME_DELIMITER_CXX))
));
Id typedefId = storage->addNode(StorageNodeData(Node::typeToInt(Node::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
Id typedefId = storage->addNode(StorageNodeData(utility::nodeTypeToInt(NodeType::NODE_TYPEDEF), NameHierarchy::serialize(NameHierarchy("ClassTypedef", NAME_DELIMITER_CXX))));
storage->addEdge(StorageEdgeData(Edge::typeToInt(Edge::EDGE_TYPE_USAGE), typedefId, typeId));
StorageTransformationAnonymousTypedef::transform(storage);