From 9b0bb4bd0b07c1340bc462c4c35f213cef6271cd Mon Sep 17 00:00:00 2001
From: Anders Nilsson <csandersn@garde>
Date: Thu, 7 May 2009 16:55:03 +0200
Subject: [PATCH] Can now print a _very_ simple schedule

---
 examples/actors/SSRAnalysis.java | 16 ++++++++++--
 examples/actors/xdf/SSR.jrag     | 43 ++++++++++++++++++--------------
 2 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/examples/actors/SSRAnalysis.java b/examples/actors/SSRAnalysis.java
index a39078e..021dd61 100644
--- a/examples/actors/SSRAnalysis.java
+++ b/examples/actors/SSRAnalysis.java
@@ -8,14 +8,15 @@
 
 import xdfAST.Start;
 import xdfAST.Instance;
-import java.util.LinkedList;
+import java.util.HashSet;
 
 public class SSRAnalysis extends XdfParser {
 	public static void main(String args[]) {
 		Start ast = parse(args);
 
 		ast.genSSR(System.out);
-		LinkedList<Instance> l = ast.genStaticSchedule(new LinkedList<Instance>());
+		HashSet<Instance> l = ast.genStaticSchedule(new HashSet<Instance>());
+		System.out.println("\n\n");
 
 		for (Instance i: l){
 			do {
@@ -24,6 +25,17 @@ public class SSRAnalysis extends XdfParser {
 			} while (i != null);
 			System.out.println();
 		}
+
+		String s = genScheduleXML(l);
+	}
+
+
+	static String genScheduleXML(HashSet<Instance> set) {
+		StringBuffer sb = new StringBuffer();
+		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+		sb.append("<Schedule>\n");
+
+		return sb.toString();
 	}
 }
 
diff --git a/examples/actors/xdf/SSR.jrag b/examples/actors/xdf/SSR.jrag
index 045a82e..5ebd944 100644
--- a/examples/actors/xdf/SSR.jrag
+++ b/examples/actors/xdf/SSR.jrag
@@ -8,7 +8,7 @@
 
 import java.io.PrintStream;
 import java.io.FileReader;
-import java.util.LinkedList;
+import java.util.HashSet;
 
 
 aspect SSR {
@@ -28,14 +28,15 @@ aspect SSR {
 }
 
 aspect SDF {
-	syn boolean Instance.isSDF() = xlim().isSDF();
-	syn xlimAST.Start Instance.xlim() {
+	syn boolean Instance.isSDF() {
 		try {
-			xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name()));
-			return parser.Start();
+ 			System.out.println("Trying to open: "+name());
+			xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name()+".xlim"));
+			return parser.Start().isSDF();
 		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
+			System.out.println( name()+".xlim not found");
+// 			e.printStackTrace();
+			return false;
 		}
 	}
 }
@@ -45,31 +46,35 @@ aspect StaticSchedule {
 	public Instance Instance.prev;
 
 
-	syn LinkedList<Instance> ASTNode.genStaticSchedule(LinkedList<Instance> l) = l;
-	eq Start.genStaticSchedule(LinkedList<Instance> l) = getSpecification().genStaticSchedule(l);
-	eq Specification.genStaticSchedule(LinkedList<Instance> l) {
+	syn HashSet<Instance> ASTNode.genStaticSchedule(HashSet<Instance> l) = l;
+	eq Start.genStaticSchedule(HashSet<Instance> l) = getSpecification().genStaticSchedule(l);
+	eq Specification.genStaticSchedule(HashSet<Instance> l) {
 		for (int i=0; i<getNumElement(); i++) {
 			l = getElement(i).genStaticSchedule(l);
 		}
 		return l;
 	}
-	eq XDF.genStaticSchedule(LinkedList<Instance> l) {
+	eq XDF.genStaticSchedule(HashSet<Instance> l) {
 		for (int i=0; i<getNumElement(); i++) {
 			l = getElement(i).genStaticSchedule(l);
 		}
 		return l;		
 	}
-	eq Connection.genStaticSchedule(LinkedList<Instance> l) {
+	eq Connection.genStaticSchedule(HashSet<Instance> l) {
 		Instance src = getSource();
 		Instance dest = getDest();
-		if (src.isSDF() && dest.isSDF()) {
+		if (dest.isSDF() && src.isSDF()) {
 			src.next = dest;
 			dest.prev = src;
+			l.remove(dest);
 		}
 		if (src.prev == null) {
 			l.add(src);
 		}
-// 		System.out.println(src.name());
+		if (dest.prev == null) {
+			l.add(dest);
+		}
+ 		System.out.println(src.name());
 		return l;
 // 		Instance dest = getDest();
 	}
@@ -129,9 +134,9 @@ aspect misc {
 	Note Instance.getUIDNote() {
 		for (Element e : getElements()) {
 			if (e instanceof Note) {
-				System.out.println("Checking "+e.kind());
+// 				System.out.println("Checking "+e.kind());
 				if (e.kind().equals("UID")) {
-					System.out.println("  Yes");
+// 					System.out.println("  Yes");
 					return (Note) e;
 				}
 			}
@@ -142,10 +147,10 @@ aspect misc {
 	syn String Element.kind() = "";
 	eq Note.kind() {
 		for (Attribute a : getAttributes()) {
-			System.out.println("   checking: "+a);
+// 			System.out.println("   checking: "+a);
 			if (a.isKind()) {
-				System.out.println("    found "+value());
-				return value();
+// 				System.out.println("    found "+fix(a.getAttrValue().getLITERAL()));
+				return fix(a.getAttrValue().getLITERAL());
 			}
 		}
 		return "";
-- 
GitLab