From cd29e3e24ff9267611c790e5b3bcc7ca5a156a04 Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Tue, 1 Sep 2015 17:35:56 +0200
Subject: [PATCH] Use UniqueCounter consistently

---
 .../leon/codegen/runtime/ChooseEntryPoint.scala |  9 +++------
 src/main/scala/leon/repair/Repairman.scala      |  7 +++++--
 .../scala/leon/synthesis/SynthesisPhase.scala   |  2 +-
 .../leon/synthesis/graph/DotGenerator.scala     | 17 +++++++----------
 4 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/src/main/scala/leon/codegen/runtime/ChooseEntryPoint.scala b/src/main/scala/leon/codegen/runtime/ChooseEntryPoint.scala
index 2824b3f97..8eb9d1565 100644
--- a/src/main/scala/leon/codegen/runtime/ChooseEntryPoint.scala
+++ b/src/main/scala/leon/codegen/runtime/ChooseEntryPoint.scala
@@ -28,11 +28,8 @@ object ChooseEntryPoint {
 
   private[this] val ids = new WeakHashMap[CompilationUnit, MutableMap[Problem, ChooseId]]()
 
-  private[this] var _next = 0
-  private[this] def nextInt(): Int = {
-    _next += 1
-    _next
-  }
+  private val intCounter = new UniqueCounter[Unit]
+  intCounter.nextGlobal // Start with 1
 
   private def getUniqueId(unit: CompilationUnit, p: Problem): ChooseId = {
     if (!ids.containsKey(unit)) {
@@ -42,7 +39,7 @@ object ChooseEntryPoint {
     if (ids.get(unit) contains p) {
       ids.get(unit)(p)
     } else {
-      val cid = new ChooseId(nextInt())
+      val cid = new ChooseId(intCounter.nextGlobal)
       ids.get(unit) += p -> cid
       cid
     }
diff --git a/src/main/scala/leon/repair/Repairman.scala b/src/main/scala/leon/repair/Repairman.scala
index 0433affa5..e4cfb8aaf 100644
--- a/src/main/scala/leon/repair/Repairman.scala
+++ b/src/main/scala/leon/repair/Repairman.scala
@@ -11,16 +11,19 @@ import purescala.Types._
 import purescala.DefOps._
 import purescala.Constructors._
 import purescala.Extractors.unwrapTuple
+
 import evaluators._
 import solvers._
 import utils._
 import codegen._
 import verification._
+
 import synthesis._
 import synthesis.rules._
 import synthesis.Witnesses._
+import synthesis.graph.{dotGenIds, DotGenerator}
+
 import rules._
-import graph.DotGenerator
 import grammars._
 
 class Repairman(ctx0: LeonContext, initProgram: Program, fd: FunDef, verifTimeoutMs: Option[Long], repairTimeoutMs: Option[Long]) {
@@ -98,7 +101,7 @@ class Repairman(ctx0: LeonContext, initProgram: Program, fd: FunDef, verifTimeou
 
           if (synth.settings.generateDerivationTrees) {
             val dot = new DotGenerator(search.g)
-            dot.writeFile("derivation"+DotGenerator.nextId()+".dot")
+            dot.writeFile("derivation"+ dotGenIds.nextGlobal + ".dot")
           }
 
           if (solutions.isEmpty) {
diff --git a/src/main/scala/leon/synthesis/SynthesisPhase.scala b/src/main/scala/leon/synthesis/SynthesisPhase.scala
index 067a79456..73820eb3c 100644
--- a/src/main/scala/leon/synthesis/SynthesisPhase.scala
+++ b/src/main/scala/leon/synthesis/SynthesisPhase.scala
@@ -80,7 +80,7 @@ object SynthesisPhase extends LeonPhase[Program, Program] {
       try {
         if (options.generateDerivationTrees) {
           val dot = new DotGenerator(search.g)
-          dot.writeFile("derivation"+DotGenerator.nextId()+".dot")
+          dot.writeFile("derivation"+dotGenIds.nextGlobal+".dot")
         }
 
         val (sol, _) = solutions.head
diff --git a/src/main/scala/leon/synthesis/graph/DotGenerator.scala b/src/main/scala/leon/synthesis/graph/DotGenerator.scala
index e44496a2d..7da387161 100644
--- a/src/main/scala/leon/synthesis/graph/DotGenerator.scala
+++ b/src/main/scala/leon/synthesis/graph/DotGenerator.scala
@@ -2,14 +2,17 @@
 
 package leon.synthesis.graph
 
+import leon.utils.UniqueCounter
+
 import java.io.{File, FileWriter, BufferedWriter}
 
 class DotGenerator(g: Graph) {
 
-  private[this] var _nextID = 0
+  private val idCounter = new UniqueCounter[Unit]
+  idCounter.nextGlobal // Start with 1
+
   def freshName(prefix: String) = {
-    _nextID += 1
-    prefix+_nextID
+    prefix + idCounter.nextGlobal
   }
 
   def writeFile(f: File): Unit = {
@@ -123,10 +126,4 @@ class DotGenerator(g: Graph) {
   }
 }
 
-object DotGenerator {
-  private[this] var _nextID = 0
-  def nextId() = {
-    _nextID += 1
-    _nextID
-  }
-}
+object dotGenIds extends UniqueCounter[Unit]
\ No newline at end of file
-- 
GitLab