diff options
Diffstat (limited to 'src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp')
-rw-r--r-- | src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp index 9a4b528..de94088 100644 --- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp +++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp @@ -627,20 +627,19 @@ std::string SWIDataModel::evalAsString(const std::string& expr) { PlQuery query(compound.name(), termv); std::stringstream ss; - const char* separator = ""; + std::string solSeparator = ""; while (query.next_solution()) { + ss << solSeparator; std::map<std::string, PlTerm> vars = resolveAtoms(compound, orig); - if (vars.size() == 1) { - ss << separator << (char *)vars.begin()->second; - separator = "\n"; - } else { - std::map<std::string, PlTerm>::const_iterator varIter = vars.begin(); - while(varIter != vars.end()) { - ss << separator << (char *)varIter->second; - separator = ", "; - varIter++; - } + std::map<std::string, PlTerm>::const_iterator varIter = vars.begin(); + + std::string varSeparator = ""; + while(varIter != vars.end()) { + ss << varSeparator << (char *)varIter->second; + varSeparator = ", "; + varIter++; } + solSeparator = "\n"; } return ss.str(); } @@ -684,6 +683,8 @@ std::map<std::string, PlTerm> SWIDataModel::resolveAtoms(PlTerm& term, PlTerm& o atoms.insert(result.begin(), result.end()); } break; + default: + LOG(ERROR) << "Resolving variable of unknown type in query solution"; } return atoms; } RETHROW_PLEX_AS_EVENT |