Exemple #1
0
        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);
        }
Exemple #3
0
 public abstract CodegenExpression Codegen(
     InternalEventRouterWriterForge writer,
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope);