data: saving NameHierarchy directly to Node without TokenComponentName

This commit is contained in:
Eberhard Graether
2015-09-23 12:45:58 +02:00
parent b07bc7ed19
commit 391082160c
13 changed files with 69 additions and 219 deletions
@@ -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