Serenity Operating System
1/*
2 * Copyright (c) 2020, the SerenityOS developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <stddef.h>
10
11namespace Line {
12
13class Span {
14public:
15 enum Mode {
16 ByteOriented,
17 CodepointOriented,
18 };
19
20 Span(size_t start, size_t end, Mode mode = ByteOriented)
21 : m_beginning(start)
22 , m_end(end)
23 , m_mode(mode)
24 {
25 }
26
27 size_t beginning() const { return m_beginning; }
28 size_t end() const { return m_end; }
29 Mode mode() const { return m_mode; }
30
31 bool is_empty() const
32 {
33 return m_beginning < m_end;
34 }
35
36private:
37 size_t m_beginning { 0 };
38 size_t m_end { 0 };
39 Mode m_mode { CodepointOriented };
40};
41
42}