package se.chalmers.cs.gf.dot; import java.awt.Point; import se.chalmers.cs.gf.dot.Absyn.*; public class DotUtil { public static Point getPosAttr(MaybeAttrList as, String l) { return idPos(getAttr(as, l)); } public static String getStringAttr(MaybeAttrList as, String l) { return idValue(getAttr(as, l)); } public static double getDoubleAttr(MaybeAttrList as, String l) { return idDouble(getAttr(as, l)); } public static ID getAttr(MaybeAttrList as, String l) { if (as instanceof NoAttrList) return null; for (Attr a : ((AnAttrList)as).listattr_) { if (idValue(a.id_1).equals(l)) return a.id_2; } return null; } public static String idValue(ID id) { if (id instanceof IdentID) return ((IdentID)id).ident_; if (id instanceof StringID) return ((StringID)id).string_; if (id instanceof IntID) return ((IntID)id).integer_.toString(); if (id instanceof DoubleID) return ((DoubleID)id).double_.toString(); throw new RuntimeException("Bad DOT ID: " + id); } public static double idDouble(ID id) { if (id instanceof StringID) return Double.parseDouble(((StringID)id).string_); if (id instanceof IntID) return ((IntID)id).integer_; if (id instanceof DoubleID) return ((DoubleID)id).double_; throw new RuntimeException("Bad DOT ID: " + id); } private static Point idPos(ID id) { if (!(id instanceof StringID)) return null; String s = ((StringID)id).string_; int i = s.indexOf(","); if (i == -1) return null; int x = Integer.parseInt(s.substring(0,i)); int y = Integer.parseInt(s.substring(i+1)); return new Point(x,y); } }