SGCluster.java

class SGCluster$C1P1 {
// STATE SPACE VARIABLES: 

private static int G1_1_1 , G1_1_2 , G1_2_1 , G1_2_2 ;

// LOCAL VARIABLES: 
private static int L1_1 , L1_2 ;
private static Object clusterCounterLock = new Object();

/**======================================================**
 **
 ** Generated lock and methods for atomic: C1$enter
 **
 **======================================================**/

public static void C1$enter() {

   synchronized (clusterCounterLock) {
      L1_1 += 1 ; if ( L1_1 == 1 ) { G1_1_1 -= 1 ; G1_2_1 -= 10 ; L1_1 = 0 ; } ; 
   }

   synchronized (condition$C1$exit) {
      condition$C1$exit.notify(); 
   }

   synchronized (condition$P1$exit) {
      condition$P1$exit.notifyAll(); 
   }


}


/**======================================================**
 **
 ** Generated lock and methods for await: C1$exit
 **
 **======================================================**/

private static Object condition$C1$exit = new Object();

public static void C1$exit(){
   synchronized (condition$C1$exit) {

      while ( !check$C1$exit())
         try {

            condition$C1$exit.wait();
         } catch (InterruptedException e){}

   }

}
private static boolean check$C1$exit() {

   synchronized (clusterCounterLock) {
      if (G1_1_1 <= -1 && G1_1_2 <= -1 ) {

         G1_1_1 += 1 ; G1_1_2 += 1 ; 
         return true;

      } else
         return false;
   }
}
/**======================================================**
 **
 ** Generated lock and methods for atomic: P1$enter
 **
 **======================================================**/

public static void P1$enter() {
   synchronized (clusterCounterLock) {

      L1_2 += 1 ; if ( L1_2 == 10 ) { G1_1_2 -= 1 ; G1_2_2 -= 10 ; L1_2 = 0 ; } ; 
   }

   synchronized (condition$C1$exit) {
      condition$C1$exit.notify(); 
   }

   synchronized (condition$P1$exit) {
      condition$P1$exit.notifyAll(); 
   }


}


/**======================================================**
 **
 ** Generated lock and methods for await: P1$exit
 **
 **======================================================**/

private static Object condition$P1$exit = new Object();

public static void P1$exit(){
   synchronized (condition$P1$exit) {

      while ( !check$P1$exit())
         try {

            condition$P1$exit.wait();
         } catch (InterruptedException e){}

   }

}
private static boolean check$P1$exit() {

   synchronized (clusterCounterLock) {
      if (G1_2_1 <= -1 && G1_2_2 <= -1 ) {

         G1_2_1 += 1 ; G1_2_2 += 1 ; 
         return true;

      } else
         return false;
   }
}
}


syntax highlighted by Code2HTML, v. 0.9