2018-01-17 01:48:22 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "serializer.h"
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
// TODO Rename query.h:SymbolKind to another name
|
|
|
|
// clang/Index/IndexSymbol.h clang::index::SymbolKind
|
|
|
|
enum class ClangSymbolKind : uint8_t {
|
|
|
|
Unknown,
|
|
|
|
|
|
|
|
Module = 1,
|
|
|
|
Namespace,
|
|
|
|
NamespaceAlias,
|
|
|
|
Macro,
|
|
|
|
|
|
|
|
Enum = 5,
|
|
|
|
Struct,
|
|
|
|
Class,
|
|
|
|
Protocol,
|
|
|
|
Extension,
|
|
|
|
Union,
|
|
|
|
TypeAlias,
|
|
|
|
|
|
|
|
Function = 12,
|
|
|
|
Variable,
|
|
|
|
Field,
|
|
|
|
EnumConstant,
|
|
|
|
|
|
|
|
InstanceMethod = 16,
|
|
|
|
ClassMethod,
|
|
|
|
StaticMethod,
|
|
|
|
InstanceProperty,
|
|
|
|
ClassProperty,
|
|
|
|
StaticProperty,
|
|
|
|
|
|
|
|
Constructor = 22,
|
|
|
|
Destructor,
|
|
|
|
ConversionFunction,
|
|
|
|
|
|
|
|
Parameter = 25,
|
|
|
|
Using,
|
|
|
|
};
|
2018-01-30 00:35:01 +00:00
|
|
|
MAKE_REFLECT_TYPE_PROXY(ClangSymbolKind);
|
2018-01-17 01:48:22 +00:00
|
|
|
|
2018-01-26 17:28:29 +00:00
|
|
|
// clang/Basic/Specifiers.h clang::StorageClass
|
2018-01-28 04:25:14 +00:00
|
|
|
enum class StorageClass : uint8_t {
|
2018-01-26 17:28:29 +00:00
|
|
|
// In |CX_StorageClass| but not in |clang::StorageClass|
|
2018-01-28 04:25:14 +00:00
|
|
|
// e.g. non-type template parameters
|
|
|
|
Invalid,
|
2018-01-26 17:28:29 +00:00
|
|
|
|
|
|
|
// These are legal on both functions and variables.
|
2018-01-28 04:25:14 +00:00
|
|
|
// e.g. global functions/variables, local variables
|
|
|
|
None,
|
|
|
|
Extern,
|
|
|
|
Static,
|
|
|
|
// e.g. |__private_extern__ int a;|
|
|
|
|
PrivateExtern,
|
2018-01-26 17:28:29 +00:00
|
|
|
|
|
|
|
// These are only legal on variables.
|
2018-01-28 04:25:14 +00:00
|
|
|
// e.g. explicit |auto int a;|
|
|
|
|
Auto,
|
|
|
|
Register
|
2018-01-26 17:28:29 +00:00
|
|
|
};
|
2018-01-30 00:35:01 +00:00
|
|
|
MAKE_REFLECT_TYPE_PROXY(StorageClass);
|
2018-01-29 04:39:41 +00:00
|
|
|
|
|
|
|
enum class SymbolRole : uint8_t {
|
|
|
|
Declaration = 1 << 0,
|
|
|
|
Definition = 1 << 1,
|
|
|
|
Reference = 1 << 2,
|
|
|
|
Implicit = 1 << 3,
|
|
|
|
|
|
|
|
ChildOf = 1 << 4,
|
|
|
|
BaseOf = 1 << 5,
|
|
|
|
CalledBy = 1 << 6,
|
|
|
|
};
|
2018-01-30 00:35:01 +00:00
|
|
|
MAKE_REFLECT_TYPE_PROXY(SymbolRole);
|
2018-01-29 04:39:41 +00:00
|
|
|
|
|
|
|
inline uint8_t operator&(SymbolRole lhs, SymbolRole rhs) {
|
|
|
|
return uint8_t(lhs) & uint8_t(rhs);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline SymbolRole operator|(SymbolRole lhs, SymbolRole rhs) {
|
|
|
|
return SymbolRole(uint8_t(lhs) | uint8_t(rhs));
|
|
|
|
}
|