public CodegenExpression MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent) { var method = parent.MakeChild(typeof(object), GetType(), classScope) .AddParam(GET_FILTER_VALUE_FP); method.Block .DeclareVar<EventBean>("props", ExprDotName(REF_EXPREVALCONTEXT, "ContextProperties")) .IfNullReturnNull(Ref("props")) .DeclareVar<object>("result", _getter.EventBeanGetCodegen(Ref("props"), method, classScope)); if (_numberCoercer != null) { method.Block.AssignRef( "result", _numberCoercer.CoerceCodegenMayNullBoxed( Cast(typeof(object), Ref("result")), typeof(object), method, classScope)); } method.Block.MethodReturn(Ref("result")); return LocalMethod(method, GET_FILTER_VALUE_REFS); }
public override CodegenMethod MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols) { var method = parent.MakeChild(typeof(FilterSpecParam), GetType(), classScope); var get = ExprIdentNodeEvaluator.Getter.EventBeanGetCodegen(Ref("@event"), method, classScope); method.Block .DeclareVar<ExprFilterSpecLookupable>( "lookupable", LocalMethod(lookupable.MakeCodegen(method, symbols, classScope))) .DeclareVar<FilterOperator>("filterOperator", EnumValue(filterOperator)); var getFilterValue = new CodegenExpressionLambda(method.Block) .WithParams(FilterSpecParam.GET_FILTER_VALUE_FP); var param = NewInstance<ProxyFilterSpecParam>( Ref("lookupable"), Ref("filterOperator"), getFilterValue); //var param = NewAnonymousClass( // method.Block, // typeof(FilterSpecParam), // Arrays.AsList<CodegenExpression>(Ref("lookupable"), Ref("filterOperator"))); //var getFilterValue = CodegenMethod.MakeParentNode(typeof(object), GetType(), classScope) // .AddParam(FilterSpecParam.GET_FILTER_VALUE_FP); //param.AddMethod("GetFilterValue", getFilterValue); getFilterValue.Block .DeclareVar<EventBean>( "@event", ExprDotMethod(Ref("matchedEvents"), "GetMatchingEventByTag", Constant(ResultEventAsName))) .DeclareVar<object>("value", ConstantNull()) .IfRefNotNull("@event") .AssignRef("value", get) .BlockEnd(); if (IsMustCoerce) { getFilterValue.Block.AssignRef( "value", _numberCoercer.CoerceCodegenMayNullBoxed( Cast(typeof(object), Ref("value")), typeof(object), method, classScope)); } getFilterValue.Block.BlockReturn(FilterValueSetParamImpl.CodegenNew(Ref("value"))); method.Block.MethodReturn(param); return method; }
public override CodegenMethod MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols) { var method = parent.MakeChild(typeof(FilterSpecParam), GetType(), classScope); var lookupableExpr = LocalMethod(lookupable.MakeCodegen(method, symbols, classScope)); method.Block .DeclareVar<ExprFilterSpecLookupable>("lookupable", lookupableExpr) .DeclareVar<FilterOperator>("filterOperator", EnumValue(filterOperator)); //var param = NewAnonymousClass( // method.Block, // typeof(FilterSpecParam), // Arrays.AsList<CodegenExpression>(Ref("lookupable"), Ref("filterOperator"))); var getFilterValue = new CodegenExpressionLambda(method.Block) .WithParams(FilterSpecParam.GET_FILTER_VALUE_FP); var param = NewInstance<ProxyFilterSpecParam>( Ref("lookupable"), Ref("filterOperator"), getFilterValue); //var getFilterValue = CodegenMethod // .MakeParentNode(typeof(object), GetType(), classScope) // .AddParam(FilterSpecParam.GET_FILTER_VALUE_FP); //param.AddMethod("GetFilterValue", getFilterValue); getFilterValue.Block .DeclareVar<EventBean>("props", ExprDotName(REF_EXPREVALCONTEXT, "ContextProperties")) .IfNullReturnNull(Ref("props")) .DeclareVar<object>("result", _getter.EventBeanGetCodegen(Ref("props"), method, classScope)); if (_numberCoercer != null) { getFilterValue.Block.AssignRef( "result", _numberCoercer.CoerceCodegenMayNullBoxed( Cast(typeof(object), Ref("result")), typeof(object), method, classScope)); } var returnExpr = FilterValueSetParamImpl.CodegenNew(Ref("result")); getFilterValue.Block.BlockReturn(returnExpr); method.Block.MethodReturn(param); return method; }
public CodegenExpression MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent) { var method = parent.MakeChild(typeof(object), GetType(), classScope) .AddParam(GET_FILTER_VALUE_FP); var value = _deployTimeConst.CodegenGetDeployTimeConstValue(classScope); if (_numberCoercer != null) { value = _numberCoercer.CoerceCodegenMayNullBoxed(value, _returnType, method, classScope); } method.Block.MethodReturn(value); return LocalMethod(method, GET_FILTER_VALUE_REFS); }
public CodegenExpression MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent) { var method = parent.MakeChild(typeof(object), GetType(), classScope).AddParam(GET_FILTER_VALUE_FP); var rhsExpression = CodegenLegoMethodExpression.CodegenExpression(value.Forge, method, classScope); var matchEventConvertor = convertor.Make(method, classScope); CodegenExpression valueExpr = LocalMethod(rhsExpression, Ref("eps"), ConstantTrue(), REF_EXPREVALCONTEXT); if (numberCoercer != null) { valueExpr = numberCoercer.CoerceCodegenMayNullBoxed(valueExpr, value.Forge.EvaluationType, method, classScope); } method.Block .DeclareVar<EventBean[]>("eps", LocalMethod(matchEventConvertor, REF_MATCHEDEVENTMAP)) .MethodReturn(valueExpr); return LocalMethod(method, GET_FILTER_VALUE_REFS); }
public override CodegenMethod MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols) { var method = parent .MakeChild(typeof(FilterSpecParam), GetType(), classScope); method.Block .DeclareVar <ExprFilterSpecLookupable>( "lookupable", LocalMethod(lookupable.MakeCodegen(method, symbols, classScope))) .DeclareVar <FilterOperator>("filterOperator", EnumValue(typeof(FilterOperator), filterOperator.GetName())); var getFilterValue = new CodegenExpressionLambda(method.Block) .WithParams(FilterSpecParam.GET_FILTER_VALUE_FP); var inner = NewInstance <ProxyFilterSpecParam>( Ref("lookupable"), Ref("filterOperator"), getFilterValue); var rhsExpression = CodegenLegoMethodExpression.CodegenExpression(_value.Forge, method, classScope); var matchEventConvertor = _convertor.Make(method, classScope); CodegenExpression valueExpr = LocalMethod(rhsExpression, Ref("eps"), ConstantTrue(), REF_EXPREVALCONTEXT); if (_numberCoercer != null) { valueExpr = _numberCoercer.CoerceCodegenMayNullBoxed(valueExpr, _value.Forge.EvaluationType, method, classScope); } getFilterValue.Block .DeclareVar <EventBean[]>("eps", LocalMethod(matchEventConvertor, FilterSpecParam.REF_MATCHEDEVENTMAP)) .BlockReturn(FilterValueSetParamImpl.CodegenNew(valueExpr)); method.Block.MethodReturn(inner); return(method); }
public override CodegenMethod MakeCodegen( CodegenClassScope classScope, CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols) { var method = parent.MakeChild(typeof(FilterSpecParam), GetType(), classScope); method.Block .DeclareVar<ExprFilterSpecLookupable>( "lookupable", LocalMethod(lookupable.MakeCodegen(method, symbols, classScope))) .DeclareVar<FilterOperator>("filterOperator", EnumValue(filterOperator)); var getFilterValue = new CodegenExpressionLambda(method.Block) .WithParams(FilterSpecParam.GET_FILTER_VALUE_FP); var param = NewInstance<ProxyFilterSpecParam>( Ref("lookupable"), Ref("filterOperator"), getFilterValue); //var param = NewAnonymousClass( // method.Block, // typeof(FilterSpecParam), // Arrays.AsList<CodegenExpression>(Ref("lookupable"), Ref("filterOperator"))); //var getFilterValue = CodegenMethod.MakeParentNode(typeof(object), GetType(), classScope) // .AddParam(FilterSpecParam.GET_FILTER_VALUE_FP); //param.AddMethod("GetFilterValue", getFilterValue); var value = _deployTimeConstant.CodegenGetDeployTimeConstValue(classScope); if (_numberCoercer != null) { value = _numberCoercer.CoerceCodegenMayNullBoxed(value, _returnType, method, classScope); } getFilterValue.Block.BlockReturn(FilterValueSetParamImpl.CodegenNew(value)); method.Block.MethodReturn(param); return method; }