1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:57:43 +00:00

LibCodeComprehension: Re-organize code comprehension related code

This moves all code comprehension-related code to a new library,
LibCodeComprehension.

This also moves some types related to code comprehension tasks (such as
autocomplete, find declaration) out of LibGUI and into
LibCodeComprehension.
This commit is contained in:
Itamar 2022-05-14 17:09:24 +03:00 committed by Andreas Kling
parent a2c34554cd
commit b35293d945
65 changed files with 685 additions and 491 deletions

View file

@ -16,7 +16,7 @@
namespace IPC {
template<>
inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::Entry& response)
inline bool encode(Encoder& encoder, CodeComprehension::AutocompleteResultEntry const& response)
{
encoder << response.completion;
encoder << response.partial_input_length;
@ -27,7 +27,7 @@ inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::Entry& res
}
template<>
inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::Entry& response)
inline ErrorOr<void> decode(Decoder& decoder, CodeComprehension::AutocompleteResultEntry& response)
{
TRY(decoder.decode(response.completion));
TRY(decoder.decode(response.partial_input_length));
@ -38,7 +38,7 @@ inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::Entry&
}
template<>
inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::ProjectLocation& location)
inline bool encode(Encoder& encoder, CodeComprehension::ProjectLocation const& location)
{
encoder << location.file;
encoder << location.line;
@ -47,7 +47,7 @@ inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::ProjectLoc
}
template<>
inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::ProjectLocation& location)
inline ErrorOr<void> decode(Decoder& decoder, CodeComprehension::ProjectLocation& location)
{
TRY(decoder.decode(location.file));
TRY(decoder.decode(location.line));
@ -56,7 +56,7 @@ inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::Project
}
template<>
inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::Declaration& declaration)
inline bool encode(Encoder& encoder, CodeComprehension::Declaration const& declaration)
{
encoder << declaration.name;
if (!encode(encoder, declaration.position))
@ -67,7 +67,7 @@ inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::Declaratio
}
template<>
inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::Declaration& declaration)
inline ErrorOr<void> decode(Decoder& decoder, CodeComprehension::Declaration& declaration)
{
TRY(decoder.decode(declaration.name));
TRY(decoder.decode(declaration.position));
@ -77,7 +77,7 @@ inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::Declara
}
template<>
inline bool encode(Encoder& encoder, Cpp::Parser::TodoEntry const& entry)
inline bool encode(Encoder& encoder, CodeComprehension::TodoEntry const& entry)
{
encoder << entry.content;
encoder << entry.filename;
@ -87,7 +87,7 @@ inline bool encode(Encoder& encoder, Cpp::Parser::TodoEntry const& entry)
}
template<>
inline ErrorOr<void> decode(Decoder& decoder, Cpp::Parser::TodoEntry& entry)
inline ErrorOr<void> decode(Decoder& decoder, CodeComprehension::TodoEntry& entry)
{
TRY(decoder.decode(entry.content));
TRY(decoder.decode(entry.filename));
@ -97,7 +97,7 @@ inline ErrorOr<void> decode(Decoder& decoder, Cpp::Parser::TodoEntry& entry)
}
template<>
inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::TokenInfo& location)
inline bool encode(Encoder& encoder, CodeComprehension::TokenInfo const& location)
{
encoder << (u32)location.type;
static_assert(sizeof(location.type) == sizeof(u32));
@ -109,13 +109,13 @@ inline bool encode(Encoder& encoder, const GUI::AutocompleteProvider::TokenInfo&
}
template<>
inline ErrorOr<void> decode(Decoder& decoder, GUI::AutocompleteProvider::TokenInfo& entry)
inline ErrorOr<void> decode(Decoder& decoder, CodeComprehension::TokenInfo& entry)
{
u32 semantic_type { 0 };
static_assert(sizeof(semantic_type) == sizeof(entry.type));
TRY(decoder.decode(semantic_type));
entry.type = static_cast<GUI::AutocompleteProvider::TokenInfo::SemanticType>(semantic_type);
entry.type = static_cast<CodeComprehension::TokenInfo::SemanticType>(semantic_type);
TRY(decoder.decode(entry.start_line));
TRY(decoder.decode(entry.start_column));
TRY(decoder.decode(entry.end_line));