Files
Sourcetrail/src/lib/data/NodeKind.cpp
T

127 lines
2.4 KiB
C++

#include "NodeKind.h"
int nodeKindToInt(NodeKind kind)
{
return kind;
}
NodeKind intToNodeKind(int value)
{
switch (value)
{
case NODE_TYPE:
return NODE_TYPE;
case NODE_BUILTIN_TYPE:
return NODE_BUILTIN_TYPE;
case NODE_MODULE:
return NODE_MODULE;
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_ANNOTATION:
return NODE_ANNOTATION;
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_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_SYMBOL;
}
std::string getReadableNodeKindString(NodeKind kind)
{
switch (kind)
{
case NODE_SYMBOL:
return "symbol";
case NODE_BUILTIN_TYPE:
return "built-in type";
case NODE_TYPE:
return "type";
case NODE_MODULE:
return "module";
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_ANNOTATION:
return "annotation";
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_TYPE_PARAMETER:
return "type parameter";
case NODE_FILE:
return "file";
case NODE_MACRO:
return "macro";
case NODE_UNION:
return "union";
}
return "";
}
std::wstring getReadableNodeKindWString(NodeKind kind)
{
std::string str = getReadableNodeKindString(kind);
return std::wstring(str.begin(), str.end());
}
NodeKind getNodeKindForReadableNodeKindString(const std::wstring& str)
{
for (NodeKindMask mask = 1; mask <= NODE_MAX_VALUE; mask *= 2)
{
NodeKind kind = intToNodeKind(mask);
if (getReadableNodeKindWString(kind) == str)
{
return kind;
}
}
return NODE_SYMBOL;
}