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/pddl/Domain.h

96 lines
2.3 KiB
C
Raw Normal View History

#ifndef __PLASP__PDDL__DOMAIN_H
#define __PLASP__PDDL__DOMAIN_H
#include <plasp/pddl/Action.h>
2016-05-31 01:06:57 +02:00
#include <plasp/pddl/Context.h>
2016-06-03 17:12:39 +02:00
#include <plasp/pddl/Expression.h>
#include <plasp/pddl/Parser.h>
#include <plasp/pddl/Requirement.h>
#include <plasp/pddl/expressions/Constant.h>
#include <plasp/pddl/expressions/PredicateDeclaration.h>
#include <plasp/pddl/expressions/PrimitiveType.h>
namespace plasp
{
namespace pddl
{
////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Domain
//
////////////////////////////////////////////////////////////////////////////////////////////////////
class Domain
{
public:
Domain(Context &context);
2016-05-30 15:06:04 +02:00
public:
void findSections();
void parse();
2016-06-07 15:54:01 +02:00
void setName(std::string name);
2016-05-30 15:06:04 +02:00
const std::string &name() const;
const Requirements &requirements() const;
2016-06-07 15:54:01 +02:00
bool hasRequirement(Requirement::Type requirementType) const;
void checkRequirement(Requirement::Type requirementType);
expressions::PrimitiveTypes &types();
2016-06-03 17:12:39 +02:00
const expressions::PrimitiveTypes &types() const;
expressions::Constants &constants();
2016-06-03 17:12:39 +02:00
const expressions::Constants &constants() const;
expressions::PredicateDeclarations &predicates();
2016-06-03 17:12:39 +02:00
const expressions::PredicateDeclarations &predicates() const;
std::vector<std::unique_ptr<Action>> &actions();
const std::vector<std::unique_ptr<Action>> &actions() const;
2016-05-30 15:06:04 +02:00
void checkConsistency();
void normalizeParameterNames();
private:
2016-06-04 16:10:11 +02:00
void parseSection();
2016-06-04 16:10:11 +02:00
void parseRequirementSection();
void computeDerivedRequirements();
2016-05-30 15:06:04 +02:00
2016-06-04 16:10:11 +02:00
void parseTypeSection();
2016-06-04 16:10:11 +02:00
void parseConstantSection();
2016-06-01 16:47:34 +02:00
2016-06-04 16:10:11 +02:00
void parsePredicateSection();
2016-06-04 16:10:11 +02:00
void parseActionSection();
2016-05-31 01:06:57 +02:00
Context &m_context;
std::string m_name;
utils::Stream::Position m_requirementsPosition;
Requirements m_requirements;
utils::Stream::Position m_typesPosition;
expressions::PrimitiveTypes m_types;
utils::Stream::Position m_constantsPosition;
expressions::Constants m_constants;
utils::Stream::Position m_predicatesPosition;
expressions::PredicateDeclarations m_predicates;
std::vector<utils::Stream::Position> m_actionPositions;
std::vector<std::unique_ptr<Action>> m_actions;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
#endif