![]() |
![]() |
00001 //<<<<<< INCLUDES >>>>>> 00002 00003 #include "Iguana/Studio/interface/IgModelManager.h" 00004 #include "Iguana/Framework/interface/IgModel.h" 00005 00006 //<<<<<< PRIVATE DEFINES >>>>>> 00007 //<<<<<< PRIVATE CONSTANTS >>>>>> 00008 //<<<<<< PRIVATE TYPES >>>>>> 00009 //<<<<<< PRIVATE VARIABLE DEFINITIONS >>>>>> 00010 //<<<<<< PUBLIC VARIABLE DEFINITIONS >>>>>> 00011 //<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>> 00012 IG_DEFINE_STATE_ELEMENT (IgModelManager, "Services/Model Manager"); 00013 00014 //<<<<<< PRIVATE FUNCTION DEFINITIONS >>>>>> 00015 //<<<<<< PUBLIC FUNCTION DEFINITIONS >>>>>> 00016 //<<<<<< MEMBER FUNCTION DEFINITIONS >>>>>> 00017 00018 IgModelManager::IgModelManager (IgState *state) 00019 : m_state (state) 00020 { ASSERT (m_state); m_state->put (s_key, this); } 00021 00022 IgModelManager::~IgModelManager (void) 00023 { 00024 m_state->detach (s_key); 00025 for (ModelList::iterator i = m_models.begin (); 00026 i != m_models.end (); 00027 i++) 00028 for (std::vector<IgModel *>::iterator j = i->second.begin (); 00029 j != i->second.end (); j++) 00030 delete (*j); 00031 } 00032 00033 IgState * 00034 IgModelManager::state (void) 00035 { return m_state; } 00036 00037 std::vector<std::string> 00038 IgModelManager::roots (void) 00039 { 00040 std::vector<std::string> names; 00041 00042 for (ModelList::iterator i = m_models.begin (); 00043 i != m_models.end (); i++) 00044 names.push_back (i->first); 00045 00046 return names; 00047 } 00048 00049 void 00050 IgModelManager::add (IgState *state, IgModel* model, std::string name /*= ""*/) 00051 { 00052 ASSERT (model); 00053 00054 if (name.size () == 0) 00055 name = IgDocumentDataRoot::getCurrentRoot (); 00056 00057 IgDocumentDataManager::get (state ? state : m_state)-> 00058 lookup(state, name); 00059 00060 m_models[name].push_back (model); 00061 }