1 23 24 package org.objectweb.medor.expression.lib; 25 26 import org.objectweb.jorm.type.api.PType; 27 import org.objectweb.jorm.type.api.PTypeSpace; 28 import org.objectweb.medor.expression.api.ExpressionException; 29 import org.objectweb.medor.expression.api.MalformedExpressionException; 30 import org.objectweb.medor.expression.api.Operand; 31 import org.objectweb.medor.expression.api.ParameterOperand; 32 import org.objectweb.medor.expression.api.TypingException; 33 import org.objectweb.medor.expression.api.UnaryLogicalOperator; 34 import org.objectweb.medor.expression.api.Expression; 35 36 40 public abstract class BasicUnaryLogicalOperator 41 extends BasicUnaryOperator 42 implements UnaryLogicalOperator { 43 44 public BasicUnaryLogicalOperator() { 45 super(PTypeSpace.BOOLEAN); 46 } 47 48 public BasicUnaryLogicalOperator(Expression e) { 49 super(PTypeSpace.BOOLEAN, e); 50 } 51 52 55 public org.objectweb.medor.expression.api.Operand evaluate(ParameterOperand[] pos, Object o) 56 throws ExpressionException { 57 try { 58 result.setValue(expressions[0].evaluate(pos, o).getBoolean()); 59 } catch (NullPointerException e) { 60 throw new IllegalStateException ("Unevaluable Expression: Not compiled"); 61 } 62 return result; 63 } 64 65 public Operand compileExpression() 66 throws ExpressionException, MalformedExpressionException { 67 if (expressions[0] != null) { 68 expressions[0].compileExpression(); 69 if (expressions[0].getType().getTypeCode() == 70 PType.TYPECODE_BOOLEAN) { 71 result = new BasicVariableOperand(type); 72 verified = true; 73 } else 74 throw new TypingException("Attempt a boolean type"); 76 } else 77 throw new MalformedExpressionException("Null children value"); 79 return result; 80 } 81 82 85 public abstract boolean evaluate(boolean boole); 86 87 } 88 | Popular Tags |