public final class MergeInt extends java.lang.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.
|
| Modifier and Type | Method and Description |
|---|---|
void |
run()
The main body of this process.
|
public MergeInt(ChannelInputInt[] in, ChannelOutputInt out)
in - the input channels (there must be at least 2)out - the output channelCopyright © 1996–2019. All rights reserved.