public CodegenExpression CodegenMake( CodegenMethodScope parent, CodegenClassScope classScope) { var method = parent.MakeChild( typeof(EventAdvancedIndexProvisionRuntime), typeof(EventAdvancedIndexProvisionCompileTime), classScope); var indexExpressions = ExprNodeUtilityPrint.ToExpressionStringMinPrecedenceAsArray(IndexDesc.IndexedExpressions); var indexProperties = GetPropertiesPerExpressionExpectSingle(IndexDesc.IndexedExpressions); method.Block .DeclareVar<EventAdvancedIndexProvisionRuntime>( "desc", NewInstance(typeof(EventAdvancedIndexProvisionRuntime))) .SetProperty(Ref("desc"), "IndexExpressionTexts", Constant(indexExpressions)) .SetProperty(Ref("desc"), "IndexProperties", Constant(indexProperties)) .SetProperty( Ref("desc"), "IsIndexExpressionsAllProps", Constant(IsExpressionsAllPropsOnly(IndexDesc.IndexedExpressions))) .SetProperty(Ref("desc"), "Factory", Factory.CodegenMake(parent, classScope)) .SetProperty( Ref("desc"), "ParameterExpressionTexts", Constant(ExprNodeUtilityPrint.ToExpressionStringsMinPrecedence(Parameters))) .SetProperty( Ref("desc"), "ParameterEvaluators", ExprNodeUtilityCodegen.CodegenEvaluators(Parameters, parent, GetType(), classScope)) .SetProperty(Ref("desc"), "ConfigStatement", ConfigStatement.CodegenMake(parent, classScope)) .SetProperty(Ref("desc"), "IndexTypeName", Constant(IndexDesc.IndexTypeName)) .MethodReturn(Ref("desc")); return LocalMethod(method); }
public EventAdvancedIndexProvisionRuntime ToRuntime() { var runtime = new EventAdvancedIndexProvisionRuntime(); runtime.IndexExpressionTexts = ExprNodeUtilityPrint.ToExpressionStringMinPrecedenceAsArray(IndexDesc.IndexedExpressions); runtime.IndexProperties = GetPropertiesPerExpressionExpectSingle(IndexDesc.IndexedExpressions); runtime.IndexExpressionsOpt = IndexDesc.IndexedExpressions; runtime.IsIndexExpressionsAllProps = IsExpressionsAllPropsOnly(IndexDesc.IndexedExpressions); runtime.Factory = Factory.RuntimeFactory; runtime.ParameterExpressionTexts = ExprNodeUtilityPrint.ToExpressionStringsMinPrecedence(Parameters); runtime.ParameterEvaluators = GetEvaluatorsNoCompile(Parameters); runtime.ParameterExpressionsOpt = Parameters; runtime.ConfigStatement = ConfigStatement.ToRuntime(); runtime.IndexTypeName = IndexDesc.IndexTypeName; return runtime; }