#include <utilities/memory_handler.h>
Открытые члены | |
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 ) ); } }
std::string nitro::MemoryDescription::BlockDescription [private] |
Описание выделенного блока памяти.
См. определение в файле memory_handler.h строка 182
Используется в MemoryDescription().
void* nitro::MemoryDescription::MemoryBlock [private] |
Указатель на хранимый блок памяти.
См. определение в файле memory_handler.h строка 158
Используется в AddressIn() и MemoryDescription().
std::size_t nitro::MemoryDescription::MemoryBlockSize [private] |
Размер хранимого блока памяти.
См. определение в файле memory_handler.h строка 170
Используется в AddressIn() и MemoryDescription().
std::vector< PointerInterface * > nitro::MemoryDescription::NestedPointers [private] |
Массив с указателями расположенными в описываемом блоке памяти.
См. определение в файле memory_handler.h строка 206
Используется в RegisterPointer() и ReleaseNestedPointers().
std::size_t nitro::MemoryDescription::ReferenceCounter [private] |
Счетчик ссылок.
См. определение в файле memory_handler.h строка 194
Используется в MemoryDescription(), OnAssigned() и OnCopied().