Serenity Operating System
at master 42 lines 715 B view raw
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}