mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 21:08:12 +00:00
LibSyntax+Userland: Make LibSyntax not depend on LibGUI
This moves some stuff around to make LibGUI depend on LibSyntax instead of the other way around, as not every application that wishes to do syntax highlighting is necessarily a LibGUI (or even a GUI) application.
This commit is contained in:
parent
2495302991
commit
ba4db899d4
26 changed files with 773 additions and 683 deletions
53
Userland/Libraries/LibSyntax/TextPosition.h
Normal file
53
Userland/Libraries/LibSyntax/TextPosition.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2023, Ali Mohammad Pur <mpfard@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Format.h>
|
||||
|
||||
namespace Syntax {
|
||||
|
||||
class TextPosition {
|
||||
public:
|
||||
TextPosition() = default;
|
||||
TextPosition(size_t line, size_t column)
|
||||
: m_line(line)
|
||||
, m_column(column)
|
||||
{
|
||||
}
|
||||
|
||||
bool is_valid() const { return m_line != 0xffffffffu && m_column != 0xffffffffu; }
|
||||
|
||||
size_t line() const { return m_line; }
|
||||
size_t column() const { return m_column; }
|
||||
|
||||
void set_line(size_t line) { m_line = line; }
|
||||
void set_column(size_t column) { m_column = column; }
|
||||
|
||||
bool operator==(TextPosition const& other) const { return m_line == other.m_line && m_column == other.m_column; }
|
||||
bool operator!=(TextPosition const& other) const { return m_line != other.m_line || m_column != other.m_column; }
|
||||
bool operator<(TextPosition const& other) const { return m_line < other.m_line || (m_line == other.m_line && m_column < other.m_column); }
|
||||
bool operator>(TextPosition const& other) const { return *this != other && !(*this < other); }
|
||||
bool operator>=(TextPosition const& other) const { return *this > other || (*this == other); }
|
||||
|
||||
private:
|
||||
size_t m_line { 0xffffffff };
|
||||
size_t m_column { 0xffffffff };
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
template<>
|
||||
struct AK::Formatter<Syntax::TextPosition> : AK::Formatter<FormatString> {
|
||||
ErrorOr<void> format(FormatBuilder& builder, Syntax::TextPosition const& value)
|
||||
{
|
||||
if (value.is_valid())
|
||||
return Formatter<FormatString>::format(builder, "({},{})"sv, value.line(), value.column());
|
||||
|
||||
return builder.put_string("TextPosition(Invalid)"sv);
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue