public override CodegenExpression Codegen( InternalEventRouterWriterForge writer, CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent .MakeChild(typeof(InternalEventRouterWriterArrayElement), GetType(), classScope); var indexExpr = ExprNodeUtilityCodegen.CodegenEvaluator( _indexExpression.Forge, method, typeof(VariableTriggerWriteArrayElementForge), classScope); var rhsExpr = ExprNodeUtilityCodegen.CodegenEvaluator( _rhsExpression.Forge, method, typeof(VariableTriggerWriteArrayElementForge), classScope); var typeWidenerExpr = _widener == null ? ConstantNull() : TypeWidenerFactory.CodegenWidener(_widener, method, GetType(), classScope); method.Block .DeclareVar <InternalEventRouterWriterArrayElement>("desc", NewInstance(typeof(InternalEventRouterWriterArrayElement))) .SetProperty(Ref("desc"), "IndexExpression", indexExpr) .SetProperty(Ref("desc"), "RhsExpression", rhsExpr) .SetProperty(Ref("desc"), "TypeWidener", typeWidenerExpr) .SetProperty(Ref("desc"), "PropertyName", Constant(_propertyName)) .MethodReturn(Ref("desc")); return(LocalMethod(method)); }
public override CodegenExpression Codegen( InternalEventRouterWriterForge writer, CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(InternalEventRouterWriterCurly), GetType(), classScope); var descExpr = ExprNodeUtilityCodegen.CodegenEvaluator( _expression.Forge, method, typeof(VariableTriggerWriteArrayElementForge), classScope); method.Block .DeclareVar<InternalEventRouterWriterCurly>("desc", NewInstance(typeof(InternalEventRouterWriterCurly))) .SetProperty(Ref("desc"), "Expression", descExpr) .MethodReturn(Ref("desc")); return LocalMethod(method); }
public abstract CodegenExpression Codegen( InternalEventRouterWriterForge writer, CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope);