new structure to help with performance testings.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/d146525e Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/d146525e Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/d146525e Branch: refs/heads/master Commit: d146525e32b211bc224aea2a644b80e946ead28b Parents: f9ec13b Author: Preston Carman <[email protected]> Authored: Thu Feb 13 15:26:44 2014 -0800 Committer: Preston Carman <[email protected]> Committed: Thu Feb 13 15:26:44 2014 -0800 ---------------------------------------------------------------------- .../bool/FnBooleanScalarEvaluatorFactory.java | 171 ++++++++++--------- 1 file changed, 89 insertions(+), 82 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/d146525e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java index ebc8cdd..86104c8 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java @@ -49,6 +49,10 @@ public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgument @Override protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) throws AlgebricksException { + return new FnBooleanScalarEvaluator(args); + } + + private class FnBooleanScalarEvaluator extends AbstractTaggedValueArgumentScalarEvaluator { final SequencePointable seqp = new SequencePointable(); final LongPointable lp = (LongPointable) LongPointable.FACTORY.createPointable(); final IntegerPointable ip = (IntegerPointable) IntegerPointable.FACTORY.createPointable(); @@ -58,107 +62,110 @@ public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgument final DoublePointable dp = (DoublePointable) DoublePointable.FACTORY.createPointable(); final FloatPointable fp = (FloatPointable) FloatPointable.FACTORY.createPointable(); final UTF8StringPointable utf8p = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable(); - return new AbstractTaggedValueArgumentScalarEvaluator(args) { - @Override - protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException { - TaggedValuePointable tvp = args[0]; - boolean booleanResult = true; - switch (tvp.getTag()) { - case ValueTag.SEQUENCE_TAG: { - tvp.getValue(seqp); - if (seqp.getEntryCount() == 0) { - booleanResult = false; - } - break; - } - case ValueTag.XS_BOOLEAN_TAG: { - result.set(tvp); - return; - } + public FnBooleanScalarEvaluator(IScalarEvaluator[] args) { + super(args); + } - case ValueTag.XS_DECIMAL_TAG: { - tvp.getValue(decp); - if (decp.longValue() == 0) { - booleanResult = false; - } - break; + @Override + protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException { + TaggedValuePointable tvp = args[0]; + boolean booleanResult = true; + switch (tvp.getTag()) { + case ValueTag.SEQUENCE_TAG: { + tvp.getValue(seqp); + if (seqp.getEntryCount() == 0) { + booleanResult = false; } + break; + } + + case ValueTag.XS_BOOLEAN_TAG: { + result.set(tvp); + return; + } - case ValueTag.XS_INTEGER_TAG: - case ValueTag.XS_LONG_TAG: - case ValueTag.XS_NEGATIVE_INTEGER_TAG: - case ValueTag.XS_NON_POSITIVE_INTEGER_TAG: - case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG: - case ValueTag.XS_POSITIVE_INTEGER_TAG: - case ValueTag.XS_UNSIGNED_INT_TAG: - case ValueTag.XS_UNSIGNED_LONG_TAG: { - tvp.getValue(lp); - if (lp.longValue() == 0) { - booleanResult = false; - } - break; + case ValueTag.XS_DECIMAL_TAG: { + tvp.getValue(decp); + if (decp.longValue() == 0) { + booleanResult = false; } + break; + } - case ValueTag.XS_INT_TAG: - case ValueTag.XS_UNSIGNED_SHORT_TAG: { - tvp.getValue(ip); - if (ip.intValue() == 0) { - booleanResult = false; - } - break; + case ValueTag.XS_INTEGER_TAG: + case ValueTag.XS_LONG_TAG: + case ValueTag.XS_NEGATIVE_INTEGER_TAG: + case ValueTag.XS_NON_POSITIVE_INTEGER_TAG: + case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG: + case ValueTag.XS_POSITIVE_INTEGER_TAG: + case ValueTag.XS_UNSIGNED_INT_TAG: + case ValueTag.XS_UNSIGNED_LONG_TAG: { + tvp.getValue(lp); + if (lp.longValue() == 0) { + booleanResult = false; } + break; + } - case ValueTag.XS_SHORT_TAG: - case ValueTag.XS_UNSIGNED_BYTE_TAG: { - tvp.getValue(sp); - if (sp.shortValue() == 0) { - booleanResult = false; - } - break; + case ValueTag.XS_INT_TAG: + case ValueTag.XS_UNSIGNED_SHORT_TAG: { + tvp.getValue(ip); + if (ip.intValue() == 0) { + booleanResult = false; } + break; + } - case ValueTag.XS_BYTE_TAG: { - tvp.getValue(bp); - if (bp.byteValue() == 0) { - booleanResult = false; - } - break; + case ValueTag.XS_SHORT_TAG: + case ValueTag.XS_UNSIGNED_BYTE_TAG: { + tvp.getValue(sp); + if (sp.shortValue() == 0) { + booleanResult = false; } + break; + } - case ValueTag.XS_DOUBLE_TAG: { - tvp.getValue(dp); - if (dp.doubleValue() == 0 || Double.isNaN(dp.doubleValue())) { - booleanResult = false; - } - break; + case ValueTag.XS_BYTE_TAG: { + tvp.getValue(bp); + if (bp.byteValue() == 0) { + booleanResult = false; } + break; + } - case ValueTag.XS_FLOAT_TAG: { - tvp.getValue(fp); - if (fp.floatValue() == 0 || Float.isNaN(fp.floatValue())) { - booleanResult = false; - } - break; + case ValueTag.XS_DOUBLE_TAG: { + tvp.getValue(dp); + if (dp.doubleValue() == 0 || Double.isNaN(dp.doubleValue())) { + booleanResult = false; } + break; + } - case ValueTag.XS_ANY_URI_TAG: - case ValueTag.XS_STRING_TAG: { - tvp.getValue(utf8p); - if (utf8p.getUTFLength() == 0) { - booleanResult = false; - } - break; + case ValueTag.XS_FLOAT_TAG: { + tvp.getValue(fp); + if (fp.floatValue() == 0 || Float.isNaN(fp.floatValue())) { + booleanResult = false; } - default: - throw new SystemException(ErrorCode.FORG0006); + break; } - if (booleanResult) { - XDMConstants.setTrue(result); - } else { - XDMConstants.setFalse(result); + + case ValueTag.XS_ANY_URI_TAG: + case ValueTag.XS_STRING_TAG: { + tvp.getValue(utf8p); + if (utf8p.getUTFLength() == 0) { + booleanResult = false; + } + break; } + default: + throw new SystemException(ErrorCode.FORG0006); + } + if (booleanResult) { + XDMConstants.setTrue(result); + } else { + XDMConstants.setFalse(result); } - }; + } } } \ No newline at end of file
