C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122
Класс iobuf

Потоковый буфер с произвольным доступом , расширяет функциональность iobuf_Seq возможностью удаления и перезаписи файлов. Подробнее...

Граф наследования:iobuf:
[см. легенду]
Граф связей класса iobuf:
[см. легенду]

Открытые члены

 iobuf (uint16 clusterSize)
 Конструктор
 
virtual ~iobuf ()
 Деструктор.
 
virtual bool open (FileSpace &file, uint8 om, const VersionContainer &, bool fullCheck=true)
 Открыть файл, если он свой. Флаг fullCheck == false отключает избыточные проверки (ради производительности).
 
bool del (FileSpace &file)
 Освободить место, занимаемое файлом.
 
bool truncate (FileSpace &file, size_t from)
 Урезать файл. Подробнее...
 
bool speedOnClose () const
 Нужно ли упорядочивать при закрытии.
 
void speedOnClose (bool s)
 Установить флаг необходимости упорядочивания при закрытии.
 
virtual void free (size_t c)
 Освободить кластер.
 
- Открытые члены унаследованные от iobuf_Seq
 iobuf_Seq (uint16 clusterSize)
 Конструктор
 
virtual ~iobuf_Seq ()
 Деструктор.
 
void Reserve (size_t n, bool addAdditionalSpace=true)
 < Зарезервировать место под заданное количество элементов. Подробнее...
 
void Flush ()
 Освободить всю память.
 
void HardFlush ()
 Удалить лишнюю память.
 
void Adjust ()
 Добавить элемент в конец массива.
 
ClusterAdd ()
 Добавить данный элемент в конец массива.
 
ClusterAdd (const Cluster &e)
 Дать количество элементов массива.
 
Clusteroperator[] (size_t loc) const
 Оператор доступа по индексу. Подробнее...
 
int gc ()
 Получить следующий байт из буфера.
 
size_t getn (void *, size_t)
 Получить следующие n байт из буфера поэлементно.
 
size_t getln (void *, size_t)
 Получить следующие n байт из буфера копированием участка памяти.
 
int pc (uint8 c)
 Получить очередной байт из буфера, но указатель на следующий не сдвигать. Подробнее...
 
size_t putn (const void *, size_t)
 Поместить следующие n байт в буфер поэлементно
 
size_t putln (const void *, size_t)
 Поместить следующие n байт в буфер копированием участка памяти.
 
void advance ()
 Если кончился текущий буфер, переместить указатель на следующий.
 
bool good () const
 Корректно ли состояние буфера.
 
bool eof () const
 Достигнут ли конец файла?
 
uint32 state () const
 Получить состояние буфера.
 
void setState (io::state add)
 Добавить состояние буфера.
 
void clearState (io::state sub)
 Убрать состояние буфера.
 
io::pos size () const
 Посчитать размер текущего файла.
 
io::pos tell () const
 Возвращает текущую позицию в файле
 
void lseek (size_t pos=SYS_MAX_T)
 Установить текущую позицию в буфере
 
bool attach (FileSpace &file, bool check=true)
 Присоединить файл к буферу с проверкой или без.
 
bool openSys (uint8 om)
 Открыть системный файл.
 
virtual void close ()
 Закрыть файл.
 
virtual void closeBuff ()
 Закрыть буфер.
 
virtual FileSpaceenterFileSpace (uint8)
 Установить для записи FileSpace с заданным индексом (при необходимости создать новый).
 
virtual FileSpaceenterFileSpace (const ClusterReference &, bool)
 Установить позицию для записи/чтения по заданному ClusterReference. Сохранить предыдущую позицию, если saveCurr = true.
 
virtual FileSpaceenterFileSpace (const ClusterReference &, FileSpace *, bool)
 Установить позицию для записи/чтения по заданным FileSpace и ClusterReference. Внимание, здесь ClusterReference.clusterIndex должен содержать индекс в массиве индексов кластеров в FileSpace! Сохранить предыдущую позицию, если saveCurr = true.
 
virtual FileSpacereturnToPreviousFileSpace ()
 Установить предыдущий FileSpace для записи/чтения.
 
ClusterReference getCurrentClusterPos ()
 Получить текущую позицию в буфере.
 
FileSpacesysFile ()
 Получить доступ к системному файлу.
 
FileSpaceopenedFile () const
 Получить доступ к открытому файлу.
 
virtual size_t DOSFileLen () const
 Размер данных хранилища (файла на диске).
 
virtual const TCHAR * DOSFileName () const
 Имя хранилища (файла на диске).
 
bool fresh () const
 Свежий ли буфер?
 
void fresh (bool f)
 Установить состояние свежести буфера.
 
bool modified () const
 Модифицирован ли буфер?
 
void modified (bool m)
 Установить состояние модифицированности буфера.
 
uint8 mode () const
 Узнать режим работы буфера.
 
void mode (uint8 m)
 Установить режим работы буфера.
 
bool IsInMode () const
 Находимся в режиме чтения?
 
bool IsOutMode () const
 Находимся в режиме записи?
 
bool IsInOrOutMode () const
 Находимся в режиме чтения или записи?
 
bool deleteIfEmpty () const
 Нужно ли удалять пустой файл?
 
void deleteIfEmpty (bool s)
 Установить флаг необходимости удаления пустого файла.
 
bool deleteOnClose () const
 Нужно ли удалять файл при закрытии буфера?
 
void deleteOnClose (bool s)
 Установить флаг необходимости удаления файла при закрытии буфера.
 
void SetVersionsByStorage ()
 Установить текущую версию равной версии хранилища.
 
VERSION MathVersion () const
 Вернуть главную версию (математического ядра).
 
VERSION AppVersion (size_t ind=-1) const
 Вернуть дополнительную версию (конечного приложения).
 
const VersionContainerGetVersionsContainer () const
 Получить версии буфера.
 
VERSION GetStorageVersion ()
 Узнать версию хранилища.
 
VERSION GetFormatVersion () const
 Узнать версию формата.
 
void SetFormatVersion (VERSION version)
 Установить версию формата.
 

Защищенные данные

FileSpace freed
 Список освобожденных кластеров.
 
- Защищенные данные унаследованные от iobuf_Seq
uint8 * base
 Указатель на начало буфера.
 
uint8 * ptr
 Указатель на следующий байт.
 
uint8 * end
 Указатель на конец буфера.
 
VERSION storageVers
 Версия хранилища (должна быть ранее curFileVers).
 
VersionContainer curFileVers
 Версии текущего открытого файла (потока).
 
VERSION formatVersion
 Версия формата.
 
FileSpace sys
 Системный файл.
 
PArray< FileSpacefiles
 Список файлов содержащихся в iobuf_Seq (первый элемент - адрес sys).
 
FileSpacecurr
 Текущий открытый файл (поток).
 
size_t part
 Текущий кластер в текущем открытом файле.
 
uint16 clusterSize
 Размер кластера.
 
uint8 bufferMode
 Режим работы буфера.
 
uint8 curFileMode
 Режим открытия текущего файла.
 
bool modifiedFlag
 Буфер модифицирован.
 
bool freshFlag
 Свежий ли буфер.
 

Друзья

class tape
 

Дополнительные унаследованные члены

- Защищенные члены унаследованные от iobuf_Seq
int underflow ()
 Вызывается когда прочитан весь буфер, а еще хочется.
 
int overflow (uint8 ch)
 Вызывается когда заполнен весь буфер, а еще хочется.
 
virtual int setup ()=0
 Установить следующий буфер.
 
virtual int flush ()=0
 Сбросить буфер.
 
void checkEof ()
 Установить конец файла, если необходимо.
 
size_t avail () const
 Узнать количество необработанных байт в буфере.
 
size_t waiting () const
 Узнать количество обработанных байт в буфере.
 
bool mine (FileSpace &)
 Проверить, мой ли это файл.
 
void SetVersionsContainer (const VersionContainer &vers)
 Установить версию открытого файла.
 
VERSION SetStorageVersion (VERSION)
 Установить версию хранилища.
 

Подробное описание

Потоковый буфер с произвольным доступом , расширяет функциональность iobuf_Seq возможностью удаления и перезаписи файлов.

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

Методы

◆ truncate()

bool iobuf::truncate ( FileSpace file,
size_t  from 
)

Урезать файл.

Отсоединить файл от буфера.


Объявления и описания членов класса находятся в файле: