diff --git a/src/generator.h b/src/generator.h index 517bdb5..729fb6c 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(std::vector & parameters, StreamType & out_stream, pt::Space * space); void DumpModelIfNeeded(morm::Model & model, std::vector & parameters, StreamType & out_stream); @@ -1237,13 +1236,6 @@ bool Generator::ShouldMak } -template -bool Generator::IsCurrentParam(std::vector & parameters) -{ - return HasParam(parameters, L"current"); -} - - template bool Generator::IsPrettyPrint(std::vector & parameters) { @@ -1455,8 +1447,8 @@ pt::Space * Generator::Ca template -void Generator::CallSpaceTableForLastField(morm::SpaceWrapper & space_wrapper, std::vector & parameters, StreamType & out_stream, - pt::Space * space, size_t model_wrapper_space_table_index) +void Generator::CallSpaceTableForLastField( + morm::SpaceWrapper & space_wrapper, std::vector & parameters, StreamType & out_stream, pt::Space * space, size_t model_wrapper_space_table_index) { pt::Space::TableType * table = space->get_table(); @@ -1478,16 +1470,6 @@ void Generator::CallSpace if( !IsTestingFunctionExistence() ) { DumpSpaceIfNeeded(parameters, out_stream, 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); - } - } } } @@ -1542,6 +1524,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; /* * @@ -1570,8 +1553,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 ) @@ -1582,7 +1563,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 @@ -1612,6 +1603,8 @@ bool Generator::CallSpace space = nullptr; } } + + model_wrapper_space_table_index += 1; } return space != nullptr;