#include <stdio.h>
#include "parc.h"

using namespace parc;

module top {
public:
  char i;
  top() {
    i = 1;
  }

  signal<char> sig;

  process p1 {
    driver<char> drv1=sig;
    char d;
  start:
    fork {
      for (; i < 5 ; i++) {
	printf("f1: %d @ %3.3f\n",i,Kern->Now().D());
	drv1 @ 5 := i;
	wait(5);
      }
      fork {
	do { 
	  @(sig) {
	    printf("f2: %d @ %3.3f\n",sig,Kern->Now().D()); 
	  } 
	} while (4 != sig);
	do { 
	  @(sig) {
	    printf("f3: %d @ %3.3f\n",sig,Kern->Now().D()); 
	  }
	} while (4 != sig);
      }
    }
  } a;

};

void test()
{
  top t;

  root()->StartAll();
}

int main(int argc,char **argv)
{
  test();
}