Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Часть стола является структура данных , как правило , используется для представления ряда редактирует на текстовом документе . Создается начальная ссылка (или «диапазон») на весь исходный файл, а последующие вставки и удаления создаются как комбинации одной, двух или трех ссылок на разделы исходного документа или диапазонов, связанных с более ранними. вставки. [1]

Обычно текст исходного документа хранится в одном неизменяемом блоке, а текст каждой последующей вставки сохраняется в новых неизменяемых блоках. Поскольку даже удаленный текст по-прежнему включается в таблицу элементов, это упрощает выполнение многоуровневой или неограниченной отмены с таблицей элементов, чем с альтернативными структурами данных, такими как буфер промежутков .

Эта структура данных была изобретена Дж. Стротером Муром . [2]

Описание [ править ]

В этом описании мы используем буфер как неизменяемый блок для хранения содержимого.

Таблица штук состоит из трех столбцов: [1]

  • Какой буфер
  • Начальный индекс в буфере
  • Длина в буфере

Помимо таблицы, для обработки правок используются два буфера:

  • « Исходный буфер »: буфер исходного текстового документа. Этот буфер доступен только для чтения.
  • « Добавить буфер »: буфер во временный файл. Этот буфер предназначен только для добавления.

Операции [ править ]

Индекс [ править ]

Определение: Index(i) вернуть символ в позиции i

Чтобы получить i-й символ, считывается соответствующая запись в таблице штук.

Пример [ править ]

Учитывая следующие буферы и таблицу штук:

Чтобы получить доступ к i- му символу, ищется соответствующая запись в таблице штук.

Например, чтобы получить значение Index(15), извлекается 3-я запись таблицы частей. Это связано с тем, что третья запись описывает символы от 12 до 16 (первая запись описывает символы от 0 до 5, следующая - от 6 до 11). Запись в таблице элементов инструктирует программу искать символы в буфере « добавить файл », начиная с индекса 18 в этом буфере. Относительный индекс в этой записи 15-12 = 3, который добавляется к начальной позиции записи в буфере, чтобы получить индекс буквы: 3 + 18 = 21. Значение Index(15)- 21-й символ "добавить". файл "буфер", который представляет собой символ "о".

Для буферов и таблицы деталей, приведенных выше, показан следующий текст:

Lorem ipsum dolor sit amet

Вставить [ изменить ]

Вставка символов в текст состоит из:

  • Добавление символов в буфер «добавить файл» и
  • Обновление записи в таблице штук (разбиение записи на две или три)

Удалить [ редактировать ]

Удаление включает только изменение соответствующей записи в таблице штук.

Использование [ править ]

Некоторые текстовые редакторы используют внутреннюю таблицу фрагментов в ОЗУ, включая Bravo , [1] Abiword , [3] [4] [5] Atom [6] и Visual Studio Code . [7]

Функция «быстрого сохранения» в некоторых версиях Microsoft Word использует таблицу элементов для формата файла на диске. [2]

Для представления текстовых файлов на диске в системе Oberon используется метод цепочки блоков, который позволяет частям одного документа указывать на текст, хранящийся в другом документе, аналогично включению .[8]

См. Также [ править ]

Ссылки [ править ]

  1. ^ a b c Кроули, Чарльз (1998-06-10). «Структуры данных для текстовых последовательностей - 6.4 Метод таблицы элементов» (PDF) . Архивировано из оригинального (PDF) 23 февраля 2018 года. Цитировать журнал требует |journal=( помощь )
  2. ^ а б Дэвид Лу. "Что было сделано с использованием Таблицы предметов?" . ( обсуждение )
  3. ^ «Разработка AbiWord: Фон таблицы элементов» .
  4. ^ Джеймс Браун. «Цепочки частей: разработка и реализация текстового редактора Win32» .
  5. ^ Хоакин Куэнка Абела. «Улучшение таблицы пьес AbiWord» .
  6. ^ "Новая реализация буфера Atom с поддержкой параллелизма"
  7. ^ "Примечания к выпуску VS Code 1.21 ( исходный код )
  8. ^ Никлаус Вирт, Юрг Гуткнехт. «Проект Оберон: Дизайн операционной системы и компилятора». Архивировано 12 апреля 2013 г. на Wayback Machine . 2005. с. 90.