Refactored Requirement to be a proper class.

This commit is contained in:
2016-05-31 14:11:21 +02:00
parent cf1c66a085
commit 5f763e90fc
5 changed files with 79 additions and 48 deletions

View File

@@ -26,7 +26,7 @@ class Domain
public:
const std::string &name() const;
const Requirement::Types &requirements() const;
const Requirements &requirements() const;
const TypeHashMap &types() const;
private:
@@ -35,7 +35,7 @@ class Domain
void parseSection(utils::Parser &parser);
void parseRequirementsSection(utils::Parser &parser);
bool hasRequirement(Requirement::Type requirement) const;
bool hasRequirement(Requirement::Type requirementType) const;
void computeDerivedRequirements();
void parseTypingSection(utils::Parser &parser);
@@ -45,7 +45,7 @@ class Domain
Context &m_context;
std::string m_name;
Requirement::Types m_requirements;
Requirements m_requirements;
};
////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,9 +1,10 @@
#ifndef __PLASP__PDDL__REQUIREMENT_H
#define __PLASP__PDDL__REQUIREMENT_H
#include <plasp/utils/Parser.h>
#include <vector>
#include <plasp/utils/Parser.h>
namespace plasp
{
namespace pddl
@@ -15,39 +16,51 @@ namespace pddl
//
////////////////////////////////////////////////////////////////////////////////////////////////////
struct Requirement
class Requirement;
using Requirements = std::vector<Requirement>;
////////////////////////////////////////////////////////////////////////////////////////////////////
class Requirement
{
enum class Type
{
STRIPS,
Typing,
NegativePreconditions,
DisjunctivePreconditions,
Equality,
ExistentialPreconditions,
UniversalPreconditions,
QuantifiedPreconditions,
ConditionalEffects,
Fluents,
NumericFluents,
ObjectFluents,
ADL,
DurativeActions,
DurationInequalities,
ContinuousEffects,
DerivedPredicates,
TimedInitialLiterals,
Preferences,
Constraints,
ActionCosts
};
public:
enum class Type
{
STRIPS,
Typing,
NegativePreconditions,
DisjunctivePreconditions,
Equality,
ExistentialPreconditions,
UniversalPreconditions,
QuantifiedPreconditions,
ConditionalEffects,
Fluents,
NumericFluents,
ObjectFluents,
ADL,
DurativeActions,
DurationInequalities,
ContinuousEffects,
DerivedPredicates,
TimedInitialLiterals,
Preferences,
Constraints,
ActionCosts
};
using Types = std::vector<Type>;
static Requirement parse(utils::Parser &parser);
static Requirement::Type fromPDDL(utils::Parser &parser);
public:
Requirement(Type type);
static void toPDDL(std::ostream &ostream, Requirement::Type requirementType);
static void toASP(std::ostream &ostream, Requirement::Type requirementType);
Type type() const;
void printAsPDDL(std::ostream &ostream) const;
void printAsASP(std::ostream &ostream) const;
private:
Type m_type;
};
////////////////////////////////////////////////////////////////////////////////////////////////////