/* SCCS - @(#)TypeNode.java 1.6 - 09/01/99 - 19:59:39 */ /* * Copyright (c) 1997 USC Brain Project. email nsl@java.usc.edu. */ package pp.src.jbf; import java.lang.String; public class TypeNode extends YYtoken{ public String txt; /** */ public TypeNode(int classtype, YYtoken t) { // well, it is kind of convenience to reuse something in YYtokentypes. super(classtype, t.text, t.lineno, t.charno, t.charno0); txt = t.text; if (classtype= CLASS) { if (txt.equals("NslBoolean") || txt.equals("NslBoolean0")){ type = BOOL; nslBool = true; dim = nslDim = 0; } else if (txt.equals("NslBoolean1")){ type = BOOL; nslBool = true; dim = nslDim = 1; } else if (txt.equals("NslBoolean2")){ type = BOOL; nslBool = true; dim = nslDim = 2; } else if (txt.equals("NslDouble") || txt.equals("NslDouble0")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslDouble1")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslDouble2")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslDouble3")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 3; } else if (txt.equals("NslDouble4")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 4; } else if (txt.equals("NslFloat") || txt.equals("NslFloat0")) { type = FLOAT; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslFloat1")) { type = FLOAT; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslFloat2")) { type = FLOAT; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslFloat3")) { type = FLOAT; nslNumeric = true; dim = nslDim = 3; } else if (txt.equals("NslFloat4")) { type = FLOAT; nslNumeric = true; dim = nslDim = 4; } else if (txt.equals("NslInt") || txt.equals("NslInt0")) { type = INT; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslInt1")) { type = INT; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslInt2")) { type = INT; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslInt3")) { type = INT; nslNumeric = true; dim = nslDim = 3; } else if (txt.equals("NslInt4")) { type = INT; nslNumeric = true; dim = nslDim = 4; } else //--------------- if (txt.equals("NslDoutDouble") || txt.equals("NslDoutDouble0")) { //System.out.println("Double!!!"); type = DOUBLE; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDoutDouble1")) { type = DOUBLE; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDoutDouble2")) { type = DOUBLE; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDoutDouble3")) { type = DOUBLE; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDoutDouble4")) { type = DOUBLE; nslPort = true; dim = nslDim = 4; } else if (txt.equals("NslDoutFloat") || txt.equals("NslDoutFloat0")) { type = FLOAT; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDoutFloat1")) { type = FLOAT; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDoutFloat2")) { type = FLOAT; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDoutFloat3")) { type = FLOAT; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDoutFloat4")) { type = FLOAT; nslPort = true; dim = nslDim = 4; } else if (txt.equals("NslDoutInt") || txt.equals("NslDoutInt0")) { type = INT; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDoutInt1")) { type = INT; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDoutInt2")) { type = INT; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDoutInt3")) { type = INT; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDoutInt4")) { type = INT; nslPort = true; dim = nslDim = 4; } //--------------- else if (txt.equals("NslDinDouble") || txt.equals("NslDinDouble0")) { //System.out.println("Double!!!"); type = DOUBLE; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDinDouble1")) { type = DOUBLE; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDinDouble2")) { type = DOUBLE; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDinDouble3")) { type = DOUBLE; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDinDouble4")) { type = DOUBLE; nslPort = true; dim = nslDim = 4; } else if (txt.equals("NslDinFloat") || txt.equals("NslDinFloat0")) { type = FLOAT; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDinFloat1")) { type = FLOAT; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDinFloat2")) { type = FLOAT; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDinFloat3")) { type = FLOAT; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDinFloat4")) { type = FLOAT; nslPort = true; dim = nslDim = 4; } else if (txt.equals("NslDinInt") || txt.equals("NslDinInt0")) { type = INT; nslPort = true; dim = nslDim = 0; } else if (txt.equals("NslDinInt1")) { type = INT; nslPort = true; dim = nslDim = 1; } else if (txt.equals("NslDinInt2")) { type = INT; nslPort = true; dim = nslDim = 2; } else if (txt.equals("NslDinInt3")) { type = INT; nslPort = true; dim = nslDim = 3; } else if (txt.equals("NslDinInt4")) { type = INT; nslPort = true; dim = nslDim = 4; } if (nslPort) nslNumeric=true; } } public TypeNode(YYtoken t) { this(t.tokentype, t); } public TypeNode(TypeNode t) { super(t.tokentype, t.text, t.lineno, t.charno, t.charno0); txt = t.text; numeric = t.numeric; nslNumeric = t.nslNumeric; nslBool = t.nslBool; nslPort = t.nslPort; type = t.type; dim = t.dim; nslDim = t.nslDim; } /* sets the type properties according to the string passed. used for forcing NslHier... types to regular numeric */ public void setProperties(String txt) { if (txt.equals("NslHierDouble") || txt.equals("NslHierDouble0")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslHierDouble1")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslHierDouble2")) { type = DOUBLE; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslHierFloat") || txt.equals("NslHierFloat0")) { type = FLOAT; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslHierFloat1")) { type = FLOAT; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslHierFloat2")) { type = FLOAT; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslHierInt") || txt.equals("NslHierInt0")) { type = INT; nslNumeric = true; dim = nslDim = 0; } else if (txt.equals("NslHierInt1")) { type = INT; nslNumeric = true; dim = nslDim = 1; } else if (txt.equals("NslHierInt2")) { type = INT; nslNumeric = true; dim = nslDim = 2; } else if (txt.equals("NslHierBulkNumeric")) { type = UNKNOWN; nslNumeric = true; dim = nslDim = -1; } else { System.err.println("TypeNode: Internal Error, shouldn't have "+txt+ " as an argument to setProperties"); } } public void addDim(int i) { dim+=i; } public void addDim(YYtoken t) { if (t!=null) dim += ((Int_Token) t).int_val; } public void subDim(int i) { dim-=i; } public void subDim(YYtoken t) { if (t!=null) dim -= ((Int_Token) t).int_val; } public int getDim() { return dim; } /** classtype list; */ public static final int VOID = 1; public static final int BOOL = 2; public static final int BYTE = 3; public static final int CHAR = 4; public static final int SHORT = 5; public static final int INT = 6; public static final int LONG = 7; public static final int FLOAT = 8; public static final int DOUBLE = 9; public static final int STRING = 10; public static final int MODULE = 20; public static final int CLASS = 21; // other classes public static final int UNKNOWN = 100; // dunno public int type; public boolean numeric; public boolean nslNumeric; public boolean nslPort; public boolean nslBool; public int dim; public int nslDim; }