Parasol Planning Library (PPL)
Constraint.h
Go to the documentation of this file.
1 #ifndef PMPL_CONSTRAINT_H_
2 #define PMPL_CONSTRAINT_H_
3 
4 #include <memory>
5 #include <vector>
6 
7 class Boundary;
8 class Cfg;
9 class Robot;
10 class XMLNode;
11 class Environment;
12 
13 
23 class Constraint {
24 
25  public:
26 
29 
32  explicit Constraint(Robot* const _r);
33 
34  virtual ~Constraint();
35 
40  static std::unique_ptr<Constraint> Factory(Robot* const _r, XMLNode& _node, Environment* _env = nullptr);
41 
44  virtual std::unique_ptr<Constraint> Clone() const = 0;
45 
49 
52  virtual void SetRobot(Robot* const _r);
53 
60  virtual const Boundary* GetBoundary() const = 0;
61 
66  virtual bool Satisfied(const Cfg& _c) const = 0;
67 
69 
70  protected:
71 
74 
75  Robot* m_robot{nullptr};
76 
78 
79 };
80 
81 #endif
Definition: Boundary.h:30
Definition: Cfg.h:38
Definition: Constraint.h:23
Robot * m_robot
The subject of this constraint.
Definition: Constraint.h:75
virtual bool Satisfied(const Cfg &_c) const =0
Constraint(Robot *const _r)
Definition: Constraint.cpp:12
static std::unique_ptr< Constraint > Factory(Robot *const _r, XMLNode &_node, Environment *_env=nullptr)
Definition: Constraint.cpp:21
virtual const Boundary * GetBoundary() const =0
virtual std::unique_ptr< Constraint > Clone() const =0
virtual ~Constraint()
virtual void SetRobot(Robot *const _r)
Definition: Constraint.cpp:42
Definition: Environment.h:137
Definition: Robot.h:31
Definition: XMLNode.h:27