|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jcsp.plugNplay.ints.MergeInt
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.*; 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 Summary | |
---|---|
MergeInt(ChannelInputInt[] in,
ChannelOutputInt out)
Construct a new Merge2Int process with the input channels inand the output channel out. |
Method Summary | |
---|---|
void |
run()
The main body of this process. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MergeInt(ChannelInputInt[] in, ChannelOutputInt out)
in
- the input channels (there must be at least 2)out
- the output channelMethod Detail |
---|
public void run()
run
in interface CSProcess
|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |