예제 #1
0
 public CodegenMethod InitializeCodegen(
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var method = parent.MakeChild(TypeOfSubclass(), GetType(), classScope);
     method.Block
         .DeclareVar(TypeOfSubclass(), "saiff", NewInstance(TypeOfSubclass()))
         .SetProperty(Ref("saiff"), "Activator", activator.MakeCodegen(method, symbols, classScope))
         .SetProperty(
             Ref("saiff"),
             "ResultEventType",
             EventTypeUtility.ResolveTypeCodegen(resultEventType, symbols.GetAddInitSvc(method)))
         .SetProperty(
             Ref("saiff"),
             "Subselects",
             SubSelectFactoryForge.CodegenInitMap(subselects, GetType(), method, symbols, classScope))
         .SetProperty(
             Ref("saiff"),
             "TableAccesses",
             ExprTableEvalStrategyUtil.CodegenInitMap(tableAccesses, GetType(), method, symbols, classScope));
     InlineInitializeOnTriggerBase(Ref("saiff"), method, symbols, classScope);
     method.Block.MethodReturn(Ref("saiff"));
     return method;
 }
예제 #2
0
 public CodegenExpression Make(
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var method = parent.MakeChild(typeof(SubSelectFactory), GetType(), classScope);
     method.Block
         .DeclareVar<SubSelectFactory>("factory", NewInstance(typeof(SubSelectFactory)))
         .SetProperty(Ref("factory"), "SubqueryNumber", Constant(subqueryNumber))
         .SetProperty(Ref("factory"), "Activator", activator.MakeCodegen(method, symbols, classScope))
         .SetProperty(
             Ref("factory"),
             "StrategyFactory",
             strategyFactoryForge.MakeCodegen(method, symbols, classScope))
         .SetProperty(Ref("factory"), "HasAggregation", Constant(strategyFactoryForge.HasAggregation))
         .SetProperty(Ref("factory"), "HasPrior", Constant(strategyFactoryForge.HasPrior))
         .SetProperty(Ref("factory"), "HasPrevious", Constant(strategyFactoryForge.HasPrevious))
         .ExprDotMethod(symbols.GetAddInitSvc(method), "AddReadyCallback", Ref("factory"))
         .MethodReturn(Ref("factory"));
     return LocalMethod(method);
 }