interpreter&vm: handle multi-iterator
[nit.git] / lib / a_star.nit
index a0b1b48..7b7ce02 100644 (file)
@@ -14,9 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Services related to pathfinding of graphs using A*
-# A single graph may have different properties according to the `PathContext` used
+# A* pathfinding in graphs
 #
+# A single graph may have different properties according to the `PathContext` used
 #
 # Usage:
 #
@@ -194,7 +194,7 @@ class Node
        # With a large graph it can cause a stack overflow.
        #
        # Instead, we serialize the nodes first and then the links.
-       redef fun core_serialize_to(serializer: Serializer)
+       redef fun core_serialize_to(serializer)
        do
                serializer.serialize_attribute("graph", graph)
        end
@@ -211,7 +211,7 @@ end
 
 # Link between two nodes and associated to a graph
 class Link
-       auto_serializable
+       serialize
 
        # Type of the nodes in `graph`
        type N: Node
@@ -265,7 +265,7 @@ class Graph[N: Node, L: Link]
        # Used to check if nodes have been searched in one pathfinding
        private var pathfinding_current_evocation: Int = 0
 
-       redef fun core_serialize_to(serializer: Serializer)
+       redef fun core_serialize_to(serializer)
        do
                serializer.serialize_attribute("nodes", nodes)
                serializer.serialize_attribute("links", links)
@@ -287,7 +287,7 @@ end
 
 # Result from path finding and a walkable path
 class AStarPath[N]
-       auto_serializable
+       serialize
 
        # Total cost of this path
        var total_cost: Int
@@ -316,8 +316,8 @@ class AStarPath[N]
 end
 
 # Context related to an evocation of pathfinding
-class PathContext
-       auto_serializable
+abstract class PathContext
+       serialize
 
        # Type of the nodes in `graph`
        type N: Node
@@ -352,7 +352,7 @@ end
 # Warning: A* is not optimize for such a case
 class ConstantPathContext
        super PathContext
-       auto_serializable
+       serialize
 
        redef fun worst_cost do return 1
        redef fun cost(l) do return 1
@@ -364,7 +364,7 @@ end
 # A `PathContext` for graphs with `WeightedLink`
 class WeightedPathContext
        super PathContext
-       auto_serializable
+       serialize
 
        redef type L: WeightedLink
 
@@ -380,7 +380,7 @@ class WeightedPathContext
                self.worst_cost = worst_cost
        end
 
-       redef var worst_cost: Int is noinit
+       redef var worst_cost is noinit
 
        redef fun cost(l) do
                return l.weight
@@ -393,15 +393,15 @@ end
 # A `Link` with a `weight`
 class WeightedLink
        super Link
-       auto_serializable
+       serialize
 
        # The `weight`, or cost, of this link
        var weight: Int
 end
 
 # Advanced path conditions with customizable accept states
-class TargetCondition[N: Node]
-       auto_serializable
+abstract class TargetCondition[N: Node]
+       serialize
 
        # Should the pathfinding accept `node` as a goal?
        fun accept(node: N): Bool is abstract