public CodegenBlock ifRefNull(String ref) { return ifCondition(equalsNull(ref(ref))); }
public void accept(CodegenMethod method, CodegenBlock block, ExprSubselectEvalMatchSymbol symbols) { CodegenExpression matching = symbols.getAddMatchingEvents(method); block.ifCondition(equalsNull(matching)) .blockReturn(valueIfNull) .ifCondition(exprDotMethod(matching, "isEmpty")) .blockReturn(valueIfEmpty); } }
private void applyTableValuePrefix(boolean enter, CodegenExpressionRef value, CodegenMethod method, CodegenClassScope classScope) { method.getBlock().ifCondition(equalsNull(value)).blockReturnNoValue(); if (distinct != null) { method.getBlock().ifCondition(not(exprDotMethod(distinct, enter ? "add" : "remove", value))).blockReturnNoValue(); } } }
private CodegenMethod getCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { return codegenMethodScope.makeChild(Object.class, this.getClass(), codegenClassScope).addParam(GenericData.Record.class, "record").getBlock() .declareVar(GenericData.Record.class, "inner", cast(GenericData.Record.class, exprDotMethod(ref("record"), "get", constant(fieldTop)))) .methodReturn(conditional(equalsNull(ref("inner")), constantNull(), getter.underlyingGetCodegen(ref("inner"), codegenMethodScope, codegenClassScope))); }
public void setCurrentAccessCodegen(CodegenMethod method, CodegenClassScope classScope, AggregationClassNames classNames) { method.getBlock().assignRef(REF_CURRENTGROUPKEY, REF_GROUPKEY) .assignRef(REF_CURRENTROW, cast(classNames.getRowTop(), exprDotMethod(REF_AGGREGATORSPERGROUP, "get", REF_GROUPKEY))) .ifCondition(equalsNull(REF_CURRENTROW)) .assignRef(REF_CURRENTROW, CodegenExpressionBuilder.newInstance(classNames.getRowTop())); }
private Consumer<CodegenBlock> enterConsumer(CodegenExpression valueComparableTyped) { return block -> block.ifCondition(equalsNull(currentMinMax)) .assignRef(currentMinMax, valueComparableTyped) .blockReturnNoValue() .ifCondition(relational(exprDotMethod(currentMinMax, "compareTo", valueComparableTyped), factory.getParent().getMinMaxTypeEnum() == MAX ? LT : GT, constant(0))) .assignRef(currentMinMax, valueComparableTyped); } }
public CodegenExpression evaluateCodegenUninstrumented(Class requiredType, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.makeChild(EventBean.class, ExprEvalStreamInsertUnd.class, codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.getAddEPS(methodNode); methodNode.getBlock() .ifCondition(equalsNull(refEPS)).blockReturn(constantNull()) .methodReturn(arrayAtIndex(refEPS, constant(streamNum))); return localMethod(methodNode); }
static void sortWGroupKeysCodegen(OrderByProcessorForgeImpl forge, CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenMethod sortWGroupKeysInternal = sortWGroupKeysInternalCodegen(forge, classScope, namedMethods); method.getBlock().ifCondition(or(equalsNull(REF_OUTGOINGEVENTS), relational(arrayLength(REF_OUTGOINGEVENTS), LT, constant(2)))) .blockReturn(REF_OUTGOINGEVENTS) .methodReturn(localMethod(sortWGroupKeysInternal, REF_OUTGOINGEVENTS, REF_GENERATINGEVENTS, REF_ORDERGROUPBYKEYS, REF_ISNEWDATA, REF_EXPREVALCONTEXT, REF_AGGREGATIONSVC)); }
static void sortPlainCodegen(OrderByProcessorForgeImpl forge, CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenMethod node = sortWGroupKeysInternalCodegen(forge, classScope, namedMethods); method.getBlock().ifCondition(or(equalsNull(REF_OUTGOINGEVENTS), relational(arrayLength(REF_OUTGOINGEVENTS), LT, constant(2)))) .blockReturn(REF_OUTGOINGEVENTS); method.getBlock().methodReturn(localMethod(node, REF_OUTGOINGEVENTS, REF_GENERATINGEVENTS, constantNull(), REF_ISNEWDATA, REF_EXPREVALCONTEXT, REF_AGGREGATIONSVC)); }
public static CodegenExpression evaluateCodegen(ExprEventIdentityEqualsNodeForge forge, CodegenMethodScope parent, ExprForgeCodegenSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(Boolean.class, ExprEventIdentityEqualsNodeEval.class, classScope); method.getBlock() .declareVar(EventBean.class, "left", arrayAtIndex(symbols.getAddEPS(method), constant(forge.getUndLeft().getStreamId()))) .declareVar(EventBean.class, "right", arrayAtIndex(symbols.getAddEPS(method), constant(forge.getUndRight().getStreamId()))) .ifCondition(or(equalsNull(ref("left")), equalsNull(ref("right")))) .blockReturn(constantNull()) .methodReturn(exprDotMethod(ref("left"), "equals", ref("right"))); return localMethod(method); }
protected void applyEvalEnterNonNull(CodegenExpressionRef valueExpr, CodegenMethod method) { method.getBlock().increment(numDataPoints) .ifCondition(equalsNull(circularBuffer)) .apply(clearCode()) .blockEnd() .assignArrayElement(circularBuffer, currentBufferElementPointer, valueExpr) .assignRef(currentBufferElementPointer, op(op(currentBufferElementPointer, "+", constant(1)), "%", constant(factory.getSizeOfBuf()))); }
protected void applyEnterFiltered(CodegenMethod method, ExprForgeCodegenSymbol symbols, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenExpression eps = symbols.getAddEPS(method); CodegenExpression ctx = symbols.getAddExprEvalCtx(method); method.getBlock().declareVar(EventBean.class, "theEvent", arrayAtIndex(eps, constant(forge.getSpec().getStreamNum()))) .ifCondition(equalsNull(ref("theEvent"))).blockReturnNoValue() .localMethod(addEventCodegen(method, namedMethods, classScope), ref("theEvent"), eps, ctx); }
private CodegenExpression cacheAndExistsCodegen(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) { CodegenExpression memberCache = codegenClassScope.addOrGetFieldSharable(sharableCode); CodegenMethod method = parent.makeChild(boolean.class, DynamicPropertyGetterBase.class, codegenClassScope).addParam(Object.class, "object"); method.getBlock() .declareVar(DynamicPropertyDescriptor.class, "desc", getPopulateCacheCodegen(memberCache, ref("object"), method, codegenClassScope)) .ifCondition(equalsNull(exprDotMethod(ref("desc"), "getMethod"))).blockReturn(constantFalse()) .methodReturn(constant(true)); return localMethod(method, underlyingExpression); }
public CodegenExpression getLastValueCodegen(CodegenClassScope classScope, CodegenMethod parentMethod, CodegenNamedMethods namedMethods) { CodegenMethod initArray = initArrayCodegen(namedMethods, classScope); CodegenMethod method = parentMethod.makeChildWithScope(EventBean.class, AggregatorAccessLinearJoin.class, CodegenSymbolProviderEmpty.INSTANCE, classScope); method.getBlock().ifCondition(exprDotMethod(refSet, "isEmpty")).blockReturn(constantNull()) .ifCondition(equalsNull(array)).localMethod(initArray).blockEnd() .methodReturn(arrayAtIndex(array, op(arrayLength(array), "-", constant(1)))); return localMethod(method); }
public CodegenExpression codegen(EnumForgeCodegenParams args, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { Class type = EPTypeHelper.getCodegenReturnType(resultType); CodegenMethod method = codegenMethodScope.makeChild(type, EnumFirstOfNoPredicateForge.class, codegenClassScope).addParam(EnumForgeCodegenNames.PARAMS).getBlock() .ifCondition(or(equalsNull(EnumForgeCodegenNames.REF_ENUMCOLL), exprDotMethod(EnumForgeCodegenNames.REF_ENUMCOLL, "isEmpty"))) .blockReturn(constantNull()) .methodReturn(cast(type, exprDotMethodChain(EnumForgeCodegenNames.REF_ENUMCOLL).add("iterator").add("next"))); return localMethod(method, args.getExpressions()); } }
private CodegenExpression cacheAndCallCodegen(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) { CodegenExpression memberCache = codegenClassScope.addOrGetFieldSharable(sharableCode); CodegenMethod method = parent.makeChild(Object.class, DynamicPropertyGetterBase.class, codegenClassScope).addParam(Object.class, "object"); method.getBlock() .declareVar(DynamicPropertyDescriptor.class, "desc", getPopulateCacheCodegen(memberCache, ref("object"), method, codegenClassScope)) .ifCondition(equalsNull(exprDotMethod(ref("desc"), "getMethod"))).blockReturn(constantNull()) .methodReturn(callCodegen(ref("desc"), ref("object"), method, codegenClassScope)); return localMethod(method, underlyingExpression); }
public void setCurrentAccessCodegen(CodegenMethod method, CodegenClassScope classScope, AggregationClassNames classNames) { method.getBlock().ifCondition(exprDotMethod(AggregationServiceCodegenNames.REF_ROLLUPLEVEL, "isAggregationTop")) .assignRef(REF_CURRENTROW, REF_AGGREGATORTOPGROUP) .ifElse() .assignRef(REF_CURRENTROW, cast(AggregationRow.class, exprDotMethod(arrayAtIndex(REF_AGGREGATORSPERGROUP, exprDotMethod(AggregationServiceCodegenNames.REF_ROLLUPLEVEL, "getAggregationOffset")), "get", AggregationServiceCodegenNames.REF_GROUPKEY))) .ifCondition(equalsNull(REF_CURRENTROW)) .assignRef(REF_CURRENTROW, CodegenExpressionBuilder.newInstance(classNames.getRowTop())) .blockEnd() .blockEnd() .assignRef(REF_CURRENTGROUPKEY, AggregationServiceCodegenNames.REF_GROUPKEY); }
public static void applyEnterCodegenSweep(CodegenMethod method, CodegenClassScope classScope, AggregationClassNames classNames) { CodegenExpressionField timeAbacus = classScope.addOrGetFieldSharable(TimeAbacusField.INSTANCE); method.getBlock().declareVar(long.class, "currentTime", exprDotMethodChain(REF_EXPREVALCONTEXT).add("getTimeProvider").add("getTime")) .ifCondition(or(equalsNull(REF_NEXTSWEEPTIME), relational(REF_NEXTSWEEPTIME, LE, ref("currentTime")))) .assignRef(REF_CURRENTMAXAGE, staticMethod(AggSvcGroupByReclaimAgedImpl.class, "computeTimeReclaimAgeFreq", REF_CURRENTMAXAGE, REF_EVALUATORFUNCTIONMAXAGE, timeAbacus)) .assignRef(REF_CURRENTRECLAIMFREQUENCY, staticMethod(AggSvcGroupByReclaimAgedImpl.class, "computeTimeReclaimAgeFreq", REF_CURRENTRECLAIMFREQUENCY, REF_EVALUATIONFUNCTIONFREQUENCY, timeAbacus)) .assignRef(REF_NEXTSWEEPTIME, op(ref("currentTime"), "+", REF_CURRENTRECLAIMFREQUENCY)) .localMethod(sweepCodegen(method, classScope, classNames), ref("currentTime"), REF_CURRENTMAXAGE); }
public CodegenExpression getFirstNthValueCodegen(CodegenExpressionRef index, CodegenMethod parentMethod, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenMethod initArray = initArrayCodegen(namedMethods, classScope); CodegenMethod method = parentMethod.makeChildWithScope(EventBean.class, AggregatorAccessLinearJoin.class, CodegenSymbolProviderEmpty.INSTANCE, classScope).addParam(int.class, "index"); method.getBlock().ifCondition(relational(ref("index"), LT, constant(0))).blockReturn(constantNull()) .ifCondition(exprDotMethod(refSet, "isEmpty")).blockReturn(constantNull()) .ifCondition(relational(ref("index"), GE, exprDotMethod(refSet, "size"))).blockReturn(constantNull()) .ifCondition(equalsNull(array)).localMethod(initArray).blockEnd() .methodReturn(arrayAtIndex(array, ref("index"))); return localMethod(method, index); }
public CodegenExpression getLastNthValueCodegen(CodegenExpressionRef index, CodegenMethod parentMethod, CodegenClassScope classScope, CodegenNamedMethods namedMethods) { CodegenMethod initArray = initArrayCodegen(namedMethods, classScope); CodegenMethod method = parentMethod.makeChildWithScope(EventBean.class, AggregatorAccessLinearJoin.class, CodegenSymbolProviderEmpty.INSTANCE, classScope).addParam(int.class, "index"); method.getBlock().ifCondition(relational(ref("index"), LT, constant(0))).blockReturn(constantNull()) .ifCondition(exprDotMethod(refSet, "isEmpty")).blockReturn(constantNull()) .ifCondition(relational(ref("index"), GE, exprDotMethod(refSet, "size"))).blockReturn(constantNull()) .ifCondition(equalsNull(array)).localMethod(initArray).blockEnd() .methodReturn(arrayAtIndex(array, op(op(arrayLength(array), "-", ref("index")), "-", constant(1)))); return localMethod(method, index); }