*** empty log message ***
[IRC.git] / Robust / Transactions / tuplesoupdstm2version / src / com / solidosystems / tuplesoup / core / TableIndexNodeTransactional.java
diff --git a/Robust/Transactions/tuplesoupdstm2version/src/com/solidosystems/tuplesoup/core/TableIndexNodeTransactional.java b/Robust/Transactions/tuplesoupdstm2version/src/com/solidosystems/tuplesoup/core/TableIndexNodeTransactional.java
new file mode 100644 (file)
index 0000000..9de2294
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package com.solidosystems.tuplesoup.core;
+
+import dstm2.AtomicSuperClass;
+import dstm2.atomic;
+import dstm2.Thread;
+import dstm2.factory.Factory;
+
+/**
+ *
+ * @author navid
+ */
+public class TableIndexNodeTransactional implements AtomicSuperClass{
+
+    //private TableIndexNodeTransactional previous;
+    //private TableIndexEntryTransactional data;
+    //private TableIndexNodeTransactional next;
+    static Factory<TableIndexInodeTSInf> factory = Thread.makeFactory(TableIndexInodeTSInf.class);
+    TableIndexInodeTSInf atomicfields;
+    
+    public @atomic interface TableIndexInodeTSInf{
+        TableIndexNodeTransactional getPrevious(); 
+        TableIndexEntryTransactional getData(); 
+        TableIndexNodeTransactional getNext(); 
+        
+        void setPrevious(TableIndexNodeTransactional val); 
+        void setData(TableIndexEntryTransactional val); 
+        void setNext(TableIndexNodeTransactional val);
+    }
+    
+    public TableIndexNodeTransactional(){
+        atomicfields = factory.create();
+        
+        atomicfields.setPrevious(null);
+        atomicfields.setData(null);
+        atomicfields.setNext(null);
+    }
+    
+    public TableIndexNodeTransactional(TableIndexEntryTransactional entry){
+        atomicfields = factory.create();
+        
+        atomicfields.setPrevious(null);
+        atomicfields.setData(entry);
+        atomicfields.setNext(null);
+        
+    }
+    
+    public TableIndexNodeTransactional(TableIndexNodeTransactional prev,TableIndexEntryTransactional entry){
+        atomicfields = factory.create();
+        
+        atomicfields.setPrevious(prev);
+        atomicfields.setData(entry);
+        atomicfields.setNext(null);
+    }
+    
+    public TableIndexNodeTransactional(TableIndexNodeTransactional prev,TableIndexEntryTransactional entry,TableIndexNodeTransactional nex){
+        atomicfields = factory.create();
+        
+        atomicfields.setPrevious(prev);
+        atomicfields.setData(entry);
+        atomicfields.setNext(nex);
+    }
+    
+    public TableIndexEntryTransactional getData(){
+        return atomicfields.getData();
+    }
+    public TableIndexNodeTransactional getPrevious(){
+        return atomicfields.getPrevious();
+    }
+    public TableIndexNodeTransactional getNext(){
+        return atomicfields.getNext();
+    }
+    public void setNext(TableIndexNodeTransactional node){
+        atomicfields.setNext(node);
+    }
+    public void setPrevious(TableIndexNodeTransactional node){
+        atomicfields.setPrevious(node);
+    }
+    public void setData(TableIndexEntryTransactional entry){
+        atomicfields.setData(entry);
+    }
+    public void remove(){
+        if(atomicfields.getPrevious()!=null){
+            atomicfields.getPrevious().setNext(atomicfields.getNext());
+        }
+        if(atomicfields.getNext()!=null){
+            atomicfields.getNext().setPrevious(atomicfields.getPrevious());
+        }
+    }
+}