Fawkes API Fawkes Development Version
static_list_node_constraint.h
1/***************************************************************************
2 * static_list_node_constraint.h - node constraint that holds a static list
3 * of nodes to block
4 *
5 * Created: Sun Mar 02 10:47:35 2014
6 * Copyright 2014 Sebastian Reuter
7 * 2014 Tim Niemueller
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Library General Public License for more details.
19 *
20 * Read the full text in the LICENSE.GPL file in the doc directory.
21 */
22
23#ifndef _NAVGRAPH_CONSTRAINTS_STATIC_LIST_NODE_CONSTRAINT_H_
24#define _NAVGRAPH_CONSTRAINTS_STATIC_LIST_NODE_CONSTRAINT_H_
25
26#include <navgraph/constraints/node_constraint.h>
27#include <navgraph/navgraph.h>
28
29#include <string>
30#include <vector>
31
32namespace fawkes {
33
35{
36public:
38
39 NavGraphStaticListNodeConstraint(std::string name, std::vector<fawkes::NavGraphNode> &node_list);
40
42
43 const std::vector<fawkes::NavGraphNode> &node_list() const;
44
45 void add_node(const fawkes::NavGraphNode &node);
46 void add_nodes(const std::vector<fawkes::NavGraphNode> &nodes);
47 void remove_node(const fawkes::NavGraphNode &node);
48 void clear_nodes();
49 bool has_node(const fawkes::NavGraphNode &node);
50
51 virtual bool compute(void) noexcept;
52
53 virtual bool
54 blocks(const fawkes::NavGraphNode &node) noexcept
55 {
56 return has_node(node);
57 }
58
59protected:
60 std::vector<fawkes::NavGraphNode> node_list_; ///< Node list
61 bool modified_; ///< Set to true if changes are made to the constraint.
62};
63
64} // end namespace fawkes
65
66#endif
Constraint that can be queried to check if a node is blocked.
std::string name()
Get name of constraint.
Topological graph node.
Definition: navgraph_node.h:36
Constraint that holds a list of nodes to block.
bool has_node(const fawkes::NavGraphNode &node)
Check if constraint has a specific node.
void remove_node(const fawkes::NavGraphNode &node)
Remove a single node from the constraint list.
virtual ~NavGraphStaticListNodeConstraint()
Virtual empty destructor.
virtual bool compute(void) noexcept
Perform compuations before graph search and to indicate re-planning.
void add_nodes(const std::vector< fawkes::NavGraphNode > &nodes)
Add multiple nodes to constraint list.
const std::vector< fawkes::NavGraphNode > & node_list() const
Get list of blocked nodes.
void add_node(const fawkes::NavGraphNode &node)
Add a single node to constraint list.
NavGraphStaticListNodeConstraint(std::string name)
Constructor.
std::vector< fawkes::NavGraphNode > node_list_
Node list.
bool modified_
Set to true if changes are made to the constraint.
virtual bool blocks(const fawkes::NavGraphNode &node) noexcept
Check if constraint blocks a node.
Fawkes library namespace.