CMS 3D CMS Logo

IgModelManager.cc

Go to the documentation of this file.
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 }

Generated on Tue Jun 9 17:38:49 2009 for CMSSW by  doxygen 1.5.4