Property definitions

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