package spimedb.util.bag;
/**
* Created by me on 1/15/17.
*/
public interface BudgetMerge {
/**
* returns overflow
*/
float merge(Budget existing, float incoming);
BudgetMerge add = (e, i) -> {
e.priAdd(i);
return 0;
};
BudgetMerge max = (e, i) -> {
e.pri(Math.max(e.pri, i));
return 0; //TODO calculate overflow
};
BudgetMerge and = (e, i) -> {
e.pri( e.pri * i );
return 0; //TODO calculate overflow
};
BudgetMerge or = (e, i) -> {
e.pri( 1f - ((1f - e.pri) * (1f - i)) );
return 0; //TODO calculate overflow
};
}