public final class MergeInt extends Object implements CSProcess
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.*; import org.jcsp.plugNplay.ints.*; public class MergeIntExample { public static void main (String[] argv) { final One2OneChannelInt[] a = Channel.one2oneIntArray (5); final One2OneChannelInt[] b = Channel.one2oneIntArray (4, new InfiniteBufferInt ()); final One2OneChannelInt c = Channel.one2oneInt (); final One2OneChannelInt d = Channel.one2oneInt (); 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 MultInt (7, a[3].in (), b[3].out ()), new MergeInt (Channel.getInputArray (b), c.out ()), new PrefixInt (1, c.in (), d.out ()), new DeltaInt (d.in (), Channel.getOutputArray (a)), new PrinterInt (a[4].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 = Channel.one2oneInt (); 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 = Channel.one2oneIntArray (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; } }
Merge2Int
Constructor and Description |
---|
MergeInt(ChannelInputInt[] in,
ChannelOutputInt out)
Construct a new Merge2Int process with the input channels
inand the output channel out.
|
public MergeInt(ChannelInputInt[] in, ChannelOutputInt out)
in
- the input channels (there must be at least 2)out
- the output channelCopyright © 1996–2016. All rights reserved.