Made InitialState a proper class.
This commit is contained in:
@@ -83,9 +83,9 @@ const std::vector<MutexGroup> &Description::mutexGroups() const
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const std::vector<AssignedVariable> &Description::initialStateFacts() const
|
||||
const InitialState &Description::initialState() const
|
||||
{
|
||||
return m_initialStateFacts;
|
||||
return *m_initialState;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -158,7 +158,7 @@ void Description::print(std::ostream &ostream) const
|
||||
// Initial state section
|
||||
ostream << "initial state:" << std::endl;
|
||||
|
||||
std::for_each(m_initialStateFacts.cbegin(), m_initialStateFacts.cend(),
|
||||
std::for_each(m_initialState->facts().cbegin(), m_initialState->facts().cend(),
|
||||
[&](const auto &initialStateFact)
|
||||
{
|
||||
ostream << "\t" << initialStateFact.variable().name() << " = ";
|
||||
@@ -295,14 +295,7 @@ void Description::parseMutexSection(std::istream &istream)
|
||||
|
||||
void Description::parseInitialStateSection(std::istream &istream)
|
||||
{
|
||||
utils::parseExpected<std::string>(istream, "begin_state");
|
||||
|
||||
m_initialStateFacts.reserve(m_variables.size());
|
||||
|
||||
for (size_t i = 0; i < m_variables.size(); i++)
|
||||
m_initialStateFacts.emplace_back(AssignedVariable::fromSAS(istream, m_variables[i]));
|
||||
|
||||
utils::parseExpected<std::string>(istream, "end_state");
|
||||
m_initialState = std::make_unique<InitialState>(InitialState::fromSAS(istream, m_variables));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
44
src/plasp/sas/InitialState.cpp
Normal file
44
src/plasp/sas/InitialState.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <plasp/sas/InitialState.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <plasp/utils/Parsing.h>
|
||||
|
||||
namespace plasp
|
||||
{
|
||||
namespace sas
|
||||
{
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// InitialState
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
InitialState InitialState::fromSAS(std::istream &istream, const std::vector<Variable> &variables)
|
||||
{
|
||||
InitialState initialState;
|
||||
|
||||
utils::parseExpected<std::string>(istream, "begin_state");
|
||||
|
||||
initialState.m_facts.reserve(variables.size());
|
||||
|
||||
for (size_t i = 0; i < variables.size(); i++)
|
||||
initialState.m_facts.emplace_back(AssignedVariable::fromSAS(istream, variables[i]));
|
||||
|
||||
utils::parseExpected<std::string>(istream, "end_state");
|
||||
|
||||
return initialState;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const InitialState::Facts &InitialState::facts() const
|
||||
{
|
||||
return m_facts;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
}
|
||||
}
|
@@ -92,7 +92,7 @@ void TranslatorASP::translate(std::ostream &ostream) const
|
||||
ostream << std::endl;
|
||||
ostream << "% initial state" << std::endl;
|
||||
|
||||
const auto &initialStateFacts = m_description.initialStateFacts();
|
||||
const auto &initialStateFacts = m_description.initialState().facts();
|
||||
|
||||
std::for_each(initialStateFacts.cbegin(), initialStateFacts.cend(),
|
||||
[&](const auto &initialStateFact)
|
||||
|
Reference in New Issue
Block a user