package org.nutz.el.opt.arithmetic;
import java.util.Queue;
import org.nutz.el.opt.AbstractOpt;
/**
* 负号:'-'
* @author juqkai(juqkai@gmail.com)
*
*/
public class NegativeOpt extends AbstractOpt {
private Object right;
public int fetchPriority() {
return 2;
}
public void wrap(Queue<Object> operand) {
right = operand.poll();
}
public Object calculate() {
Object rval = calculateItem(this.right);
if(rval instanceof Double)
return 0 - (Double)rval;
if(rval instanceof Float)
return 0 - (Float)rval;
if(rval instanceof Long)
return 0 - (Long)rval;
return 0 - (Integer)rval;
}
public String fetchSelf() {
return "-";
}
public static boolean isNegetive(Object prev){
if(prev == null){
return true;
}
if(prev instanceof LBracketOpt){
return true;
}
if(prev instanceof PlusOpt){
return true;
}
if(prev instanceof MulOpt){
return true;
}
if(prev instanceof DivOpt){
return true;
}
if(prev instanceof ModOpt){
return true;
}
if(prev instanceof SubOpt){
return true;
}
return false;
}
}