1 package com.quadcap.sql; 2 3 40 41 import java.io.Externalizable ; 42 import java.io.IOException ; 43 import java.io.ObjectInput ; 44 import java.io.ObjectOutput ; 45 46 import java.util.Enumeration ; 47 import java.util.Vector ; 48 49 import java.sql.SQLException ; 50 51 import com.quadcap.sql.types.Op; 52 import com.quadcap.sql.types.Type; 53 import com.quadcap.sql.types.Value; 54 55 import com.quadcap.util.Debug; 56 57 62 public class BinaryExpression extends Expression implements Externalizable { 63 Expression e = null; 64 Expression f = null; 65 int op = -1; 66 boolean not = false; 67 68 71 public BinaryExpression() {} 72 73 77 public BinaryExpression(int op, Expression e, Expression f) { 78 this.op = op; 79 this.e = e; 80 this.f = f; 81 } 82 83 public int rank() { return 0; } 84 85 public Type getType(Session session, Cursor cursor) throws SQLException { 86 return e.getType(session, cursor); } 88 89 public Value getValue(Session session, Cursor cursor) throws SQLException { 90 Value eval = e.getValue(session, cursor); 91 Value fval = f.getValue(session, cursor); 92 Value ret = Value.binop(op, eval, fval); 93 if (not) { 94 ret = ret.unop(Op.NOT); 95 } 96 return ret; 97 } 98 99 public void invert() { 100 not = !not; 101 } 102 103 public String toString() { 104 String n = not ? "not " : ""; 105 return n + e + " " + Op.toString(op) + " " + f; 106 } 107 108 public void visitSubExpressions(ExpressionVisitor ev) { 109 ev.visit(e); 110 ev.visit(f); 111 } 112 113 public void readExternal(ObjectInput in) 114 throws IOException , ClassNotFoundException 115 { 116 e = (Expression)in.readObject(); 117 f = (Expression)in.readObject(); 118 op = in.readInt(); 119 not = (in.read() == 1); 120 } 121 122 public void writeExternal(ObjectOutput out) throws IOException { 123 out.writeObject(e); 124 out.writeObject(f); 125 out.writeInt(op); 126 out.write(not ? 1 : 0); 127 } 128 } 129 | Popular Tags |