implementation module PmCallBack

import StdBool

from IdeState import ::GeneralSt{..},::General

start :: !.a !(.Bool -> .(.a -> .(*GeneralSt -> *(.a,*GeneralSt)))) !*GeneralSt -> *GeneralSt
start ini_step step ps
	# (ls,ps) = step False ini_step ps
	| not ps.gst_continue_or_stop
		= start ls step ps
		= {ps & gst_continue_or_stop=False}

cont :: !*(!.a,!*GeneralSt) -> *(.a,!*GeneralSt);
cont (ls,ps)
	= (ls,ps)

stop :: !*(.a,!*GeneralSt) -> *(.a,!*GeneralSt);
stop (ls,ps)
	= (ls,{ps & gst_continue_or_stop=True})