added possibility to take a Space struct in Models: Models::Add(const std::wstring & name, pt::Space & space);

This commit is contained in:
2021-06-23 06:53:43 +02:00
parent eda276356f
commit 526d57b72e
3 changed files with 57 additions and 33 deletions

View File

@@ -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
}
}
}