definition module processstack


//	********************************************************************************
//	Clean Standard Object I/O library.
//	********************************************************************************


from	StdOverloaded	import class ==
from	systemid		import :: SystemId


::	ProcessShowState
	=	{	psId	:: !SystemId		// the id of the process
		,	psShow	:: !ShowFlag		// flag: True iff the process is visible
		,	psKind	:: !ProcessKind		// the kind of the process
		}
::	ProcessKind		=	InteractiveProcess | VirtualProcess
::	ShowFlag		:==	Bool
::	ProcessStack	:==	[ProcessShowState]

instance == ProcessKind

emptyProcessStack		:: ProcessStack
pushProcessShowState	:: !ProcessShowState	!ProcessStack -> ProcessStack
setProcessShowState		:: !SystemId !Bool		!ProcessStack -> ProcessStack
selectProcessShowState	:: !SystemId			!ProcessStack -> ProcessStack
removeProcessShowState	:: !SystemId			!ProcessStack -> (!ProcessShowState,!ProcessStack)
topShowProcessShowState	::						!ProcessStack -> (!Bool,!SystemId)
