private ValueHolder visitBooleanOr(BooleanOperator op, Integer inIndex) { ValueHolder [] args = new ValueHolder [op.args.size()]; boolean hasNull = false; for (int i = 0; i < op.args.size(); i++) { args[i] = op.args.get(i).accept(this, inIndex); Trivalent flag = isBitOn(args[i]); switch (flag) { case TRUE: return op.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL? TypeHelper.nullify(ValueHolderHelper.getBitHolder(1)) : ValueHolderHelper.getBitHolder(1); case NULL: hasNull = true; case FALSE: } } if (hasNull) { return ValueHolderHelper.getNullableBitHolder(true, 0); } else { return op.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL? TypeHelper.nullify(ValueHolderHelper.getBitHolder(0)) : ValueHolderHelper.getBitHolder(0); } }
private ValueHolder visitBooleanAnd(BooleanOperator op, Integer inIndex) { ValueHolder [] args = new ValueHolder [op.args.size()]; boolean hasNull = false; for (int i = 0; i < op.args.size(); i++) { args[i] = op.args.get(i).accept(this, inIndex); Trivalent flag = isBitOn(args[i]); switch (flag) { case FALSE: return op.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL? TypeHelper.nullify(ValueHolderHelper.getBitHolder(0)) : ValueHolderHelper.getBitHolder(0); case NULL: hasNull = true; case TRUE: } } if (hasNull) { return ValueHolderHelper.getNullableBitHolder(true, 0); } else { return op.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL? TypeHelper.nullify(ValueHolderHelper.getBitHolder(1)) : ValueHolderHelper.getBitHolder(1); } }
private HoldingContainer visitBooleanOr(BooleanOperator op, ClassGenerator<?> generator) { HoldingContainer out = generator.declare(op.getMajorType());
private HoldingContainer visitBooleanAnd(BooleanOperator op, ClassGenerator<?> generator) { HoldingContainer out = generator.declare(op.getMajorType());