a_star :: Graph :: defaultinit
# General graph
class Graph[N: Node, L: Link]
super Serializable
# Nodes in this graph
var nodes = new Set[N]
# Links in this graph
var links = new Set[L]
# Add a `node` to this graph
fun add_node(node: N): N
do
nodes.add(node)
return node
end
# Add a `link` to this graph
fun add_link(link: L): L
do
links.add(link)
link.from.links.add(link)
return link
end
# Used to check if nodes have been searched in one pathfinding
private var pathfinding_current_evocation: Int = 0
redef fun core_serialize_to(serializer)
do
serializer.serialize_attribute("nodes", nodes)
serializer.serialize_attribute("links", links)
end
redef init from_deserializer(deserializer)
do
deserializer.notify_of_creation self
var nodes = deserializer.deserialize_attribute("nodes", (new GetName[Set[N]]).to_s)
if deserializer.deserialize_attribute_missing then
deserializer.errors.add new AttributeMissingError(self, "nodes")
end
if nodes isa Set[N] then self.nodes = nodes
var links = deserializer.deserialize_attribute("links", (new GetName[Set[L]]).to_s)
if deserializer.deserialize_attribute_missing then
deserializer.errors.add new AttributeMissingError(self, "links")
end
if links isa Set[L] then for link in links do add_link link
end
end
lib/a_star/a_star.nit:245,1--298,3