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/include/plasp/sas/Description.h

80 lines
2.1 KiB
C
Raw Permalink Normal View History

#ifndef __PLASP__SAS__DESCRIPTION_H
#define __PLASP__SAS__DESCRIPTION_H
2016-05-20 15:29:24 +02:00
#include <experimental/filesystem>
#include <iosfwd>
2016-05-22 13:58:05 +02:00
#include <memory>
2016-05-20 15:29:24 +02:00
#include <vector>
#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);
static Description fromStream(std::istream &istream);
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;
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;
const Operators &operators() const;
const AxiomRules &axiomRules() const;
bool usesAxiomRules() const;
bool usesConditionalEffects() const;
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);
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;
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;
Operators m_operators;
AxiomRules m_axiomRules;
2016-05-20 15:29:24 +02:00
};
////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
#endif