changed the way how we iterate through Models, instead of ModelWrapper now we have Wrapper which has pointers to: model, model container, space or date

This commit is contained in:
2021-07-01 23:21:20 +02:00
parent acb42f453c
commit 849b3e9ecc
3 changed files with 250 additions and 151 deletions

View File

@@ -59,15 +59,6 @@ Models::~Models()
void Models::Clear()
{
for(auto & map_item : models_map)
{
if( map_item.second->should_be_auto_removed() )
{
delete map_item.second;
map_item.second = nullptr;
}
}
models_map.clear();
}
@@ -75,40 +66,59 @@ void Models::Clear()
void Models::Add(const std::wstring & name, morm::Model & model)
{
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperModel(&model);
models_map[name] = model_wrapper;
morm::Wrapper wrapper;
wrapper.model = &model;
models_map[name] = wrapper;
}
void Models::Add(const std::wstring & name, morm::Model * model)
{
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperModel(model);
models_map[name] = model_wrapper;
morm::Wrapper wrapper;
wrapper.model = model;
models_map[name] = wrapper;
}
void Models::Add(const std::wstring & name, pt::Space & space)
{
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperSpace(&space);
models_map[name] = model_wrapper;
morm::Wrapper wrapper;
wrapper.space_wrapper = new morm::SpaceWrapper(&space);
models_map[name] = wrapper;
}
void Models::Add(const std::wstring & name, pt::Space * space)
{
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperSpace(space);
models_map[name] = model_wrapper;
morm::Wrapper wrapper;
wrapper.space_wrapper = new morm::SpaceWrapper(space);
models_map[name] = wrapper;
}
void Models::Add(const std::wstring & name, pt::Date & date)
{
morm::Wrapper wrapper;
wrapper.date = &date;
models_map[name] = wrapper;
}
morm::ModelWrapper * Models::Find(const std::wstring & name)
void Models::Add(const std::wstring & name, pt::Date * date)
{
morm::Wrapper wrapper;
wrapper.date = date;
models_map[name] = wrapper;
}
morm::Wrapper * Models::Find(const std::wstring & name)
{
auto iterator = models_map.find(name);
if( iterator != models_map.end() )
{
return iterator->second;
return &iterator->second;
}
return nullptr;