2016-05-24 16:03:08 +02:00
|
|
|
#ifndef __PLASP__SAS__DESCRIPTION_H
|
|
|
|
#define __PLASP__SAS__DESCRIPTION_H
|
2016-05-20 15:29:24 +02:00
|
|
|
|
2017-05-09 15:05:59 +02:00
|
|
|
#include <experimental/filesystem>
|
2016-05-20 18:02:52 +02:00
|
|
|
#include <iosfwd>
|
2016-05-22 13:58:05 +02:00
|
|
|
#include <memory>
|
2016-05-20 15:29:24 +02:00
|
|
|
#include <vector>
|
|
|
|
|
2017-06-22 20:58:31 +02:00
|
|
|
#include <tokenize/Tokenizer.h>
|
|
|
|
|
2016-05-22 13:58:05 +02:00
|
|
|
#include <plasp/sas/AxiomRule.h>
|
2016-05-22 14:04:58 +02:00
|
|
|
#include <plasp/sas/Goal.h>
|
2016-05-22 13:58:05 +02:00
|
|
|
#include <plasp/sas/InitialState.h>
|
2016-05-20 15:29:24 +02:00
|
|
|
#include <plasp/sas/MutexGroup.h>
|
|
|
|
#include <plasp/sas/Operator.h>
|
|
|
|
#include <plasp/sas/Variable.h>
|
|
|
|
|
|
|
|
namespace plasp
|
|
|
|
{
|
|
|
|
namespace sas
|
|
|
|
{
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Description
|
|
|
|
//
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class Description
|
|
|
|
{
|
|
|
|
public:
|
2017-05-12 14:17:57 +02:00
|
|
|
static Description fromTokenizer(tokenize::Tokenizer<> &&tokenizer);
|
2016-05-20 18:02:52 +02:00
|
|
|
static Description fromStream(std::istream &istream);
|
2017-05-09 15:05:59 +02:00
|
|
|
static Description fromFile(const std::experimental::filesystem::path &path);
|
2016-05-20 15:29:24 +02:00
|
|
|
|
|
|
|
public:
|
2016-05-20 18:26:42 +02:00
|
|
|
bool usesActionCosts() const;
|
2016-05-22 14:24:38 +02:00
|
|
|
const Variables &variables() const;
|
|
|
|
const MutexGroups &mutexGroups() const;
|
2016-05-22 13:58:05 +02:00
|
|
|
const InitialState &initialState() const;
|
2016-05-22 14:04:58 +02:00
|
|
|
const Goal &goal() const;
|
2016-05-22 14:24:38 +02:00
|
|
|
const Operators &operators() const;
|
|
|
|
const AxiomRules &axiomRules() const;
|
2016-05-20 18:18:30 +02:00
|
|
|
|
2016-05-23 17:13:11 +02:00
|
|
|
bool usesAxiomRules() const;
|
2016-05-23 18:16:44 +02:00
|
|
|
bool usesConditionalEffects() const;
|
2016-05-23 17:13:11 +02:00
|
|
|
|
2016-08-13 02:29:48 +02:00
|
|
|
bool hasRequirements() const;
|
|
|
|
|
2016-05-20 15:29:24 +02:00
|
|
|
private:
|
2016-05-21 00:22:23 +02:00
|
|
|
Description();
|
|
|
|
|
2017-05-12 14:17:57 +02:00
|
|
|
void parseContent(tokenize::Tokenizer<> &tokenizer);
|
2016-06-07 18:41:01 +02:00
|
|
|
|
2017-05-12 14:17:57 +02:00
|
|
|
void parseVersionSection(tokenize::Tokenizer<> &tokenizer) const;
|
|
|
|
void parseMetricSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseVariablesSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseMutexSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseInitialStateSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseGoalSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseOperatorSection(tokenize::Tokenizer<> &tokenizer);
|
|
|
|
void parseAxiomSection(tokenize::Tokenizer<> &tokenizer);
|
2016-05-20 15:29:24 +02:00
|
|
|
|
|
|
|
bool m_usesActionCosts;
|
|
|
|
|
2016-05-22 14:24:38 +02:00
|
|
|
Variables m_variables;
|
|
|
|
MutexGroups m_mutexGroups;
|
2016-05-22 13:58:05 +02:00
|
|
|
std::unique_ptr<InitialState> m_initialState;
|
2016-05-22 14:04:58 +02:00
|
|
|
std::unique_ptr<Goal> m_goal;
|
2016-05-22 14:24:38 +02:00
|
|
|
Operators m_operators;
|
|
|
|
AxiomRules m_axiomRules;
|
2016-05-20 15:29:24 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|