diff --git a/pom.xml b/pom.xml
index a31adf2d571a73db7b31fc477c0af8e34e02cf18..8d1935148ba274f44b6b915e5d99725dff65d83d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,11 @@
<artifactId>jdom2</artifactId>
<version>2.0.5</version>
</dependency>
+ <dependency>
+ <groupId>java3d</groupId>
+ <artifactId>vecmath</artifactId>
+ <version>1.3.1</version>
+ </dependency>
</dependencies>
<developers>
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileIntAccess.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileIntAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ba03c3f7bc29755db9fad6ab8aabf92abb58db0
--- /dev/null
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileIntAccess.java
@@ -0,0 +1,10 @@
+package net.imglib2.img.basictypeaccess.volatiles;
+
+import net.imglib2.img.basictypeaccess.IntAccess;
+
+/**
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public interface VolatileIntAccess extends IntAccess, VolatileAccess
+{}
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/AbstractVolatileArray.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/AbstractVolatileArray.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e9a59805ba4ada51538f717cc735f0abea82f37
--- /dev/null
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/AbstractVolatileArray.java
@@ -0,0 +1,29 @@
+package net.imglib2.img.basictypeaccess.volatiles.array;
+
+import net.imglib2.img.basictypeaccess.array.ArrayDataAccess;
+import net.imglib2.img.basictypeaccess.array.ShortArray;
+import net.imglib2.img.basictypeaccess.volatiles.VolatileAccess;
+
+/**
+ * A {@link ShortArray} with an {@link #isValid()} flag.
+ *
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public abstract class AbstractVolatileArray< T extends AbstractVolatileArray< T > > implements ArrayDataAccess< T >, VolatileAccess
+{
+ private static final long serialVersionUID = -3233057138272085300L;
+
+ protected final boolean isValid;
+
+ public AbstractVolatileArray( final boolean isValid )
+ {
+ this.isValid = isValid;
+ }
+
+ @Override
+ public boolean isValid()
+ {
+ return isValid;
+ }
+}
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileIntArray.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileIntArray.java
new file mode 100644
index 0000000000000000000000000000000000000000..93d8473fe32814c3004059714d7215b876f886a4
--- /dev/null
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileIntArray.java
@@ -0,0 +1,53 @@
+package net.imglib2.img.basictypeaccess.volatiles.array;
+
+import net.imglib2.img.basictypeaccess.array.ShortArray;
+import net.imglib2.img.basictypeaccess.volatiles.VolatileIntAccess;
+
+/**
+ * A {@link ShortArray} with an {@link #isValid()} flag.
+ *
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public class VolatileIntArray extends AbstractVolatileArray< VolatileIntArray > implements VolatileIntAccess
+{
+ private static final long serialVersionUID = -5626240246651573531L;
+
+ protected int[] data;
+
+ public VolatileIntArray( final int numEntities, final boolean isValid )
+ {
+ super( isValid );
+ this.data = new int[ numEntities ];
+ }
+
+ public VolatileIntArray( final int[] data, final boolean isValid )
+ {
+ super( isValid );
+ this.data = data;
+ }
+
+ @Override
+ public int getValue( final int index )
+ {
+ return data[ index ];
+ }
+
+ @Override
+ public void setValue( final int index, final int value )
+ {
+ data[ index ] = value;
+ }
+
+ @Override
+ public VolatileIntArray createArray( final int numEntities )
+ {
+ return new VolatileIntArray( numEntities, true );
+ }
+
+ @Override
+ public int[] getCurrentStorageArray()
+ {
+ return data;
+ }
+}
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
index a51776ada70ad7ff1a45cd56d1841c009c8f9433..869d891bde599252ddf00a5acf99fbcc19cf62ec 100644
--- a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
@@ -1,6 +1,5 @@
package net.imglib2.img.basictypeaccess.volatiles.array;
-import net.imglib2.img.basictypeaccess.array.ArrayDataAccess;
import net.imglib2.img.basictypeaccess.array.ShortArray;
import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
@@ -9,22 +8,20 @@ import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
*
* @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
*/
-public class VolatileShortArray implements VolatileShortAccess, ArrayDataAccess< VolatileShortArray >
+public class VolatileShortArray extends AbstractVolatileArray< VolatileShortArray > implements VolatileShortAccess
{
- private final boolean isValid;
-
protected short data[];
public VolatileShortArray( final int numEntities, final boolean isValid )
{
+ super( isValid );
this.data = new short[ numEntities ];
- this.isValid = isValid;
}
public VolatileShortArray( final short[] data, final boolean isValid )
{
+ super( isValid );
this.data = data;
- this.isValid = isValid;
}
@Override
@@ -50,10 +47,4 @@ public class VolatileShortArray implements VolatileShortAccess, ArrayDataAccess<
{
return data;
}
-
- @Override
- public boolean isValid()
- {
- return isValid;
- }
}