2016-05-21 17:09:55 +02:00
|
|
|
#include <plasp/sas/MutexGroup.h>
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
2017-05-09 15:05:59 +02:00
|
|
|
#include <parsebase/ParserException.h>
|
2016-05-21 17:09:55 +02:00
|
|
|
|
|
|
|
namespace plasp
|
|
|
|
{
|
|
|
|
namespace sas
|
|
|
|
{
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// MutexGroup
|
|
|
|
//
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2017-05-09 15:05:59 +02:00
|
|
|
MutexGroup MutexGroup::fromSAS(parsebase::Parser<> &parser, const Variables &variables)
|
2016-05-21 17:09:55 +02:00
|
|
|
{
|
|
|
|
MutexGroup mutexGroup;
|
|
|
|
|
2016-05-27 03:58:59 +02:00
|
|
|
parser.expect<std::string>("begin_mutex_group");
|
2016-05-21 17:09:55 +02:00
|
|
|
|
2016-05-27 03:58:59 +02:00
|
|
|
const auto numberOfFacts = parser.parse<size_t>();
|
2016-05-21 17:09:55 +02:00
|
|
|
mutexGroup.m_facts.reserve(numberOfFacts);
|
|
|
|
|
|
|
|
for (size_t j = 0; j < numberOfFacts; j++)
|
|
|
|
{
|
2016-05-27 03:58:59 +02:00
|
|
|
mutexGroup.m_facts.emplace_back(Fact::fromSAS(parser, variables));
|
2016-05-23 01:53:42 +02:00
|
|
|
|
|
|
|
if (mutexGroup.m_facts[j].value() == Value::None)
|
2017-05-09 15:05:59 +02:00
|
|
|
throw parsebase::ParserException(parser.location(), "mutex groups must not contain <none of those> values");
|
2016-05-21 17:09:55 +02:00
|
|
|
}
|
|
|
|
|
2016-05-27 03:58:59 +02:00
|
|
|
parser.expect<std::string>("end_mutex_group");
|
2016-05-21 17:09:55 +02:00
|
|
|
|
|
|
|
return mutexGroup;
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
const MutexGroup::Facts &MutexGroup::facts() const
|
|
|
|
{
|
|
|
|
return m_facts;
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|