at.dms.kjc.backendSupport
Class DelegatingChannel

java.lang.Object
  extended by at.dms.kjc.backendSupport.Channel
      extended by at.dms.kjc.backendSupport.DelegatingChannel

public class DelegatingChannel
extends Channel

A Channel that delegates all useful work to another channel. This is used to maintain one Channel per Edge in the case where a SliceNode does not generate any code. In such a case the Channel for an intra-slice edge will delagate to the Channel for the InterSliceEdge. A DelegatingChannel has its own source and destination but all other operations are delegated. It does not produce any method (or other) declarations since these would be redundant with the channel delegated to.

Author:
dimock

Field Summary
 
Fields inherited from class at.dms.kjc.backendSupport.Channel
bufferStore, extraCount, ident, rotationLength, theEdge, unique_id
 
Method Summary
 JMethodDeclaration assignFromPeekMethod()
           
 String assignFromPeekMethodName()
           
 JMethodDeclaration assignFromPopMethod()
           
 String assignFromPopMethodName()
           
 List<JStatement> beginInitRead()
           
 List<JStatement> beginInitWrite()
           
 List<JStatement> beginSteadyRead()
           
 List<JStatement> beginSteadyWrite()
           
 List<JStatement> dataDecls()
           
 List<JStatement> dataDeclsH()
           
 List<JStatement> endInitRead()
           
 List<JStatement> endInitWrite()
           
 List<JStatement> endSteadyRead()
           
 List<JStatement> endSteadyWrite()
           
static DelegatingChannel getChannel(Edge edge, Channel other)
          Make a new Channel or return an already-made channel.
 String getDelegatedIdent()
           
 SliceNode getDest()
           
 int getExtraCount()
           
 String getIdent()
           
 SliceNode getSource()
           
 CType getType()
           
 JMethodDeclaration peekMethod()
           
 String peekMethodName()
           
 JMethodDeclaration popManyMethod()
          Pop many items at once ignoring them.
 String popManyMethodName()
           
 JMethodDeclaration popMethod()
           
 String popMethodName()
           
 List<JStatement> postPreworkInitRead()
           
 JMethodDeclaration pushMethod()
           
 String pushMethodName()
           
 List<JStatement> readDecls()
           
 List<JStatement> readDeclsExtern()
           
 void setExtralength(int extracount)
           
 List<JStatement> topOfWorkSteadyRead()
           
 List<JStatement> topOfWorkSteadyWrite()
           
 List<JStatement> writeDecls()
           
 List<JStatement> writeDeclsExtern()
           
 
Methods inherited from class at.dms.kjc.backendSupport.Channel
addChannel, findChannel, getBuffers, printBuffers, reset, setRotationLengths
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getChannel

public static DelegatingChannel getChannel(Edge edge,
                                           Channel other)
Make a new Channel or return an already-made channel.

Parameters:
edge - The edge that this channel implements.
other - The channel that this delegates to.
Returns:
A channel for this edge, that

assignFromPeekMethod

public JMethodDeclaration assignFromPeekMethod()
Overrides:
assignFromPeekMethod in class Channel

assignFromPeekMethodName

public String assignFromPeekMethodName()
Overrides:
assignFromPeekMethodName in class Channel

assignFromPopMethod

public JMethodDeclaration assignFromPopMethod()
Overrides:
assignFromPopMethod in class Channel

assignFromPopMethodName

public String assignFromPopMethodName()
Overrides:
assignFromPopMethodName in class Channel

beginInitRead

public List<JStatement> beginInitRead()
Overrides:
beginInitRead in class Channel

beginInitWrite

public List<JStatement> beginInitWrite()
Overrides:
beginInitWrite in class Channel

beginSteadyRead

public List<JStatement> beginSteadyRead()
Overrides:
beginSteadyRead in class Channel

beginSteadyWrite

public List<JStatement> beginSteadyWrite()
Overrides:
beginSteadyWrite in class Channel

dataDecls

public List<JStatement> dataDecls()
Overrides:
dataDecls in class Channel

dataDeclsH

public List<JStatement> dataDeclsH()
Overrides:
dataDeclsH in class Channel

endInitRead

public List<JStatement> endInitRead()
Overrides:
endInitRead in class Channel

endInitWrite

public List<JStatement> endInitWrite()
Overrides:
endInitWrite in class Channel

endSteadyRead

public List<JStatement> endSteadyRead()
Overrides:
endSteadyRead in class Channel

endSteadyWrite

public List<JStatement> endSteadyWrite()
Overrides:
endSteadyWrite in class Channel

getExtraCount

public int getExtraCount()
Overrides:
getExtraCount in class Channel

getIdent

public String getIdent()
Overrides:
getIdent in class Channel

getDelegatedIdent

public String getDelegatedIdent()

getDest

public SliceNode getDest()
Overrides:
getDest in class Channel

getSource

public SliceNode getSource()
Overrides:
getSource in class Channel

getType

public CType getType()
Overrides:
getType in class Channel

peekMethod

public JMethodDeclaration peekMethod()
Overrides:
peekMethod in class Channel

peekMethodName

public String peekMethodName()
Overrides:
peekMethodName in class Channel

popManyMethod

public JMethodDeclaration popManyMethod()
Description copied from class: Channel
Pop many items at once ignoring them. Default method generated here to call popMethod() repeatedly.

Overrides:
popManyMethod in class Channel

popManyMethodName

public String popManyMethodName()
Overrides:
popManyMethodName in class Channel

popMethod

public JMethodDeclaration popMethod()
Overrides:
popMethod in class Channel

popMethodName

public String popMethodName()
Overrides:
popMethodName in class Channel

postPreworkInitRead

public List<JStatement> postPreworkInitRead()
Overrides:
postPreworkInitRead in class Channel

pushMethod

public JMethodDeclaration pushMethod()
Overrides:
pushMethod in class Channel

pushMethodName

public String pushMethodName()
Overrides:
pushMethodName in class Channel

readDecls

public List<JStatement> readDecls()
Overrides:
readDecls in class Channel

readDeclsExtern

public List<JStatement> readDeclsExtern()
Overrides:
readDeclsExtern in class Channel

setExtralength

public void setExtralength(int extracount)
Overrides:
setExtralength in class Channel

topOfWorkSteadyRead

public List<JStatement> topOfWorkSteadyRead()
Overrides:
topOfWorkSteadyRead in class Channel

topOfWorkSteadyWrite

public List<JStatement> topOfWorkSteadyWrite()
Overrides:
topOfWorkSteadyWrite in class Channel

writeDecls

public List<JStatement> writeDecls()
Overrides:
writeDecls in class Channel

writeDeclsExtern

public List<JStatement> writeDeclsExtern()
Overrides:
writeDeclsExtern in class Channel