// SIM.HPP
#include "cor.hpp"

class process : private coroutine
{
friend void startProcess(void);
friend float currentTime(void);
friend void hold(float interval);
friend void passivate(void);
friend void activate(process *p,float time);
friend void cancel(process *p);
	float time;
	virtual void superMain(void);
	virtual void main(void)	{}
public:	process(void)		{time=0.0;}
	~process(void)		{}
};

void initProcesses(void);
void activate(process *p,float time);
void hold(float interval);
void passivate(void);
void cancel(process *p);
process* mainProcess(void);
process* currentProcess(void);
float currentTime(void);

