mirror of
https://github.com/MaskRay/ccls.git
synced 2025-06-09 01:34:55 +00:00
56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
/* Copyright 2017-2018 ccls Authors
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
==============================================================================*/
|
|
|
|
#pragma once
|
|
|
|
#include "lsp.h"
|
|
#include "serializer.h"
|
|
|
|
// The order matters. In FindSymbolsAtLocation, we want Var/Func ordered in
|
|
// front of others.
|
|
enum class SymbolKind : uint8_t { Invalid, File, Type, Func, Var };
|
|
MAKE_REFLECT_TYPE_PROXY(SymbolKind);
|
|
|
|
enum class Role : uint16_t {
|
|
None = 0,
|
|
Declaration = 1 << 0,
|
|
Definition = 1 << 1,
|
|
Reference = 1 << 2,
|
|
Read = 1 << 3,
|
|
Write = 1 << 4,
|
|
Call = 1 << 5,
|
|
Dynamic = 1 << 6,
|
|
Address = 1 << 7,
|
|
Implicit = 1 << 8,
|
|
All = (1 << 9) - 1,
|
|
};
|
|
MAKE_REFLECT_TYPE_PROXY(Role);
|
|
|
|
inline uint16_t operator&(Role lhs, Role rhs) {
|
|
return uint16_t(lhs) & uint16_t(rhs);
|
|
}
|
|
|
|
inline Role operator|(Role lhs, Role rhs) {
|
|
return Role(uint16_t(lhs) | uint16_t(rhs));
|
|
}
|
|
|
|
struct lsSymbolInformation {
|
|
std::string_view name;
|
|
lsSymbolKind kind;
|
|
lsLocation location;
|
|
std::optional<std::string_view> containerName;
|
|
};
|
|
MAKE_REFLECT_STRUCT(lsSymbolInformation, name, kind, location, containerName);
|