Открытые члены | Закрытые данные

Класс nitro::MemoryDescription

#include <utilities/memory_handler.h>

Граф связей класса nitro::MemoryDescription:
Collaboration graph
[см. легенду]

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

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

 MemoryDescription (void *theMemoryBlock, const std::size_t theMemoryBlockSize, const std::string &theBlockDescription)
void OnAssigned (void)
void OnCopied (void)
bool AddressIn (void *Address)
void RegisterPointer (PointerInterface *Ptr)
void ReleaseNestedPointers (void)

Закрытые данные

void * MemoryBlock
std::size_t MemoryBlockSize
std::string BlockDescription
std::size_t ReferenceCounter
std::vector< PointerInterface * > NestedPointers

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

Класс, чьи объекты хранят описание выделенного блока памяти.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 39


Конструктор(ы)

nitro::MemoryDescription::MemoryDescription ( void *  theMemoryBlock,
const std::size_t  theMemoryBlockSize,
const std::string &  theBlockDescription 
)

Конструктор.

Аргументы:
theMemoryBlock - Указатель на блок выделенной памяти.
theMemoryBlockSize - Размер выделенного блока памяти.
theBlockDescription - Описание выделенного блока памяти.
Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 8

Перекрестные ссылки BlockDescription, nitro::exception::code(), MemoryBlock, MemoryBlockSize, ReferenceCounter и nitro::exception::what().

        {
                try
                {
                        MemoryBlock = theMemoryBlock;
                
                        MemoryBlockSize = theMemoryBlockSize;
                        
                        BlockDescription = theBlockDescription;
                        
                        ReferenceCounter = 1;
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::MemoryDescription( const void * theMemoryBlock , const std::size_t theMemoryBlockSize , const std::string & theBlockDescription )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::MemoryDescription( const void * theMemoryBlock , const std::size_t theMemoryBlockSize , const std::string & theBlockDescription )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:


Методы

bool nitro::MemoryDescription::AddressIn ( void *  Address  ) 

Функция проверки, находится ли адрес Address внутри выделенного блока памяти.

Аргументы:
Address - Проверяемый адрес.
Исключения:
nitro::exception Кидается исключение этого типа с описанием ошибки и её кодом.
Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 62

Перекрестные ссылки nitro::exception::code(), MemoryBlock, MemoryBlockSize и nitro::exception::what().

Используется в RegisterPointer().

        {
                try
                {
                        return( MemoryBlock >= Address && Address <= ( ( char * )MemoryBlock ) + MemoryBlockSize );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::AddressIn( void * Address )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::AddressIn( void * Address )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::MemoryDescription::OnAssigned ( void   ) 

Функция вызывается, когда значение указателя инициализируется новым адресом.

Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 30

Перекрестные ссылки nitro::exception::code(), ReferenceCounter и nitro::exception::what().

        {
                try
                {
                        ReferenceCounter--;
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::OnAssigned( void )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::OnAssigned( void )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::MemoryDescription::OnCopied ( void   ) 

Функция вызывается, когда значение указателя использутется для инициализации другого указателя.

Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 46

Перекрестные ссылки nitro::exception::code(), ReferenceCounter и nitro::exception::what().

        {
                try
                {
                        ReferenceCounter++;
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::OnCopied( void )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::OnCopied( void )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::MemoryDescription::RegisterPointer ( PointerInterface Ptr  ) 

Функция регистрирует указатель, расположенный в описываемом блоке.

Аргументы:
Ptr - Регистрируемый указатель.
Исключения:
nitro::exception - Кидается исключение этого типа с описанием ошибки и её кодом.
Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 78

Перекрестные ссылки AddressIn(), nitro::exception::code(), NestedPointers и nitro::exception::what().

        {
                try
                {
                        if( AddressIn( ( void * ) Ptr ) )
                        {
                                NestedPointers.push_back( Ptr );
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::RegisterPointer( PointerInterface * Ptr )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::RegisterPointer( PointerInterface * Ptr )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::MemoryDescription::ReleaseNestedPointers ( void   ) 

Функция освобождает всю память через зарегистрированные указатели.

Исключения:
nitro::exception - Кидается исключение этого типа с описанием ошибки и её кодом.
Автор:
Додонов А.А.

См. определение в файле memory_handler.cpp строка 97

Перекрестные ссылки nitro::exception::code(), NestedPointers и nitro::exception::what().

        {
                try
                {
                        for( std::size_t i( 0 ) ; i < NestedPointers.size() ; i++ )
                        {
                                NestedPointers[ i ]->Release();
                        }

                        NestedPointers.erase( NestedPointers.begin() , NestedPointers.end() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::RegisterPointer( PointerInterface * Ptr )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MemoryDescription::RegisterPointer( PointerInterface * Ptr )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:


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

Описание выделенного блока памяти.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 182

Используется в MemoryDescription().

Указатель на хранимый блок памяти.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 158

Используется в AddressIn() и MemoryDescription().

Размер хранимого блока памяти.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 170

Используется в AddressIn() и MemoryDescription().

Массив с указателями расположенными в описываемом блоке памяти.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 206

Используется в RegisterPointer() и ReleaseNestedPointers().

Счетчик ссылок.

Автор:
Додонов А.А.

См. определение в файле memory_handler.h строка 194

Используется в MemoryDescription(), OnAssigned() и OnCopied().


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

Generated by  doxygen 1.6.1