public ExprDotNodeForgePropertyExprEvalIndexed( ExprDotNodeForgePropertyExpr forge, ExprEvaluator exprEvaluator) { this.forge = forge; this.exprEvaluator = exprEvaluator; }
public static CodegenExpression Codegen( ExprDotNodeForgePropertyExpr forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { CodegenMethod methodNode = codegenMethodScope.MakeChild( forge.EvaluationType, typeof(ExprDotNodeForgePropertyExprEvalIndexed), codegenClassScope); CodegenExpressionRef refEPS = exprSymbol.GetAddEPS(methodNode); methodNode.Block .DeclareVar<EventBean>("@event", ArrayAtIndex(refEPS, Constant(forge.StreamNum))) .IfRefNullReturnNull("@event") .DeclareVar<int?>( "index", forge.ExprForge.EvaluateCodegen(typeof(int?), methodNode, exprSymbol, codegenClassScope)) .IfRefNullReturnNull("index") .MethodReturn( CodegenLegoCast.CastSafeFromObjectType( forge.EvaluationType, forge.IndexedGetter.EventBeanGetIndexedCodegen( methodNode, codegenClassScope, Ref("@event"), Unbox(Ref("index"))))); return LocalMethod(methodNode); }
public static CodegenExpression Codegen( ExprDotNodeForgePropertyExpr forge, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { var methodNode = codegenMethodScope.MakeChild( forge.EvaluationType, typeof(ExprDotNodeForgePropertyExprEvalMapped), codegenClassScope); var refEPS = exprSymbol.GetAddEPS(methodNode); methodNode.Block .DeclareVar<EventBean>("@event", ArrayAtIndex(refEPS, Constant(forge.StreamNum))) .IfRefNullReturnNull("@event") .DeclareVar<string>( "result", forge.ExprForge.EvaluateCodegen(typeof(string), methodNode, exprSymbol, codegenClassScope)) .IfRefNullReturnNull("result") .DebugStack(); methodNode.Block .MethodReturn( CodegenLegoCast.CastSafeFromObjectType( forge.EvaluationType, forge.MappedGetter.EventBeanGetMappedCodegen( methodNode, codegenClassScope, Ref("@event"), Ref("result")))); return LocalMethod(methodNode); }