1234567891011121314151617181920212223242526272829303132333435 |
- from typing import TYPE_CHECKING, List, Callable, Generator
- from api.od import ODAPI
- from .id_generator import IdGenerator
- class ExecNode:
- def __init__(self, out_connections: int = 1) -> None:
- from .null_node import NullNode
- self.next_state: list[ExecNode] = []
- if out_connections > 0:
- self.next_state = [NullNode()]*out_connections
- self.id: int = IdGenerator().generate_id()
- def nextState(self) -> "ExecNode":
- return self.next_state[0]
- def connect(self, next_state: "ExecNode", from_gate: int = 0, to_gate: int = 0) -> None:
- if from_gate >= len(self.next_state):
- raise IndexError
- self.next_state[from_gate] = next_state
- def execute(self, od: ODAPI) -> Generator | None:
- return None
- def get_id(self) -> int:
- return self.id
- def generate_dot(self, nodes: List[str], edges: List[str], visited: set[int]) -> None:
- visited.add(self.id)
- for edge in self.next_state:
- edges.append(f"{self.id} -> {edge.get_id()}")
- for next in self.next_state:
- next.generate_dot(nodes, edges, visited)
|