changes.
[IRC.git] / Robust / src / Analysis / SSJava / NTuple.java
index 30dfd39bc1fa239de8db648bda6477bb94ba1717..396b4b72da89af0f7568800d221584e9f2ef93f3 100644 (file)
@@ -13,6 +13,14 @@ public class NTuple<T> {
     this.elements.addAll(l);
   }
 
+  public NTuple(NTuple<T> tuple) {
+    this(tuple.toList());
+  }
+
+  public List<T> toList() {
+    return elements;
+  }
+
   public NTuple() {
     this.elements = new ArrayList<T>();
   }
@@ -51,7 +59,7 @@ public class NTuple<T> {
     if (o == null || o.getClass() != this.getClass()) {
       return false;
     }
-    return (((NTuple) o).elements).equals(elements);
+    return (((NTuple<T>) o).elements).equals(elements);
   }
 
   public int hashCode() {
@@ -66,4 +74,45 @@ public class NTuple<T> {
     return elements;
   }
 
+  public boolean startsWith(T prefix) {
+    return get(0).equals(prefix);
+  }
+
+  public boolean startsWith(NTuple<T> prefix) {
+
+    if (prefix.size() > size()) {
+      return false;
+    }
+
+    for (int i = 0; i < prefix.size(); i++) {
+      if (!prefix.get(i).equals(get(i))) {
+        return false;
+      }
+    }
+    return true;
+
+  }
+
+  public NTuple<T> subList(int startIdx, int endIdx) {
+
+    NTuple<T> subList = new NTuple<T>();
+
+    for (int i = startIdx; i < endIdx; i++) {
+      subList.add(elements.get(i));
+    }
+
+    return subList;
+
+  }
+
+  public T getLastElement() {
+    return elements.get(elements.size() - 1);
+  }
+
+  public NTuple<T> clone() {
+    NTuple<T> clone = new NTuple<T>();
+    clone.addAll(this);
+    return clone;
+  }
+
 }