diff --git a/src/generator.h b/src/generator.h index 55272c3..0e3c50a 100644 --- a/src/generator.h +++ b/src/generator.h @@ -372,7 +372,6 @@ private: bool ShouldMakeSpaceDump(std::vector & parameters); bool ShouldMakeJsonDump(std::vector & parameters); bool IsPrettyPrint(std::vector & parameters); - bool IsCurrentParam(std::vector & parameters); void DumpSpaceIfNeeded(Var & result, std::vector & parameters, pt::Space * space); void DumpModelIfNeeded(morm::Model & model, Var & result, std::vector & parameters); @@ -1234,13 +1233,6 @@ bool Generator::ShouldMak } -template -bool Generator::IsCurrentParam(std::vector & parameters) -{ - return HasParam(parameters, L"current"); -} - - template bool Generator::IsPrettyPrint(std::vector & parameters) { @@ -1505,19 +1497,6 @@ void Generator::CallSpace if( !IsTestingFunctionExistence() ) { DumpSpaceIfNeeded(result, parameters, space); - - if( IsCurrentParam(parameters) ) - { - size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index); - - if( iterator_value < table->size() ) - { - //(*table)[iterator_value]->serialize_to_string(out_stream); - - (*table)[iterator_value]->serialize_to_string(result.stream); - result.type = Var::TYPE_STREAM; - } - } } } @@ -1580,6 +1559,7 @@ bool Generator::CallSpace pt::Space * space = space_wrapper->get_space(); //last_res = false; size_t field_index = find_helper.field_index; + size_t model_wrapper_space_table_index = 0; /* * @@ -1608,8 +1588,6 @@ bool Generator::CallSpace else if( space->is_table() ) { - size_t model_wrapper_space_table_index = field_index - find_helper.field_index; - if( model_wrapper_space_table_index < space_wrapper->space_indices_table_size() ) { if( is_last_field ) @@ -1620,7 +1598,17 @@ bool Generator::CallSpace else { space = CallSpaceTableForMiddleField(*space_wrapper, *find_helper.fun_name, fields, field_index, space, model_wrapper_space_table_index); - // don't increment field_index + // increment field_index only if next_field is 'this' and space is not an object + + if( space && !space->is_object() ) + { + std::wstring & next_field = fields[field_index]; + + if( next_field == L"this" ) + { + field_index += 1; + } + } } } else @@ -1650,6 +1638,8 @@ bool Generator::CallSpace space = nullptr; } } + + model_wrapper_space_table_index += 1; } return space != nullptr;