C3D Kernel  104065
Классы | Открытые члены | Защищенные члены | Защищенные данные | Друзья

Потоковый буфер памяти. Подробнее...

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

Полный список членов класса

Классы

struct  FileStackEntry

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

 membuf ()
 Конструктор.
virtual ~membuf ()
 Деструктор.
bool isEmpty () const
 Буфер пуст?
size_t toMemory (const char *&memory, size_t addSize=0) const
 Записать в непрерывную память.
bool fromMemory (const char *memory)
 Прочитать из непрерывной памяти.
size_t getMemLen () const
 Вычислить необходимую длину непрерывного куска памяти для буфера.
void setMaxRegCount (size_t n)
size_t getMaxRegCount () const
readerread (reader &in)
 Подготовить поток чтения.
writerwrite (writer &out) const
 Подготовить поток записи.
void clean ()
 Очистить буфер.
virtual void closeBuff ()
 Закрыть буфер.

Защищенные члены

virtual int setup ()
 Установить буфер для следующего кластера.
virtual int flush ()
 Cбросить буфер.
void PrepareToRead (const VersionContainer &vers)
 Инициировать все поля перед чтением.
virtual FileSpaceenterFileSpace (uint8 level)
 Установить новый FileSpace для записи объекта уровня level.
virtual FileSpaceenterFileSpace (ClusterReference &ref, bool updateStack)
virtual FileSpaceenterFileSpace (ClusterReference &ref, FileSpace *file, bool updateStacke)
virtual FileSpacereturnToPreviousFileSpace ()
 Извлечь предыдущий FileSpace из стека и установить его для записи/чтения.

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

size_t maxRegCount
 Максимальное количество регистрируемых объектов.
std::vector< FileSpace * > filesPool
std::stack< FileStackEntryfilesStack
std::map< size_t, std::pair
< FileSpace *, size_t > > 
fileClusterIndexCache

Друзья

readeroperator>> (reader &in, membuf *&ptr)
 Оператор чтения.
readeroperator>> (reader &in, membuf &ref)
 Оператор чтения.
writeroperator<< (writer &out, const membuf *ptr)
 Оператор записи.
writeroperator<< (writer &out, const membuf &ref)
 Оператор записи.

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

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


Методы

void membuf::clean ( )

Закрыть буфер.

virtual FileSpace* membuf::enterFileSpace ( ClusterReference ref,
bool  updateStack 
) [protected, virtual]

Установить позицию для записи/чтения по заданному ClusterReference. Сохранить предыдущую позицию в стеке File Spaces, если updateStack = true.

Переопределяет метод предка iobuf_Seq.

virtual FileSpace* membuf::enterFileSpace ( ClusterReference ref,
FileSpace file,
bool  updateStacke 
) [protected, virtual]

Установить позицию для записи/чтения по заданным FileSpace и ClusterReference. Внимание, в данном случае ClusterReference.clusterIndex указывает на индекс в массиве индексов кластеров в FileSpace! Сохранить предыдущую позицию в стеке File Spaces, если updateStack = true.

Переопределяет метод предка iobuf_Seq.


Данные класса

std::vector<FileSpace *> membuf::filesPool [protected]

Вектор filesPool хранит все используемые FileSpaces ,кроме sys, который определен в iobuf_Seq. При использовании расширенного формата объекты каждого уровня записываются в отдельный FileSpace. При этом индекс FileSpace в векторе соответствует уровню объекта в модели.

std::map<size_t, std::pair<FileSpace *, size_t> > membuf::fileClusterIndexCache [protected]

Кэш для данных о кластерах в FileSpace. map: индекс кластера в массиве кластеров iobuf_Seq -> данные FileSpace (указатель на FileSpace и индекс в массиве индексов кластеров).


Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы