package tr.gov.ulakbim.jDenetX.clusterers.clustree.util;
/**
* A simple implementation of a <code>Budget</code> with relative
* cost constants for each operation.
*
* @author reidl
* @see Budget
*/
public class SimpleBudget implements Budget {
public static final int INT_ADD = 1;
public static final int INT_MULT = 1;
public static final int INT_DIV = 1;
public static final int DOUBLE_ADD = 1;
public static final int DOUBLE_MULT = 1;
public static final int DOUBLE_DIV = 10;
private int time;
public SimpleBudget(int time) {
assert (time >= 0);
this.time = time;
}
@Override
public boolean hasMoreTime() {
return time > 0;
}
@Override
public void integerAddition() {
time -= INT_ADD;
}
@Override
public void integerAddition(int number) {
time -= INT_ADD * number;
}
@Override
public void doubleAddition() {
time -= DOUBLE_ADD;
}
@Override
public void doubleAddition(int number) {
time -= DOUBLE_ADD * number;
}
@Override
public void integerMultiplication() {
time -= INT_MULT;
}
@Override
public void integerMultiplication(int number) {
time -= INT_MULT * number;
}
@Override
public void doubleMultiplication() {
time -= DOUBLE_MULT;
}
@Override
public void doubleMultiplication(int number) {
time -= DOUBLE_MULT * number;
}
@Override
public void integerDivision() {
time -= INT_DIV;
}
@Override
public void integerDivision(int number) {
time -= INT_DIV * number;
}
@Override
public void doubleDivision() {
time -= DOUBLE_DIV;
}
@Override
public void doubleDivision(int number) {
time -= DOUBLE_DIV * number;
}
}