You've already forked HeurAMS-legacy
44 lines
1.3 KiB
Python
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) |