81# ifndef TPL_EUCLIDIAN_GRAPH_H
82# define TPL_EUCLIDIAN_GRAPH_H
94 template <
typename Node_Info>
144 template <
typename Arc_Info>
179 template <
class __Eucl
idian_Node,
class __Eucl
idian_Arc>
246 Node * search_node(
const Point &);
249 template <
class __Eucl
idian_Node,
class __Eucl
idian_Arc>
273 template <
class Node,
class Arc>
277 it.has_curr(); it.next_ne())
280 if (curr->get_position() == point)
286 template <
class __Eucl
idian_Graph>
316 if (graph.get_num_nodes() < 1)
319 typename __Euclidian_Graph::Node_Iterator
itor(graph);
324 for (
int i = 1;
itor.has_curr();
itor.next_ne(), ++i)
326 const Point & p =
itor.get_curr()->get_position();
344 Point &
add_point(
typename __Euclidian_Graph::Node *node)
Exception handling system with formatted messages for Aleph-w.
#define ah_domain_error_if(C)
Throws std::domain_error if condition holds.
#define ah_logic_error_if(C)
Throws std::logic_error if condition holds.
WeightedDigraph::Node Node
const Geom_Number & get_x_node_ratio() const
Point & add_point(typename __Euclidian_Graph::Node *node)
void set_y_node_ratio(const Geom_Number &_y_node_ratio)
const Geom_Number & get_y_node_ratio() const
const Point & get_west_point() const
void set_x_scale(const Geom_Number &_x_scale)
Abstract_Euclidian_Plane()
void set_x_node_ratio(const Geom_Number &_x_node_ratio)
const Geom_Number & get_y_scale() const
Geom_Number get_width() const
~Abstract_Euclidian_Plane()
const Geom_Number & get_x_scale() const
const Point & get_north_point() const
void set_y_scale(const Geom_Number &_y_scale)
Geom_Number get_height() const
const Point & get_south_point() const
const Point & get_east_point() const
Abstract_Euclidian_Plane(__Euclidian_Graph &graph)
size_t size() const noexcept
Return the current dimension of array.
T & access(const size_t i) const noexcept
Fast access without checking allocation and bound_min_clock checking.
T & top() const
Return a modifiable reference to the last item of stack.
T & append()
Allocate a new entry to the end of array.
Euclidian_Arc(void *src, void *tgt, const Arc_Info &info)
Euclidian_Arc(void *src, void *tgt)
Euclidian_Arc(const Arc_Info &info)
Euclidian_Digraph(const Euclidian_Digraph< __Euclidian_Node, __Euclidian_Arc > &euclidian_digraph)
Euclidian_Digraph< __Euclidian_Node, __Euclidian_Arc > & operator=(Euclidian_Digraph< __Euclidian_Node, __Euclidian_Arc > &eg)
virtual ~Euclidian_Graph()
Euclidian_Graph(const Euclidian_Graph< Node, Arc > &euclidian_graph)
Node * insert_node(const Point &position)
Node::Node_Type Node_Type
Geom_Number get_distance(Arc *arc)
Node * insert_node(const Node_Type &info, const Point &position)
Node * insert_node(Node *node) noexcept override
Insertion of a node already allocated.
Euclidian_Graph< Node, Arc > & operator=(Euclidian_Graph< Node, Arc > &eg)
Node * search_node(const Point &)
List_Graph< Node, Arc > Graph
Node * insert_node(const Node_Type &info)
Euclidian_Node(const Point &_position)
const Point & get_position() const
Euclidian_Node(const Node_Info &info, const Point &_position)
Euclidian_Node(Euclidian_Node *node)
Euclidian_Node(const Node_Info &info)
Graph implemented with double-linked adjacency lists.
virtual Node * insert_node(Node *node) noexcept
Insertion of a node already allocated.
Node * get_src_node(Arc *arc) const noexcept
Return the source node of arc (only for directed graphs)
Node * get_tgt_node(Arc *arc) const noexcept
Return the target node of arc (only for directed graphs)
void clear_graph(GT &g) noexcept
Clean a graph: all its nodes and arcs are removed and freed.
void copy_graph(GT >gt, const GT &gsrc, bool cookie_map=false)
Explicit copy of graph.
Main namespace for Aleph-w library functions.
DynList< T > maps(const C &c, Op op)
Classic map operation.
2D point and geometric utilities.
mpq_class Geom_Number
Numeric type used by the geometry module.
Arc of graph implemented with double-linked adjacency lists.
Node belonging to a graph implemented with a double linked adjacency list.
Generic graph and digraph implementations.