/* SCCS - @(#)PortListNode.java 1.2 - 02/28/99 - 12:39:22 */ /* * Copyright (c) 1997 USC Brain Project. email nsl@java.usc.edu. */ // // PortListNode //////////////////////////////////////////////////////////// /** * PortListNode - Port List */ package npp.src.util; import java.lang.String; import java.util.*; import pp.src.jbf.*; public class PortListNode extends YYtoken{ /** Unary Expression node construction */ public PortListNode(YYtoken t) { super(YYtokentypes.nt_expression, t.text, t.lineno, t.charno, t.charno0); list = new Vector(); list.addElement(t); processed = false; } public void addHead(YYtoken t) { list.insertElementAt(t, 0); } public void addTail(YYtoken t) { list.addElement(t); } public void remove() { list.removeAllElements(); } public int size() { return list.size(); } public String multiplex(PortListNode dest) { Enumeration E,D; /* E: source/left D: dest/right */ YYtoken _to,_from; String s=""; E = list.elements(); while (E.hasMoreElements()) { _from = (YYtoken)E.nextElement(); D = dest.list.elements(); while (D.hasMoreElements()) { _to = (YYtoken)D.nextElement(); s+="\tconn("+ root(_from.text)+','+qtail(_from.text)+','+ root(_to.text)+','+qtail(_to.text)+");\n"; } } return(s); } public String fanin(String dest) { Enumeration E = list.elements(); YYtoken t; String s=""; while (E.hasMoreElements()) { t = (YYtoken)E.nextElement(); s+="\tconn("+ root(t.text)+','+qtail(t.text)+','+ root(dest)+','+qtail(dest)+");\n"; } return(s); } public String fanout(String source) { Enumeration E = list.elements(); YYtoken t; String s=""; while (E.hasMoreElements()) { t = (YYtoken)E.nextElement(); s+="\tconn("+ root(source)+','+qtail(source)+','+ root(t.text)+','+qtail(t.text)+");\n"; } return(s); } static public int lastdot(String s) { int i,l; l=s.length(); for (i=l-1;l>=0;i--) if (s.charAt(i)=='.') return(i); return(-1); } static public String root(String s) { return(s.substring(0,lastdot(s))); } static public String tail(String s) { return(s.substring(lastdot(s)+1,s.length())); } static public String qtail(String s) { return("\""+s.substring(lastdot(s)+1,s.length())+"\""); } /** * Code generation. * Generate all expressions in the list * @param npp Nsl Preprocessor * @return error value */ /* public int genCode(NslPreProcessor npp) { java.util.Enumeration E = list.elements(); ExprNode expr; while(E.hasMoreElements()) { expr = (ExprNode)E.nextElement(); expr.genCode(npp); if(expr.processed) processed = true; } return NO_OP; } */ public final static int NO_OP = 0; public Vector list; public String code; public boolean processed; }