Функции доступа к данным
TDocument предусматривает ряд функций для доступа к данным.
Вы можете обращаться к данным в простом последовательном потоке
или тем способом, который зададите в производных классах.
TDocument предусматривает две функции InStream и OutStream,
которые возвращают указатель на TInStream и TOutStream. Базовые
версии этих функций не выполняют никаких действий и возвращают 0.
В производном классе их нужно переопределить, чтобы они возвращали указатель на объект. Таким образом вы можете обеспечить в
классе документа доступ к потокам.
TInStream и TOutStream - это абстрактные базовые классы,
производные от isteam и ostream класса TStream. TStream обеспечивает минимальные функции для связи потока с документом, а isteam
и ostream - это стандартные потоки С++. Из TInStream и TOutStream
нужно создать производные потоковые классы, специфические для
приложения. Эти классы имеют функции для работы с потоками.
Каждый документ поддерживает список открытых потоков, который обновляет при добавлении или удалении потоков. В начале этого
списка находится элемент данных StreamList класса TDocument, который указывает первый поток в списке или содержит 0. Каждый объект TStream в списке имеет функцию-элемент NextStream, которая
указывает на следующий поток в списке.
Потоки могут обеспечивать только простой последовательный
доступ к данным. Если документы содержат файлы мультимедиа, таблицы баз данных или другие сложные данных, то вам потребуются более развитые методы доступа. Для этой цели в TDocument имеется
еще две функции доступа - Open и Close, которые вы можете переопределить и задать нужное поведение при открытии и закрытии. На
определение открытия документа никаких ограничений не накладывается. Вы можете задать настолько простое или сложное открытие,
насколько это требуется.
Close обеспечивает несколько больше функциональных возможностей. Эта функция проверяет существующие дочерние объекты документа и перед закрытием документа пытается закрыть их все. Данная
функция позволяет закрыть документ, когда это требуется.
TDocument имеет также ряд функций, позволяющих вам защитить
данные. IsDirty проверяет, был ли документ модифицирован. IsOpen
проверяет состояние документа (открыт он или нет) или наличие потоков в списке. Commit сохраняет изменения данных в памяти. Revert выполняет действие, обратное Commit.