Beispiel #1
0
 protected override void ApplyTableEnterNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     method.Block.ExprDotMethod(plugin, "Enter", value);
 }
Beispiel #2
0
 protected override void ApplyTableLeaveFiltered(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     // This is an "ever" aggregator and is designed for use in non-window env
 }
Beispiel #3
0
 public override void ApplyTableLeaveCodegen(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     // no-op
 }
 protected override CodegenExpression CallCodegen(
     CodegenExpressionRef desc,
     CodegenExpressionRef @object,
     CodegenMethodScope parent,
     CodegenClassScope codegenClassScope)
 {
     return(StaticMethod(typeof(DynamicIndexedPropertyGetterByField), "DynamicIndexedPropertyGet", desc, @object, Constant(_index)));
 }
Beispiel #5
0
 protected override void ApplyTableEnterNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     ApplyEvalEnterNonNull(method, ExprDotMethod(Cast(typeof(object), value), "AsDouble"));
 }
Beispiel #6
0
 protected override void InlineInitializeOnTriggerSpecific(
     CodegenExpressionRef saiff,
     CodegenMethod method,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block.SetProperty(saiff, "MergeHelper", mergeHelperForge.Make(method, symbols, classScope));
 }
Beispiel #7
0
 protected override void CodegenInlineSet(
     CodegenExpressionRef @ref,
     CodegenMethod method,
     ModuleTableInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block.SetProperty(@ref, "FunctionName", Constant(_functionName));
 }
 protected override CodegenExpression CallCodegen(
     CodegenExpressionRef desc,
     CodegenExpressionRef @object,
     CodegenMethodScope parent,
     CodegenClassScope codegenClassScope)
 {
     return(StaticMethod(GetType(), "DynamicSimplePropertyCall", desc, @object));
 }
Beispiel #9
0
 internal override void Assign(
     CodegenMethod method,
     CodegenExpressionRef factory,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     ViewMultiKeyHelper.Assign(criteriaExpressions, multiKeyClassNames, method, factory, symbols, classScope);
 }
Beispiel #10
0
 protected override void ApplyTableLeaveNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     method.Block.ExprDotMethod(_vector, "Remove", ExprDotMethod(Cast(typeof(object), value), "AsDouble"));
 }
Beispiel #11
0
 internal override void Assign(
     CodegenMethod method,
     CodegenExpressionRef factory,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block.SetProperty(factory, "IsUnbound", Constant(unbound));
 }
 public abstract void WriteCodegen(
     CodegenExpressionRef row,
     int col,
     CodegenExpressionRef @ref,
     CodegenExpressionRef unitKey,
     CodegenExpressionRef output,
     CodegenMethod method,
     CodegenClassScope classScope);
Beispiel #13
0
 protected override void ApplyTableLeaveNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     method.Block.ExprDotMethod(refSet, "Remove", value);
 }
Beispiel #14
0
 protected override void ApplyTableEnterNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     method.Block.Apply(EnterConsumer(value));
 }
Beispiel #15
0
 protected override void ApplyTableLeaveFiltered(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     throw new UnsupportedOperationException("Not available with tables");
 }
Beispiel #16
0
 public AggregatorLeaving(
     AggregationFactoryMethodLeaving factory,
     int col,
     CodegenMemberCol membersColumnized)
 {
     this.factory = factory;
     leaving = membersColumnized.AddMember(col, typeof(bool), "leaving");
 }
Beispiel #17
0
 public void ApplyTableLeaveCodegen(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     method.Block.AssignRef(leaving, ConstantTrue());
 }
Beispiel #18
0
 protected override void ApplyTableEnterSum(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     ApplyTable(true, value, method, classScope);
 }
Beispiel #19
0
 protected override CodegenExpression ProcessSpecificCodegen(
     CodegenExpression resultEventType,
     CodegenExpression eventBeanFactory,
     CodegenExpressionRef props,
     CodegenClassScope codegenClassScope)
 {
     return ExprDotMethod(eventBeanFactory, "AdapterForTypedObjectArray", props, resultEventType);
 }
Beispiel #20
0
 public static CodegenExpression ReadNullable(
     CodegenExpressionInstanceField serde,
     CodegenExpressionRef input,
     CodegenExpressionRef unitKey,
     CodegenClassScope classScope)
 {
     return ExprDotMethod(serde, "Read", input, unitKey);
 }
Beispiel #21
0
 protected override void ApplyTableEnterNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     ApplyEvalEnterNonNull(value, method);
 }
Beispiel #22
0
 protected override void ApplyTableLeaveNonNull(
     CodegenExpressionRef value,
     Type[] evaluationTypes,
     CodegenMethod method,
     CodegenClassScope classScope)
 {
     // no op
 }
Beispiel #23
0
 protected abstract void WriteWODistinct(
     CodegenExpressionRef row,
     int col,
     CodegenExpressionRef output,
     CodegenExpressionRef unitKey,
     CodegenExpressionRef writer,
     CodegenMethod method,
     CodegenClassScope classScope);
 protected override void CodegenInlineSetWFilterWInputType(
     CodegenExpressionRef @ref,
     CodegenMethod method,
     ModuleTableInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block.SetProperty(@ref, "IsFirst", Constant(IsFirst));
 }
Beispiel #25
0
        private static CodegenMethod GetComparableWMultiKeyCodegen(
            ExprNode[] criteria,
            CodegenExpressionRef @ref,
            CodegenNamedMethods namedMethods,
            CodegenClassScope classScope)
        {
            var methodName = "GetComparable_" + @ref.Ref;
            Consumer<CodegenMethod> code = method => {
                if (criteria.Length == 1) {
                    method.Block.MethodReturn(
                        LocalMethod(
                            CodegenLegoMethodExpression.CodegenExpression(
                                criteria[0].Forge,
                                method,
                                classScope,
                                true),
                            REF_EPS,
                            REF_ISNEWDATA,
                            REF_EXPREVALCONTEXT));
                }
                else {
                    var exprSymbol = new ExprForgeCodegenSymbol(true, null);
                    var expressions = new CodegenExpression[criteria.Length];
                    for (var i = 0; i < criteria.Length; i++) {
                        expressions[i] = criteria[i]
                            .Forge.EvaluateCodegen(
                                typeof(object),
                                method,
                                exprSymbol,
                                classScope);
                    }

                    exprSymbol.DerivedSymbolsCodegen(method, method.Block, classScope);

                    method.Block.DeclareVar<object[]>(
                        "result",
                        NewArrayByLength(typeof(object), Constant(criteria.Length)));
                    for (var i = 0; i < criteria.Length; i++) {
                        method.Block.AssignArrayElement(Ref("result"), Constant(i), expressions[i]);
                    }

                    method.Block.MethodReturn(NewInstance<HashableMultiKey>(Ref("result")));
                }
            };
            return namedMethods.AddMethod(
                typeof(object),
                methodName,
                CodegenNamedParam.From(
                    typeof(EventBean[]),
                    NAME_EPS,
                    typeof(bool),
                    NAME_ISNEWDATA,
                    typeof(ExprEvaluatorContext),
                    NAME_EXPREVALCONTEXT),
                typeof(AggregatorAccessSortedImpl),
                classScope,
                code);
        }
Beispiel #26
0
        public CodegenExpressionRef GetAddInitSvc(CodegenMethodScope scope)
        {
            if (optionalInitServicesRef == null) {
                optionalInitServicesRef = REF_INITSVC;
            }

            scope.AddSymbol(optionalInitServicesRef);
            return optionalInitServicesRef;
        }
Beispiel #27
0
 internal override void Assign(
     CodegenMethod method,
     CodegenExpressionRef factory,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var sizeEval = CodegenEvaluator(sizeForge, method, GetType(), classScope);
     method.Block.SetProperty(factory, "SizeEvaluator", sizeEval);
 }
Beispiel #28
0
        private static CodegenExpression CodegenCompare(
            CodegenExpressionRef lhs,
            Type lhsType,
            CodegenExpressionRef rhs,
            Type rhsType,
            ExprCaseNodeForge forge,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            if (lhsType == null) {
                return EqualsNull(rhs);
            }

            if (rhsType == null) {
                return EqualsNull(lhs);
            }

            if (lhsType.CanNotBeNull() && rhsType.CanNotBeNull() && !forge.IsMustCoerce) {
                return CodegenLegoCompareEquals.CodegenEqualsNonNullNoCoerce(lhs, lhsType, rhs, rhsType);
            }

            var block = codegenMethodScope
                .MakeChild(typeof(bool), typeof(ExprCaseNodeForgeEvalSyntax2), codegenClassScope)
                .AddParam(lhsType, "leftResult")
                .AddParam(rhsType, "rightResult")
                .Block;
            if (lhsType.CanBeNull()) {
                var ifBlock = block.IfCondition(EqualsNull(Ref("leftResult")));
                if (rhsType.CanNotBeNull()) {
                    ifBlock.BlockReturn(ConstantFalse());
                }
                else {
                    ifBlock.BlockReturn(EqualsNull(Ref("rightResult")));
                }
            }

            if (rhsType.CanBeNull()) {
                block.IfCondition(EqualsNull(Ref("rightResult"))).BlockReturn(ConstantFalse());
            }

            CodegenMethod method;
            if (!forge.IsMustCoerce) {
                method = block.MethodReturn(
                    CodegenLegoCompareEquals.CodegenEqualsNonNullNoCoerce(
                        Ref("leftResult"),
                        lhsType,
                        Ref("rightResult"),
                        rhsType));
            }
            else {
                block.DeclareVar<object>("left", forge.Coercer.CoerceCodegen(Ref("leftResult"), lhsType));
                block.DeclareVar<object>("right", forge.Coercer.CoerceCodegen(Ref("rightResult"), rhsType));
                method = block.MethodReturn(StaticMethod<object>("Equals", Ref("left"), Ref("right")));
            }

            return LocalMethodBuild(method).Pass(lhs).Pass(rhs).Call();
        }
        public CodegenExpressionRef GetAddEventType(CodegenMethodScope scope)
        {
            if (optionalEventTypeRef == null) {
                optionalEventTypeRef = REF_EVENTTYPE;
            }

            scope.AddSymbol(optionalEventTypeRef);
            return optionalEventTypeRef;
        }
Beispiel #30
0
 protected override void ApplyEvalLeaveNonNull(
     CodegenExpressionRef value,
     Type valueType,
     CodegenMethod method,
     ExprForgeCodegenSymbol symbols,
     ExprForge[] forges,
     CodegenClassScope classScope)
 {
 }