From 2b4481f05baca3dbec62bbc68ce1750e3b68d20d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Mon, 14 May 2012 21:34:38 +0000
Subject: [PATCH] template for a call graph object

---
 src/main/scala/leon/CallGraph.scala | 30 +++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 src/main/scala/leon/CallGraph.scala

diff --git a/src/main/scala/leon/CallGraph.scala b/src/main/scala/leon/CallGraph.scala
new file mode 100644
index 000000000..952e8499e
--- /dev/null
+++ b/src/main/scala/leon/CallGraph.scala
@@ -0,0 +1,30 @@
+package leon
+
+import leon.purescala.Definitions._
+import leon.purescala.Trees._
+import leon.purescala.TypeTrees._
+import leon.purescala.Common._
+
+class CallGraph(val program: Program) {
+
+  sealed abstract class ProgramPoint
+  case class FunctionStart(fd: FunDef) extends ProgramPoint
+  case class ExpressionPoint(wp: Expr) extends ProgramPoint
+
+  sealed abstract class EdgeLabel
+  case class ConditionLabel(expr: Expr) extends EdgeLabel {
+    require(expr.getType == BooleanType)
+  }
+  case class FunctionInvocLabel(fd: FunDef, args: List[Expr]) extends EdgeLabel {
+    require(args.zip(fd.args).forall(p => p._1.getType == p._2.getType))
+  }
+
+  private lazy val graph: Map[ProgramPoint, Set[EdgeLabel]] = buildGraph
+
+
+  private def buildGraph: Map[ProgramPoint, Set[EdgeLabel]] = {
+    null
+  }
+
+
+}
-- 
GitLab