/* SPDX-FileCopyrightText: (C) 2026 Vladimir Zorin * SPDX-License-Identifier: LicenseRef-OWL-1.0-or-later * Licensed under OWL v1.0+. See LICENSE. */ #ifndef LEM_PIECE_TABLE_H #define LEM_PIECE_TABLE_H #include typedef struct lem_piece_table lem_piece_table_t; lem_piece_table_t *lem_pt_new(const char *content, size_t len); void lem_pt_free(lem_piece_table_t *pt); int lem_pt_insert(lem_piece_table_t *pt, size_t offset, const char *text, size_t len); int lem_pt_delete(lem_piece_table_t *pt, size_t offset, size_t len); size_t lem_pt_length(lem_piece_table_t *pt); size_t lem_pt_get_text(lem_piece_table_t *pt, size_t offset, size_t len, char *buf, size_t buf_size); size_t lem_pt_line_count(lem_piece_table_t *pt); size_t lem_pt_line_offset(lem_piece_table_t *pt, size_t line); size_t lem_pt_line_length(lem_piece_table_t *pt, size_t line); size_t lem_pt_offset_to_line(lem_piece_table_t *pt, size_t offset); int lem_pt_undo(lem_piece_table_t *pt); int lem_pt_redo(lem_piece_table_t *pt); void lem_pt_group_open(lem_piece_table_t *pt); void lem_pt_group_close(lem_piece_table_t *pt); char *lem_pt_snapshot(lem_piece_table_t *pt, size_t *out_len); #endif