22#ifndef _NAVGRAPH_CONSTRAINTS_CONSTRAINT_REPO_H_
23#define _NAVGRAPH_CONSTRAINTS_CONSTRAINT_REPO_H_
25#include <navgraph/constraints/edge_constraint.h>
26#include <navgraph/constraints/edge_cost_constraint.h>
27#include <navgraph/constraints/node_constraint.h>
28#include <navgraph/navgraph_edge.h>
80 std::map<std::string, std::string>
blocks(
const std::vector<fawkes::NavGraphNode> &nodes);
82 std::map<std::pair<std::string, std::string>, std::string>
83 blocks(
const std::vector<fawkes::NavGraphEdge> &edges);
85 std::list<std::tuple<std::string, std::string, std::string, float>>
86 cost_factor(
const std::vector<fawkes::NavGraphEdge> &edges);
88 bool modified(
bool reset_modified =
false);
Constraint repository to maintain blocks on nodes.
std::vector< fawkes::NavGraphEdgeCostConstraint * > EdgeCostConstraintList
List of navgraph edge cost constraints.
NavGraphConstraintRepo()
Constructor.
fawkes::NavGraphNodeConstraint * get_node_constraint(std::string &name)
Get a node constraint by name.
fawkes::NavGraphEdgeConstraint * get_edge_constraint(std::string &name)
Get an edge constraint by name.
const EdgeConstraintList & edge_constraints() const
Get a list of registered edge constraints.
std::vector< fawkes::NavGraphNodeConstraint * > NodeConstraintList
List of navgraph node constraints.
~NavGraphConstraintRepo()
Destructor.
std::vector< fawkes::NavGraphEdgeConstraint * > EdgeConstraintList
List of navgraph edge constraints.
void register_constraint(NavGraphNodeConstraint *constraint)
Register a constraint.
bool has_constraints() const
Check if there are any constraints at all.
void unregister_constraint(std::string name)
Unregister a constraint by name.
NavGraphEdgeCostConstraint * increases_cost(const fawkes::NavGraphNode &from, const fawkes::NavGraphNode &to)
Check if any constraint in the repo increases the cost of the edge.
fawkes::NavGraphEdgeCostConstraint * get_edge_cost_constraint(std::string &name)
Get an edge cost constraint by name.
bool modified(bool reset_modified=false)
Check if the constraint repo has been modified.
const NodeConstraintList & node_constraints() const
Get a list of registered node constraints.
float cost_factor(const fawkes::NavGraphNode &from, const fawkes::NavGraphNode &to)
Get the highest increasing cost factor for an edge.
NavGraphNodeConstraint * blocks(const fawkes::NavGraphNode &node)
Check if any constraint in the repo blocks the node.
bool compute()
Call compute method on all registered constraints.
const EdgeCostConstraintList & edge_cost_constraints() const
Get a list of registered edge cost constraints.
bool has_constraint(std::string &name)
Check by name if a constraint has been registered.
Constraint that can be queried to check if an edge is blocked.
Constraint that can be queried for an edge cost factor.
Constraint that can be queried to check if a node is blocked.
Fawkes library namespace.