public final class MergeInt
Merges an array of strictly increasing int input streams into one strictly increasing output stream.
Warning: this process assumes that its input channel array has at least two elements.
Input Channels | ||
---|---|---|
in[] | int | Assume: in.length >= 2. |
Output Channels | ||
out | int | All channels in this package carry integers. |
import org.jcsp.lang.*; import org.jcsp.util.ints.*; public final class MergeIntExample { public static void main (String[] argv) { final One2OneChannelInt[] a = ChannelInt.createOne2One (4); final One2OneChannelInt[] b = ChannelInt.createOne2One (3, new InfiniteBufferInt ()); final One2OneChannelInt c = ChannelInt.createOne2One (); final One2OneChannelInt d = ChannelInt.createOne2One (); new Parallel ( new CSProcess[] { new MultInt (2, a[0].in (), b[0].out ()), new MultInt (3, a[1].in (), b[1].out ()), new MultInt (5, a[2].in (), b[2].out ()), new MergeInt (ChannelInt.getInputArray (b), c.out ()), new PrefixInt (1, c.in (), d.out ()), new DeltaInt (d.in (), ChannelInt.getOutputArray (a)), new PrinterInt (a[3].in (), "--> ", "\n") } ).run (); } }
public void run () { final int n = in.length; // deduce: n >= 2 switch (n) { case 2: new Merge2Int (in[0], in[1], out).run (); break; case 3: final One2OneChannelInt c = ChannelInt.createOne2One (); new Parallel ( new CSProcess[] { new Merge2Int (in[0], in[1], c.out ()), new Merge2Int (c.in (), in[2], out) } ).run (); break; default: // deduce: n >= 4 final int n2 = n/2; ChannelInputInt[] bottom = new ChannelInputInt[n2]; ChannelInputInt[] top = new ChannelInputInt[n - n2]; for (int i = 0; i < n2; i++) { bottom[i] = in[i]; } for (int i = n2; i < n; i++) { top[i - n2] = in[i]; } final One2OneChannelInt[] d = ChannelInt.createOne2One (2); new Parallel ( new CSProcess[] { new MergeInt (bottom, d[0].out ()), new MergeInt (top, d[1].out ()), new Merge2Int (d[0].in (), d[1].in (), out) } ).run (); break; } }
Constructor and description |
---|
MergeInt
(ChannelInputInt[] in, ChannelOutputInt out) Construct a new Merge2Int process with the input channels inand the output channel out. |
Construct a new Merge2Int process with the input channels inand the output channel out. The ordering of the input channels makes no difference to the behaviour of this process.
in
- the input channelsout
- the output channelJCSP for Java 1.8 generated 14-10-2016 by Jon Kerridge, Edinburgh Napier University - j dot kerridge at napier dot ac dot uk