package edu.stanford.rsl.conrad.volume3d.operations;
import java.util.concurrent.CountDownLatch;
import edu.stanford.rsl.conrad.parallel.ParallelizableRunnable;
import edu.stanford.rsl.conrad.volume3d.Volume3D;
public abstract class ParallelVolumeOperation implements ParallelizableRunnable, Cloneable {
protected CountDownLatch latch;
// for binary operations:
protected Volume3D vol1;
protected Volume3D vol2;
// for uniary operations;
protected Volume3D vol;
protected int beginIndexX;
protected int endIndexX;
protected Object result;
// for scalar operations;
protected float scalar1;
protected float scalar2;
public void setLatch(CountDownLatch latch) {
this.latch = latch;
}
public Volume3D getVol1() {
return vol1;
}
public void setVol1(Volume3D vol1) {
this.vol1 = vol1;
}
public Volume3D getVol2() {
return vol2;
}
public void setVol2(Volume3D vol2) {
this.vol2 = vol2;
}
public Volume3D getVol() {
return vol;
}
public void setVol(Volume3D vol) {
this.vol = vol;
}
public Object getResult(){
return result;
}
public float getScalar1() {
return scalar1;
}
public void setScalar1(float scalar1) {
this.scalar1 = scalar1;
}
public float getScalar2() {
return scalar2;
}
public void setScalar2(float scalar2) {
this.scalar2 = scalar2;
}
public int getBeginIndexX() {
return beginIndexX;
}
public void setBeginIndexX(int beginIndexX) {
this.beginIndexX = beginIndexX;
}
public int getEndIndexX() {
return endIndexX;
}
public void setEndIndexX(int endIndexX) {
this.endIndexX = endIndexX;
}
public void run(){
performOperation();
latch.countDown();
}
public abstract ParallelVolumeOperation clone();
public abstract void performOperation();
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/