From 4aa1448ebc6a76a35bb089397cc8541a324682fa Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Wed, 6 Apr 2022 17:28:25 +0200
Subject: [PATCH] Use generics in LR0Item and related classes

---
 .../java/org/sablecc/sablecc/LR0Item.java     |  6 +--
 .../java/org/sablecc/sablecc/LR0ItemSet.java  | 46 ++++-------------
 .../java/org/sablecc/sablecc/LR1Item.java     |  6 +--
 .../java/org/sablecc/sablecc/LR1ItemSet.java  | 51 +++++--------------
 4 files changed, 27 insertions(+), 82 deletions(-)

diff --git a/src/main/java/org/sablecc/sablecc/LR0Item.java b/src/main/java/org/sablecc/sablecc/LR0Item.java
index 16d87c9..104702e 100644
--- a/src/main/java/org/sablecc/sablecc/LR0Item.java
+++ b/src/main/java/org/sablecc/sablecc/LR0Item.java
@@ -9,7 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
-final class LR0Item implements Cloneable, Comparable
+final class LR0Item implements Cloneable, Comparable<LR0Item>
 {
   final int production;
   final int position;
@@ -21,10 +21,8 @@ final class LR0Item implements Cloneable, Comparable
   }
 
   @Override
-  public int compareTo(Object object)
+  public int compareTo(LR0Item item)
   {
-    LR0Item item = (LR0Item) object;
-
     int result = production - item.production;
 
     if(result == 0)
diff --git a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
index 56fc438..a58b1a9 100644
--- a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
@@ -9,22 +9,20 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
-import java.util.Vector;
-
-final class LR0ItemSet implements Cloneable, Comparable
+final class LR0ItemSet implements Cloneable, Comparable<LR0ItemSet>
 {
-  private final TreeMap items;
+  private final TreeMap<LR0Item, LR0Item> items;
   private int hashCode;
 
   LR0ItemSet()
   {
-    items = new TreeMap();
+    items = new TreeMap<>();
   }
 
   private LR0ItemSet(LR0ItemSet set
                       )
   {
-    items = (TreeMap) set.items.clone();
+    items = new TreeMap<>(set.items);
   }
 
   void set
@@ -48,15 +46,7 @@ final class LR0ItemSet implements Cloneable, Comparable
 
   private void computeArray()
   {
-    Vector itemVector = new Vector(0);
-
-    for(Iterator e = items.keySet().iterator(); e.hasNext();)
-    {
-      itemVector.addElement(e.next());
-    }
-
-    items_ = new LR0Item[itemVector.size()];
-    itemVector.copyInto(items_);
+    items_ = items.keySet().toArray(new LR0Item[0]);
     modified_ = false;
   }
 
@@ -125,20 +115,7 @@ final class LR0ItemSet implements Cloneable, Comparable
     LR0ItemSet set
       = (LR0ItemSet) obj;
 
-    if(set.items.size() != items.size())
-    {
-      return false;
-    }
-
-    for(Iterator e = items.keySet().iterator(); e.hasNext();)
-    {
-      if(!set.get((LR0Item) e.next()))
-      {
-        return false;
-      }
-    }
-
-    return true;
+    return items.keySet().equals(set.items.keySet());
   }
 
   @Override
@@ -148,21 +125,18 @@ final class LR0ItemSet implements Cloneable, Comparable
   }
 
   @Override
-  public int compareTo(Object object)
+  public int compareTo(LR0ItemSet set)
   {
-    LR0ItemSet set
-      = (LR0ItemSet) object;
-
     int result = items.size() - set.items.size();
 
     if(result == 0)
     {
-      Iterator e = items.keySet().iterator();
-      Iterator f = set.items.keySet().iterator();
+      Iterator<LR0Item> e = items.keySet().iterator();
+      Iterator<LR0Item> f = set.items.keySet().iterator();
 
       while(e.hasNext() && f.hasNext() && (result == 0))
       {
-        result = ((LR0Item) e.next()).compareTo(f.next());
+        result = e.next().compareTo(f.next());
       }
 
       if(result == 0)
diff --git a/src/main/java/org/sablecc/sablecc/LR1Item.java b/src/main/java/org/sablecc/sablecc/LR1Item.java
index a3471f0..0936d08 100644
--- a/src/main/java/org/sablecc/sablecc/LR1Item.java
+++ b/src/main/java/org/sablecc/sablecc/LR1Item.java
@@ -9,7 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
-final class LR1Item implements Cloneable, Comparable
+final class LR1Item implements Cloneable, Comparable<LR1Item>
 {
   final LR0Item lr0Item;
   final int terminal;
@@ -88,10 +88,8 @@ final class LR1Item implements Cloneable, Comparable
   }
 
   @Override
-  public int compareTo(Object object)
+  public int compareTo(LR1Item item)
   {
-    LR1Item item = (LR1Item) object;
-
     int result = lr0Item.compareTo(item.lr0Item);
 
     if(result == 0)
diff --git a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
index 983c7cb..ca95963 100644
--- a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
@@ -8,22 +8,21 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
 
-final class LR1ItemSet implements Cloneable, Comparable
+final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet>
 {
-  private final TreeMap items;
+  private final TreeMap<LR1Item, LR1Item> items;
   private int hashCode = 0;
 
   LR1ItemSet()
   {
-    this.items = new TreeMap();
+    this.items = new TreeMap<>();
   }
 
   private LR1ItemSet(LR1ItemSet set
                       )
   {
-    this.items = (TreeMap) set.items.clone();
+    this.items = new TreeMap<>(set.items);
     this.hashCode = set.hashCode;
   }
 
@@ -48,15 +47,7 @@ final class LR1ItemSet implements Cloneable, Comparable
 
   private void computeArray()
   {
-    Vector itemVector = new Vector(0);
-
-    for(Iterator e = items.keySet().iterator(); e.hasNext();)
-    {
-      itemVector.addElement(e.next());
-    }
-
-    items_ = new LR1Item[itemVector.size()];
-    itemVector.copyInto(items_);
+    items_ = items.keySet().toArray(new LR1Item[0]);
     modified_ = false;
   }
 
@@ -121,7 +112,7 @@ final class LR1ItemSet implements Cloneable, Comparable
     LR1Item[] items = items();
     int length = items.length;
 
-    TreeSet strings = new TreeSet();
+    Set<String> strings = new TreeSet<>();
 
     for(int i = 0; i < length; i++)
     {
@@ -138,7 +129,7 @@ final class LR1ItemSet implements Cloneable, Comparable
     result.append("{");
 
     boolean colon = false;
-    for(Iterator i = strings.iterator(); i.hasNext(); )
+    for(String s : strings)
     {
       if(colon)
       {
@@ -152,7 +143,7 @@ final class LR1ItemSet implements Cloneable, Comparable
       }
 
       result.append("\t");
-      result.append(i.next());
+      result.append(s);
     }
 
     result.append(nl);
@@ -179,20 +170,7 @@ final class LR1ItemSet implements Cloneable, Comparable
     LR1ItemSet set
       = (LR1ItemSet) obj;
 
-    if(set.items.size() != items.size())
-    {
-      return false;
-    }
-
-    for(Iterator e = items.keySet().iterator(); e.hasNext();)
-    {
-      if(!set.get((LR1Item) e.next()))
-      {
-        return false;
-      }
-    }
-
-    return true;
+    return items.keySet().equals(set.items.keySet());
   }
 
   @Override
@@ -202,21 +180,18 @@ final class LR1ItemSet implements Cloneable, Comparable
   }
 
   @Override
-  public int compareTo(Object object)
+  public int compareTo(LR1ItemSet set)
   {
-    LR1ItemSet set
-      = (LR1ItemSet) object;
-
     int result = items.size() - set.items.size();
 
     if(result == 0)
     {
-      Iterator e = items.keySet().iterator();
-      Iterator f = set.items.keySet().iterator();
+      Iterator<LR1Item> e = items.keySet().iterator();
+      Iterator<LR1Item> f = set.items.keySet().iterator();
 
       while(e.hasNext() && f.hasNext() && (result == 0))
       {
-        result = ((LR1Item) e.next()).compareTo(f.next());
+        result = e.next().compareTo(f.next());
       }
 
       if(result == 0)
-- 
GitLab