public static CodegenExpression Codegen(
            EnumSequenceEqualForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var scope = new ExprForgeCodegenSymbol(false, null);
            var namedParams = EnumForgeCodegenNames.PARAMS;

            var methodNode = codegenMethodScope
                .MakeChildWithScope(typeof(bool), typeof(EnumSequenceEqualForgeEval), scope, codegenClassScope)
                .AddParam(namedParams);

            methodNode.Block.MethodReturn(
                StaticMethod(
                    typeof(EnumSequenceEqualForgeEval),
                    "EnumSequenceEqualsCompare",
                    EnumForgeCodegenNames.REF_ENUMCOLL,
                    forge.InnerExpression.EvaluateCodegen(typeof(object), methodNode, scope, codegenClassScope)));
            return LocalMethod(
                methodNode,
                args.Eps,
                args.Enumcoll,
                args.IsNewData,
                args.ExprCtx);
        }
Exemple #2
0
 public EnumForgeDesc MakeEnumForgeDesc(
     IList<ExprDotEvalParam> bodiesAndParameters,
     int streamCountIncoming,
     StatementCompileTimeServices services)
 {
     var body = bodiesAndParameters[0].BodyForge;
     var type = EPTypeHelper.SingleValue(typeof(bool?));
     EnumForge forge = new EnumSequenceEqualForge(body, streamCountIncoming, _isScalar);
     return new EnumForgeDesc(type, forge);
 }