data: saving NameHierarchy directly to Node without TokenComponentName
This commit is contained in:
@@ -113,8 +113,6 @@ add_files(
|
||||
data/graph/token_component/TokenComponentConst.h
|
||||
data/graph/token_component/TokenComponentFilePath.cpp
|
||||
data/graph/token_component/TokenComponentFilePath.h
|
||||
data/graph/token_component/TokenComponentName.cpp
|
||||
data/graph/token_component/TokenComponentName.h
|
||||
data/graph/token_component/TokenComponentStatic.cpp
|
||||
data/graph/token_component/TokenComponentStatic.h
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "utility/utilityString.h"
|
||||
|
||||
#include "data/graph/token_component/TokenComponentAggregation.h"
|
||||
#include "data/graph/token_component/TokenComponentName.h"
|
||||
#include "data/graph/Graph.h"
|
||||
#include "data/location/TokenLocation.h"
|
||||
#include "data/location/TokenLocationFile.h"
|
||||
@@ -1442,7 +1441,7 @@ Node* Storage::addNodeToGraph(const Id nodeId, Graph* graph) const
|
||||
node = graph->createNode(
|
||||
storageNode.id,
|
||||
Node::intToType(storageNode.type),
|
||||
std::make_shared<TokenComponentNameCached>(m_tokenIndex.getNameHierarchyForTokenId(nodeId))
|
||||
m_tokenIndex.getNameHierarchyForTokenId(nodeId)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ void Graph::forEachToken(std::function<void(Token*)> func) const
|
||||
forEachEdge(func);
|
||||
}
|
||||
|
||||
Node* Graph::createNode(Id id, Node::NodeType type, std::shared_ptr<TokenComponentName> nameComponent)
|
||||
Node* Graph::createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy)
|
||||
{
|
||||
Node* n = getNodeById(id);
|
||||
if (n)
|
||||
@@ -48,7 +48,7 @@ Node* Graph::createNode(Id id, Node::NodeType type, std::shared_ptr<TokenCompone
|
||||
return n;
|
||||
}
|
||||
|
||||
std::shared_ptr<Node> node = std::make_shared<Node>(id, type, nameComponent);
|
||||
std::shared_ptr<Node> node = std::make_shared<Node>(id, type, nameHierarchy);
|
||||
m_nodes.emplace(node->getId(), node);
|
||||
return node.get();
|
||||
}
|
||||
|
||||
@@ -20,7 +20,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, std::shared_ptr<TokenComponentName> nameComponent);
|
||||
Node* createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy);
|
||||
Edge* createEdge(Id id, Edge::EdgeType type, Node* from, Node* to);
|
||||
|
||||
size_t getNodeCount() const;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
#include "data/graph/token_component/TokenComponentAbstraction.h"
|
||||
#include "data/graph/token_component/TokenComponentConst.h"
|
||||
#include "data/graph/token_component/TokenComponentName.h"
|
||||
#include "data/graph/token_component/TokenComponentStatic.h"
|
||||
#include "data/graph/token_component/TokenComponentFilePath.h"
|
||||
|
||||
@@ -97,17 +96,17 @@ Node::NodeType Node::intToType(int value)
|
||||
return NODE_UNDEFINED;
|
||||
}
|
||||
|
||||
Node::Node(Id id, NodeType type, std::shared_ptr<TokenComponentName> nameComponent)
|
||||
Node::Node(Id id, NodeType type, NameHierarchy nameHierarchy)
|
||||
: Token(id)
|
||||
, m_type(type)
|
||||
, m_nameComponent(nameComponent)
|
||||
, m_nameHierarchy(nameHierarchy)
|
||||
{
|
||||
}
|
||||
|
||||
Node::Node(const Node& other)
|
||||
: Token(other)
|
||||
, m_type(other.m_type)
|
||||
, m_nameComponent(other.m_nameComponent->copyComponentName())
|
||||
, m_nameHierarchy(other.m_nameHierarchy)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -139,22 +138,12 @@ bool Node::isType(NodeTypeMask mask) const
|
||||
|
||||
std::string Node::getName() const
|
||||
{
|
||||
return m_nameComponent->getName();
|
||||
return m_nameHierarchy.getName();
|
||||
}
|
||||
|
||||
std::string Node::getFullName() const
|
||||
{
|
||||
return m_nameComponent->getFullName();
|
||||
}
|
||||
|
||||
const TokenComponentName* Node::getTokenComponentName() const
|
||||
{
|
||||
if (m_nameComponent)
|
||||
{
|
||||
return m_nameComponent.get();
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
return m_nameHierarchy.getFullName();
|
||||
}
|
||||
|
||||
const std::vector<Edge*>& Node::getEdges() const
|
||||
|
||||
@@ -8,12 +8,11 @@
|
||||
|
||||
#include "data/graph/Edge.h"
|
||||
#include "data/graph/Token.h"
|
||||
#include "data/name/NameHierarchy.h"
|
||||
|
||||
class TokenComponentAbstraction;
|
||||
class TokenComponentConst;
|
||||
class TokenComponentName;
|
||||
class TokenComponentStatic;
|
||||
class TokenComponentSignature;
|
||||
class TokenComponentFilePath;
|
||||
|
||||
class Node
|
||||
@@ -50,7 +49,7 @@ public:
|
||||
|
||||
static const NodeTypeMask NODE_NOT_VISIBLE;
|
||||
|
||||
Node(Id id, NodeType type, std::shared_ptr<TokenComponentName> nameComponent);
|
||||
Node(Id id, NodeType type, NameHierarchy nameHierarchy);
|
||||
Node(const Node& other);
|
||||
virtual ~Node();
|
||||
|
||||
@@ -60,7 +59,6 @@ public:
|
||||
|
||||
std::string getName() const;
|
||||
std::string getFullName() const;
|
||||
const TokenComponentName* getTokenComponentName() const;
|
||||
|
||||
const std::vector<Edge*>& getEdges() const;
|
||||
|
||||
@@ -90,7 +88,6 @@ public:
|
||||
void addComponentAbstraction(std::shared_ptr<TokenComponentAbstraction> component);
|
||||
void addComponentConst(std::shared_ptr<TokenComponentConst> component);
|
||||
void addComponentStatic(std::shared_ptr<TokenComponentStatic> component);
|
||||
void addComponentSignature(std::shared_ptr<TokenComponentSignature> component);
|
||||
void addComponentFilePath(std::shared_ptr<TokenComponentFilePath> component);
|
||||
|
||||
// Logging.
|
||||
@@ -103,7 +100,7 @@ private:
|
||||
std::vector<Edge*> m_edges;
|
||||
|
||||
NodeType m_type;
|
||||
std::shared_ptr<TokenComponentName> m_nameComponent;
|
||||
NameHierarchy m_nameHierarchy;
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& ostream, const Node& node);
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
#include "data/graph/token_component/TokenComponentName.h"
|
||||
|
||||
#include "utility/utilityString.h"
|
||||
|
||||
#include "data/search/SearchIndex.h"
|
||||
|
||||
TokenComponentName::TokenComponentName()
|
||||
{
|
||||
}
|
||||
|
||||
TokenComponentName::~TokenComponentName()
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<TokenComponentName> TokenComponentName::copyComponentName() const
|
||||
{
|
||||
return std::dynamic_pointer_cast<TokenComponentName>(copy());
|
||||
}
|
||||
|
||||
|
||||
TokenComponentNameReferenced::TokenComponentNameReferenced(const SearchNode* searchNode)
|
||||
: m_searchNode(searchNode)
|
||||
{
|
||||
}
|
||||
|
||||
TokenComponentNameReferenced::~TokenComponentNameReferenced()
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<TokenComponent> TokenComponentNameReferenced::copy() const
|
||||
{
|
||||
return std::make_shared<TokenComponentNameCached>(m_searchNode->getNameHierarchy());
|
||||
}
|
||||
|
||||
std::string TokenComponentNameReferenced::getName() const
|
||||
{
|
||||
return m_searchNode->getName();
|
||||
}
|
||||
|
||||
std::string TokenComponentNameReferenced::getFullName() const
|
||||
{
|
||||
return m_searchNode->getFullName();
|
||||
}
|
||||
|
||||
const SearchNode* TokenComponentNameReferenced::getSearchNode() const
|
||||
{
|
||||
return m_searchNode;
|
||||
}
|
||||
|
||||
TokenComponentNameCached::TokenComponentNameCached(const std::vector<std::string>& nameHierarchy)
|
||||
: m_nameHierarchy(nameHierarchy)
|
||||
{
|
||||
}
|
||||
|
||||
TokenComponentNameCached::TokenComponentNameCached(const NameHierarchy& nameHierarchy)
|
||||
{
|
||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
||||
{
|
||||
m_nameHierarchy.push_back(nameHierarchy[i]->getFullName());
|
||||
}
|
||||
}
|
||||
|
||||
TokenComponentNameCached::~TokenComponentNameCached()
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<TokenComponent> TokenComponentNameCached::copy() const
|
||||
{
|
||||
return std::make_shared<TokenComponentNameCached>(m_nameHierarchy);
|
||||
}
|
||||
|
||||
std::string TokenComponentNameCached::getName() const
|
||||
{
|
||||
return m_nameHierarchy.back();
|
||||
}
|
||||
|
||||
std::string TokenComponentNameCached::getFullName() const
|
||||
{
|
||||
return utility::join(m_nameHierarchy, "::");
|
||||
}
|
||||
|
||||
const SearchNode* TokenComponentNameCached::getSearchNode() const
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
#ifndef TOKEN_COMPONENT_NAME_H
|
||||
#define TOKEN_COMPONENT_NAME_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "data/graph/token_component/TokenComponent.h"
|
||||
#include "data/name/NameHierarchy.h"
|
||||
#include "data/search/SearchNode.h"
|
||||
|
||||
class TokenComponentName
|
||||
: public TokenComponent
|
||||
{
|
||||
public:
|
||||
TokenComponentName();
|
||||
virtual ~TokenComponentName();
|
||||
|
||||
std::shared_ptr<TokenComponentName> copyComponentName() const;
|
||||
|
||||
virtual std::string getName() const = 0;
|
||||
virtual std::string getFullName() const = 0;
|
||||
|
||||
virtual const SearchNode* getSearchNode() const = 0;
|
||||
};
|
||||
|
||||
|
||||
class TokenComponentNameReferenced
|
||||
: public TokenComponentName
|
||||
{
|
||||
public:
|
||||
TokenComponentNameReferenced(const SearchNode* searchNode);
|
||||
virtual ~TokenComponentNameReferenced();
|
||||
|
||||
virtual std::shared_ptr<TokenComponent> copy() const;
|
||||
|
||||
virtual std::string getName() const;
|
||||
virtual std::string getFullName() const;
|
||||
|
||||
virtual const SearchNode* getSearchNode() const;
|
||||
|
||||
private:
|
||||
const SearchNode* m_searchNode;
|
||||
};
|
||||
|
||||
|
||||
class TokenComponentNameCached
|
||||
: public TokenComponentName
|
||||
{
|
||||
public:
|
||||
TokenComponentNameCached(const std::vector<std::string>& nameHierarchy);
|
||||
TokenComponentNameCached(const NameHierarchy& nameHierarchy);
|
||||
virtual ~TokenComponentNameCached();
|
||||
|
||||
virtual std::shared_ptr<TokenComponent> copy() const;
|
||||
|
||||
virtual std::string getName() const;
|
||||
virtual std::string getFullName() const;
|
||||
|
||||
virtual const SearchNode* getSearchNode() const;
|
||||
|
||||
private:
|
||||
std::vector<std::string> m_nameHierarchy; // TODO: use const NameHierarchy here
|
||||
};
|
||||
|
||||
#endif // TOKEN_COMPONENT_NAME_H
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "data/name/NameElement.h"
|
||||
|
||||
NameElement::NameElement(std::string name)
|
||||
NameElement::NameElement(const std::string& name)
|
||||
: m_name(name)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
class NameElement
|
||||
{
|
||||
public:
|
||||
NameElement(std::string name);
|
||||
NameElement(const std::string& name);
|
||||
~NameElement();
|
||||
|
||||
std::string getFullName() const;
|
||||
|
||||
@@ -4,6 +4,11 @@ NameHierarchy::NameHierarchy()
|
||||
{
|
||||
}
|
||||
|
||||
NameHierarchy::NameHierarchy(const std::string& name)
|
||||
{
|
||||
push(std::make_shared<NameElement>(name));
|
||||
}
|
||||
|
||||
NameHierarchy::~NameHierarchy()
|
||||
{
|
||||
}
|
||||
@@ -46,3 +51,13 @@ std::string NameHierarchy::getFullName() const
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
std::string NameHierarchy::getName() const
|
||||
{
|
||||
if (m_elements.size())
|
||||
{
|
||||
return m_elements.back()->getFullName();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ class NameHierarchy
|
||||
{
|
||||
public:
|
||||
NameHierarchy();
|
||||
NameHierarchy(const std::string& name);
|
||||
~NameHierarchy();
|
||||
|
||||
void push(std::shared_ptr<NameElement> element);
|
||||
@@ -20,6 +21,7 @@ public:
|
||||
size_t size() const;
|
||||
|
||||
std::string getFullName() const;
|
||||
std::string getName() const;
|
||||
|
||||
private:
|
||||
std::vector<std::shared_ptr<NameElement>> m_elements;
|
||||
|
||||
Reference in New Issue
Block a user