Archived
0
0
This repository has been archived on 2026-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
Files
HeurAMS-legacy/src/heurams/kernel/reactor/procession.py

44 lines
1.3 KiB
Python

import heurams.kernel.particles as pt
from .states import PhaserState, ProcessionState
class Procession():
"""队列: 标识单次记忆流程"""
def __init__(self, atoms: list, phase: PhaserState, name: str = ""):
self.atoms = atoms
self.queue = atoms.copy()
self.current_atom = atoms[0]
self.cursor = 0
self.name = name
self.phase = phase
self.state: ProcessionState = ProcessionState.RUNNING
def forward(self, step = 1):
self.cursor += step
if self.cursor == len(self.queue):
self.state = ProcessionState.FINISHED
else:
self.state = ProcessionState.RUNNING
try:
self.current_atom = self.queue[self.cursor]
return 1 # 成功
except IndexError as e:
print(f"{e}")
return 0
def append(self, atom = None):
if atom == None:
atom = self.current_atom
if self.queue[len(self.queue) - 1] != atom or len(self) <= 1:
self.queue.append(atom)
def __len__(self):
return (len(self.queue) - self.cursor)
def process(self):
return (self.cursor)
def total_length(self):
return len(self.queue)
def is_empty(self):
return len(self.queue)