Refactored Requirement to be a proper class.
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@@ -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;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
Reference in New Issue
Block a user