added possibility to take a Space struct in Models: Models::Add(const std::wstring & name, pt::Space & space);
This commit is contained in:
parent
eda276356f
commit
526d57b72e
|
@ -1256,12 +1256,7 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
|
|||
for(size_t i=field_index ; i < fields.size() + 1 ; ++i)
|
||||
{
|
||||
bool is_last_field = (i == fields.size());
|
||||
|
||||
if( i == 0 )
|
||||
field = find_helper.fun_name;
|
||||
else
|
||||
field = &fields[i - 1];
|
||||
|
||||
field = (i == 0) ? find_helper.fun_name : &fields[i - 1];
|
||||
|
||||
if( space->is_object() )
|
||||
{
|
||||
|
@ -1498,18 +1493,28 @@ void Generator<StreamType>::CallModelWrapper(FindHelper & find_helper, std::vect
|
|||
}
|
||||
else
|
||||
{
|
||||
// all fields items are models or models containers
|
||||
// all fields items are models or models containers or last one is Space
|
||||
// this is usualy in [for...] or [if ...] statements
|
||||
if( stack_tab[stack_index-1].is_for )
|
||||
|
||||
if( space )
|
||||
{
|
||||
// helper.model_wrapper is always set
|
||||
helper.model_wrapper->increment_iterator();
|
||||
helper.model_wrapper->clear_childs();
|
||||
last_res = helper.model_wrapper->is_iterator_correct();
|
||||
CallSpace(*helper.model_wrapper, *space, find_helper, fields, helper.field_index, parameters, out_stream);
|
||||
}
|
||||
else
|
||||
{
|
||||
last_res = !helper.model_wrapper->is_container_empty();
|
||||
if( stack_tab[stack_index-1].is_for )
|
||||
{
|
||||
// helper.model_wrapper is always set
|
||||
helper.model_wrapper->increment_iterator();
|
||||
helper.model_wrapper->clear_childs();
|
||||
last_res = helper.model_wrapper->is_iterator_correct();
|
||||
}
|
||||
else
|
||||
{
|
||||
last_res = !helper.model_wrapper->is_container_empty();
|
||||
}
|
||||
|
||||
// add support for "dump" parameter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,18 +75,33 @@ void Models::Clear()
|
|||
|
||||
void Models::Add(const std::wstring & name, morm::Model & model)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperModel(&model);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperModel(&model);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
|
||||
void Models::Add(const std::wstring & name, morm::Model * model)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperModel(model);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperModel(model);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
|
||||
void Models::Add(const std::wstring & name, pt::Space & space)
|
||||
{
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperSpace(&space);
|
||||
models_map[name] = model_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::ModelWrapper * Models::Find(const std::wstring & name)
|
||||
{
|
||||
auto iterator = models_map.find(name);
|
||||
|
|
36
src/models.h
36
src/models.h
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include "modelwrapper.h"
|
||||
#include "funinfo.h"
|
||||
#include "space/space.h"
|
||||
|
||||
|
||||
namespace Ezc
|
||||
|
@ -58,60 +59,63 @@ public:
|
|||
void Add(const std::wstring & name, morm::Model & model);
|
||||
void Add(const std::wstring & name, morm::Model * model);
|
||||
|
||||
void Add(const std::wstring & name, pt::Space & space);
|
||||
void Add(const std::wstring & name, pt::Space * space);
|
||||
|
||||
template<typename VectorType>
|
||||
void Add(const std::wstring & name, std::vector<VectorType> & container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperVector<VectorType>(&container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperVector<VectorType>(&container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename VectorType>
|
||||
void Add(const std::wstring & name, std::vector<VectorType> * container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperVector<VectorType>(container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperVector<VectorType>(container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename VectorType>
|
||||
void Add(const std::wstring & name, std::vector<VectorType*> & container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperVectorPointer<VectorType>(&container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperVectorPointer<VectorType>(&container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename VectorType>
|
||||
void Add(const std::wstring & name, std::vector<VectorType*> * container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperVectorPointer<VectorType>(container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperVectorPointer<VectorType>(container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename ListType>
|
||||
void Add(const std::wstring & name, std::list<ListType> & container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperList<ListType>(&container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperList<ListType>(&container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename ListType>
|
||||
void Add(const std::wstring & name, std::list<ListType> * container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperList<ListType>(container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperList<ListType>(container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename ListType>
|
||||
void Add(const std::wstring & name, std::list<ListType*> & container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperListPointer<ListType>(&container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperListPointer<ListType>(&container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
template<typename ListType>
|
||||
void Add(const std::wstring & name, std::list<ListType*> * container)
|
||||
{
|
||||
morm::ModelWrapper * models_base = new morm::ModelWrapperListPointer<ListType>(container);
|
||||
models_map[name] = models_base;
|
||||
morm::ModelWrapper * model_wrapper = new morm::ModelWrapperListPointer<ListType>(container);
|
||||
models_map[name] = model_wrapper;
|
||||
}
|
||||
|
||||
morm::ModelWrapper * Find(const std::wstring & name);
|
||||
|
|
Loading…
Reference in New Issue