23 #ifndef __UTILS_GRAPH_TOPOLOGICAL_MAP_EDGE_H_ 24 #define __UTILS_GRAPH_TOPOLOGICAL_MAP_EDGE_H_ 26 #include <utils/misc/string_conversions.h> 28 #include <navgraph/navgraph_node.h> 29 #include <utils/math/types.h> 45 NavGraphEdge(
const std::string &from,
const std::string &to,
46 std::map<std::string, std::string> properties,
47 bool directed =
false);
49 NavGraphEdge(
const std::string &from,
const std::string &to,
50 bool directed =
false);
54 const std::string &
from()
const 59 const std::string &
to()
const 66 {
return from_node_; }
74 bool intersects(
float x1,
float y1,
float x2,
float y2)
const;
75 bool intersection(
float x1,
float y1,
float x2,
float y2,
78 void set_from(
const std::string &from);
79 void set_to(
const std::string &to);
80 void set_directed(
bool directed);
85 const std::map<std::string, std::string> &
properties()
const 86 {
return properties_; }
93 {
return properties_.find(property) != properties_.end(); }
95 void set_properties(
const std::map<std::string, std::string> &properties);
96 void set_property(
const std::string &property,
const std::string &value);
97 void set_property(
const std::string &property,
const char *value);
98 void set_property(
const std::string &property,
float value);
99 void set_property(
const std::string &property,
int value);
100 void set_property(
const std::string &property,
bool value);
107 {
return StringConversions::to_float(property(prop)); }
114 {
return StringConversions::to_int(property(prop)); }
121 {
return StringConversions::to_bool(property(prop)); }
128 {
return from_ !=
"" && to_ !=
""; }
134 {
return directed_; }
137 std::string property(
const std::string &prop)
const;
144 {
return StringConversions::to_float(property(prop)); }
151 {
return StringConversions::to_int(property(prop)); }
158 {
return StringConversions::to_bool(property(prop)); }
167 {
return from_ == e.from_ && to_ == e.to_ && directed_ == e.directed_; }
176 {
return (from_ == e.from_ && to_ < e.to_) || (from_ < e.from_); }
184 operator bool()
const 185 {
return from_ !=
"" && to_ !=
""; }
193 std::map<std::string, std::string> properties_;
const std::string & from() const
Get edge originating node name.
bool property_as_bool(const std::string &prop)
Get property converted to bol.
Cartesian coordinates (2D).
Fawkes library namespace.
bool is_directed() const
Check if edge is directed.
float property_as_float(const std::string &prop)
Get property converted to float.
const NavGraphNode & from_node() const
Get edge originating node.
const std::map< std::string, std::string > & properties() const
Get all properties.
bool operator==(const NavGraphEdge &e) const
Check edges for equality.
int property_as_int(const std::string &prop) const
Get property converted to int.
bool property_as_bool(const std::string &prop) const
Get property converted to bol.
const std::string & to() const
Get edge target node name.
bool is_valid() const
Check if edge is valid.
bool has_property(const std::string &property) const
Check if node has specified property.
float property_as_float(const std::string &prop) const
Get property converted to float.
int property_as_int(const std::string &prop)
Get property converted to int.
const NavGraphNode & to_node() const
Get edge target node.
bool operator<(const NavGraphEdge &e) const
Less than operator based on node from and to names.