src: converted NodeType to a class
NodeType internally still uses the Type enum
This commit is contained in:
+9
-162
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user