src: extract NoteType::Type to NodeKind (#925)
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user