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

Шаблон класса nitro::ObjectManagerBasic< managing_class >

Класс для хранения объектов. Подробнее...

#include <managers/object_manager.h>

Производные классы:nitro::LocalObjectManager< managing_class > и nitro::ObjectManager< managing_class >.

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

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

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

managing_class * operator[] (const int ObjectCursor) const
managing_class * operator[] (const std::size_t ObjectCursor) const
managing_class * operator[] (const char *ObjectName) const
managing_class * operator[] (const std::string &ObjectName) const
managing_class * Back (void)
virtual void Release (void)
std::size_t GetObjectCursor (const std::string &ObjectName) const
std::size_t GetObjectCursor (const char *ObjectName) const
bool ObjectExists (const std::string &ObjectName) const
bool ObjectExists (const char *ObjectName) const
void DeleteObject (const std::string &ObjectName)
void DeleteObject (const char *ObjectName)
std::size_t Count (void) const
virtual ~ObjectManagerBasic ()

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

std::vector< std::pair
< std::string, managing_class * > > 
Objects

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

template<class managing_class>
class nitro::ObjectManagerBasic< managing_class >

Класс для хранения объектов.

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

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


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

template<class managing_class >
nitro::ObjectManagerBasic< managing_class >::~ObjectManagerBasic (  )  [virtual]

Деструктор.

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

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

Перекрестные ссылки nitro::ObjectManagerBasic< managing_class >::Release().

        {
                try
                {
                        Release();
                }
                catch( ... )
                {
                }
        }

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


Методы

template<class managing_class >
managing_class * nitro::ObjectManagerBasic< managing_class >::Back ( void   ) 

Функция возвращает последний объект.

Возвращает:
Указатель на последний объект.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        if( Objects.size() == 0 )
                        {
                                throw( nitro::exception( std::string( "There are no objects in the manager" ) , 1 ) );
                        }

                        return( Objects.back() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const str_type ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const str_type ObjectName )::An error occured" ) , 1 ) );
                }

                // типа чтобы ворнинг задавить, хотя на самом деле сюда никогда управление не передастся
                return( ( managing_class * )NULL );
        }

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

template<class managing_class >
std::size_t nitro::ObjectManagerBasic< managing_class >::Count ( void   )  const

Функция возвращает количество хранимых объектов.

Возвращает:
Количество хранимых объектов.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

Используется в nitro::MVC::ExecuteCommand().

        {
                try
                {
                        return( Objects.size() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::Count( void )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::Count( void )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
void nitro::ObjectManagerBasic< managing_class >::DeleteObject ( const std::string &  ObjectName  ) 

Функция удаляет именованный объект.

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

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

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

        {
                try
                {
                        DeleteObject( ObjectName.c_str() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::DeleteObject( const str_type & ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::DeleteObject( const str_type & ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
void nitro::ObjectManagerBasic< managing_class >::DeleteObject ( const char *  ObjectName  ) 

Функция удаляет именованный объект.

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

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::GetObjectCursor(), nitro::ObjectManagerBasic< managing_class >::ObjectExists(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        if( ObjectExists( ObjectName ) == false )
                        {
                                throw( std::string( "Object \"" ) + ObjectName + "\" does not exist" );
                        }
                        else
                        {                                       
                                // удаляем элемент массива
                                Objects.erase( Objects.begin() + GetObjectCursor( ObjectName ) );
                                
                                // после этого все курсоры становятся невалидными
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::DeleteObject( const char * ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::DeleteObject( const char * ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
std::size_t nitro::ObjectManagerBasic< managing_class >::GetObjectCursor ( const char *  ObjectName  )  const

Функция получения курсора объекта по его имени.

Аргументы:
ObjectName - имя объекта.
Возвращает:
Курсор объекта.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        for( std::size_t i( 0 ) ; i < Objects.size() ; i++ )
                        {
                                if( Objects[ i ].first == ObjectName )
                                {
                                        return( i );
                                }
                        }
                        
                        throw( nitro::exception( std::string( "Object \"" ) + ObjectName + "\" was not found" , 1 ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const char * ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const char * ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
std::size_t nitro::ObjectManagerBasic< managing_class >::GetObjectCursor ( const std::string &  ObjectName  )  const

Функция получения курсора объекта по его имени.

Аргументы:
ObjectName - имя объекта.
Возвращает:
Курсор объекта.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

Используется в nitro::ObjectManagerBasic< managing_class >::DeleteObject().

        {
                try
                {
                        for( std::size_t i( 0 ) ; i < Objects.size() ; i++ )
                        {
                                if( Objects[ i ].first == ObjectName )
                                {
                                        return( i );
                                }
                        }
                        
                        throw( nitro::exception( std::string( "Object \"" ) + ObjectName + "\" was not found" , 1 ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const std::string & ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const std::string & ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
bool nitro::ObjectManagerBasic< managing_class >::ObjectExists ( const std::string &  ObjectName  )  const

Функция проверки существования объекта по его имени.

Аргументы:
ObjectName - имя объекта.
Возвращает:
true если объект существует, иначе false.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

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

Используется в nitro::ObjectManagerBasic< managing_class >::DeleteObject().

        {
                try
                {
                        return( ObjectExists( ObjectName.c_str() ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::ObjectExists( const std::string & ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::ObjectExists( const std::string & ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
bool nitro::ObjectManagerBasic< managing_class >::ObjectExists ( const char *  ObjectName  )  const

Функция проверки существования объекта по его имени.

Аргументы:
ObjectName - имя объекта.
Возвращает:
true если объект существует, иначе false.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        for( std::size_t i( 0 ) ; i < Objects.size() ; i++ )
                        {
                                if( Objects[ i ].first == ObjectName )
                                {
                                        return( true );
                                }
                        }
                        
                        return( false );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const char * ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::GetObjectCursor( const char * ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
managing_class * nitro::ObjectManagerBasic< managing_class >::operator[] ( const char *  ObjectName  )  const

Функция получения доступа к элементам мэнэджера по имени.

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

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        for( typename std::vector< std::pair< std::string , managing_class * > >::const_iterator i( Objects.begin() ) ; i != Objects.end() ; i++ )
                        {
                                if( i->first == ObjectName )
                                {
                                        return( i->second );
                                }
                        }

                        throw( nitro::exception( std::string( "An error occured while getting object \"" ) + ObjectName + "\"" , 1 ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const char * ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const char * ObjectName )::An error occured" ) , 1 ) );
                }

                // типа чтобы ворнинг задавить, хотя на самом деле сюда никогда управление не передастся
                return( ( managing_class * )NULL );
        }

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

template<class managing_class >
managing_class * nitro::ObjectManagerBasic< managing_class >::operator[] ( const std::string &  ObjectName  )  const

Функция получения доступа к элементам мэнэджера по имени.

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

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

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

        {
                try
                {
                        return( ( * this )[ ObjectName.c_str() ] );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const std::string & ObjectName )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const std::string & ObjectName )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
managing_class * nitro::ObjectManagerBasic< managing_class >::operator[] ( const std::size_t  ObjectCursor  )  const

Функция получения доступа к элементам мэнэджера по курсору.

Аргументы:
ObjectCursor - курсор объекта (представляется, каким-либо числовым типом).
Возвращает:
Указатель на объект.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

        {
                try
                {
                        if( ( std::size_t )ObjectCursor >= Objects.size() )
                        {
                                throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const std::size_t ObjectCursor )::An error occured while getting object by cursor" ) , 1 ) );
                        }

                        return( Objects[ ObjectCursor ].second );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const std::size_t ObjectCursor )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const std::size_t ObjectCursor )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
managing_class * nitro::ObjectManagerBasic< managing_class >::operator[] ( const int  ObjectCursor  )  const

Функция получения доступа к элементам мэнэджера по курсору.

Аргументы:
ObjectCursor - курсор объекта (представляется, каким-либо числовым типом).
Возвращает:
Указатель на объект.
Исключения:
nitro::exception Кидается иключение этого типа.
Автор:
Додонов А.А.

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

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

        {
                try
                {
                        if( ObjectCursor <= 0 )
                        {
                                throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const int ObjectCursor )::Negative cursors are illegal" ) , 1 ) );
                        }

                        return( ( * this )[ ( std::size_t )ObjectCursor ] );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const int ObjectCursor )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::operator[]( const int ObjectCursor )::An error occured" ) , 1 ) );
                }
        }

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

template<class managing_class >
void nitro::ObjectManagerBasic< managing_class >::Release ( void   )  [virtual]

Функция для удаления созданных объектов.

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

Переопределяется в nitro::LocalObjectManager< managing_class >.

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

Перекрестные ссылки nitro::exception::code(), nitro::ObjectManagerBasic< managing_class >::Objects и nitro::exception::what().

Используется в nitro::ObjectManager< managing_class >::~ObjectManager() и nitro::ObjectManagerBasic< managing_class >::~ObjectManagerBasic().

        {
                try
                {
                        Objects.erase( Objects.begin(), Objects.end() );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::Release( void )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ObjectManagerBasic< managing_class >::Release( void )::An error occured" ) , 1 ) );
                }
        }

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


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

template<class managing_class>
std::vector< std::pair< std::string , managing_class * > > nitro::ObjectManagerBasic< managing_class >::Objects [protected]

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

Generated by  doxygen 1.6.1