patrick
/
plasp
Archived
1
0
Fork 0
This repository has been archived on 2023-07-19. You can view files and clone it, but cannot push or open issues or pull requests.
plasp/src/plasp/sas/MutexGroup.cpp

51 lines
1.2 KiB
C++
Raw Normal View History

2016-05-21 17:09:55 +02:00
#include <plasp/sas/MutexGroup.h>
#include <iostream>
2017-05-12 14:17:57 +02:00
#include <tokenize/TokenizerException.h>
2016-05-21 17:09:55 +02:00
namespace plasp
{
namespace sas
{
////////////////////////////////////////////////////////////////////////////////////////////////////
//
// MutexGroup
//
////////////////////////////////////////////////////////////////////////////////////////////////////
2017-05-12 14:17:57 +02:00
MutexGroup MutexGroup::fromSAS(tokenize::Tokenizer<> &tokenizer, const Variables &variables)
2016-05-21 17:09:55 +02:00
{
MutexGroup mutexGroup;
2017-05-12 14:17:57 +02:00
tokenizer.expect<std::string>("begin_mutex_group");
2016-05-21 17:09:55 +02:00
2017-05-12 14:17:57 +02:00
const auto numberOfFacts = tokenizer.get<size_t>();
2016-05-21 17:09:55 +02:00
mutexGroup.m_facts.reserve(numberOfFacts);
for (size_t j = 0; j < numberOfFacts; j++)
{
2017-05-12 14:17:57 +02:00
mutexGroup.m_facts.emplace_back(Fact::fromSAS(tokenizer, variables));
if (mutexGroup.m_facts[j].value() == Value::None)
2017-05-12 14:17:57 +02:00
throw tokenize::TokenizerException(tokenizer.location(), "mutex groups must not contain <none of those> values");
2016-05-21 17:09:55 +02:00
}
2017-05-12 14:17:57 +02:00
tokenizer.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;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
}
}