BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::ItemManager Class Reference

Manages item creation/registration for SessionModel. More...

Public Member Functions

 ItemManager ()
 
 ~ItemManager ()
 
std::unique_ptr< SessionItemcreateItem (const model_type &modelType={}) const
 
std::unique_ptr< SessionItemcreateRootItem () const
 
ItemFactoryInterfacefactory ()
 
const ItemFactoryInterfacefactory () const
 
identifier_type findIdentifier (const SessionItem *item) const
 
SessionItemfindItem (const identifier_type &id) const
 
ItemPoolitemPool ()
 
const ItemPoolitemPool () const
 
void registerInPool (SessionItem *item)
 
void setItemFactory (std::unique_ptr< ItemFactoryInterface > factory)
 
void setItemPool (std::shared_ptr< ItemPool > pool)
 
void unregisterFromPool (SessionItem *item)
 

Private Attributes

std::unique_ptr< ItemFactoryInterfacem_item_factory
 
std::shared_ptr< ItemPoolm_item_pool
 

Detailed Description

Manages item creation/registration for SessionModel.

Definition at line 30 of file itemmanager.h.

Constructor & Destructor Documentation

◆ ItemManager()

ItemManager::ItemManager ( )

Definition at line 30 of file itemmanager.cpp.

30 : m_item_factory(DefaultItemFactory()) {}
std::unique_ptr< ItemFactoryInterface > m_item_factory
Definition: itemmanager.h:58

◆ ~ItemManager()

ItemManager::~ItemManager ( )
default

Member Function Documentation

◆ createItem()

std::unique_ptr< SessionItem > ItemManager::createItem ( const model_type modelType = {}) const

Definition at line 44 of file itemmanager.cpp.

45 {
46  return m_item_factory->createItem(modelType);
47 }

References m_item_factory.

◆ createRootItem()

std::unique_ptr< SessionItem > ItemManager::createRootItem ( ) const

Definition at line 49 of file itemmanager.cpp.

50 {
51  return std::make_unique<SessionItem>();
52 }

◆ factory() [1/2]

ItemFactoryInterface * ItemManager::factory ( )

Definition at line 91 of file itemmanager.cpp.

92 {
93  return const_cast<ItemFactoryInterface*>(static_cast<const ItemManager*>(this)->factory());
94 }
Interface class for all factories capable of producing SessionItem's.
Manages item creation/registration for SessionModel.
Definition: itemmanager.h:30
const ItemFactoryInterface * factory() const
Definition: itemmanager.cpp:86

References factory().

Here is the call graph for this function:

◆ factory() [2/2]

const ItemFactoryInterface * ItemManager::factory ( ) const

Definition at line 86 of file itemmanager.cpp.

87 {
88  return m_item_factory.get();
89 }

References m_item_factory.

Referenced by factory(), and setItemFactory().

◆ findIdentifier()

identifier_type ItemManager::findIdentifier ( const SessionItem item) const

Definition at line 59 of file itemmanager.cpp.

60 {
61  return m_item_pool ? m_item_pool->key_for_item(item) : identifier_type();
62 }
std::shared_ptr< ItemPool > m_item_pool
Definition: itemmanager.h:57
std::string identifier_type
Definition: types.h:22

References m_item_pool.

◆ findItem()

SessionItem * ItemManager::findItem ( const identifier_type id) const

Definition at line 54 of file itemmanager.cpp.

55 {
56  return m_item_pool ? m_item_pool->item_for_key(id) : nullptr;
57 }

References m_item_pool.

◆ itemPool() [1/2]

ItemPool * ItemManager::itemPool ( )

Definition at line 69 of file itemmanager.cpp.

70 {
71  return m_item_pool.get();
72 }

References m_item_pool.

◆ itemPool() [2/2]

const ItemPool * ItemManager::itemPool ( ) const

Definition at line 64 of file itemmanager.cpp.

65 {
66  return m_item_pool.get();
67 }

References m_item_pool.

Referenced by TEST_F().

◆ registerInPool()

void ItemManager::registerInPool ( SessionItem item)

Definition at line 74 of file itemmanager.cpp.

75 {
76  if (m_item_pool)
77  m_item_pool->register_item(item, item->identifier());
78 }
std::string identifier() const
Returns unique identifier.
Definition: sessionitem.cpp:87

References ModelView::SessionItem::identifier(), and m_item_pool.

Here is the call graph for this function:

◆ setItemFactory()

void ItemManager::setItemFactory ( std::unique_ptr< ItemFactoryInterface factory)

Definition at line 32 of file itemmanager.cpp.

33 {
34  m_item_factory = std::move(factory);
35 }

References factory(), and m_item_factory.

Here is the call graph for this function:

◆ setItemPool()

void ItemManager::setItemPool ( std::shared_ptr< ItemPool pool)

Definition at line 37 of file itemmanager.cpp.

38 {
39  m_item_pool = std::move(pool);
40 }

References m_item_pool.

Referenced by TEST_F().

◆ unregisterFromPool()

void ItemManager::unregisterFromPool ( SessionItem item)

Definition at line 80 of file itemmanager.cpp.

81 {
82  if (m_item_pool)
83  m_item_pool->unregister_item(item);
84 }

References m_item_pool.

Member Data Documentation

◆ m_item_factory

std::unique_ptr<ItemFactoryInterface> ModelView::ItemManager::m_item_factory
private

Definition at line 58 of file itemmanager.h.

Referenced by createItem(), factory(), and setItemFactory().

◆ m_item_pool

std::shared_ptr<ItemPool> ModelView::ItemManager::m_item_pool
private

The documentation for this class was generated from the following files: