public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(PollResultIndexingStrategySorted), GetType(), classScope); var propertyGetter = ((EventTypeSPI) eventType).GetGetterSPI(propertyName); var propertyType = eventType.GetPropertyType(propertyName); var valueGetter = EventTypeUtility.CodegenGetterWCoerce( propertyGetter, propertyType, valueType, method, GetType(), classScope); method.Block .DeclareVar<PollResultIndexingStrategySorted>( "strat", NewInstance(typeof(PollResultIndexingStrategySorted))) .SetProperty(Ref("strat"), "StreamNum", Constant(streamNum)) .SetProperty(Ref("strat"), "PropertyName", Constant(propertyName)) .SetProperty(Ref("strat"), "ValueGetter", valueGetter) .SetProperty(Ref("strat"), "ValueType", Constant(valueType)) .ExprDotMethod(Ref("strat"), "Init") .MethodReturn(Ref("strat")); return LocalMethod(method); }
public static CodegenExpression CodegenGetterMayMultiKey( EventType eventType, EventPropertyGetterSPI[] getters, Type[] getterResultTypes, Type[] optionalCoercionTypes, MultiKeyClassRef multiKeyClassRef, CodegenMethod method, CodegenClassScope classScope) { if (getters == null || getters.Length == 0) { return(ConstantNull()); } if (multiKeyClassRef != null && multiKeyClassRef.ClassNameMK != null) { return(CodegenMultiKeyGetter(eventType, getters, getterResultTypes, multiKeyClassRef, method, classScope)); } return(EventTypeUtility.CodegenGetterWCoerce( getters[0], getterResultTypes[0], optionalCoercionTypes?[0], method, typeof(MultiKeyCodegen), classScope)); }
public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(PollResultIndexingStrategyInKeywordMulti), GetType(), classScope); method.Block.DeclareVar<EventPropertyValueGetter[]>( "getters", NewArrayByLength(typeof(EventPropertyValueGetter), Constant(propertyNames.Length))); for (var i = 0; i < propertyNames.Length; i++) { var getter = ((EventTypeSPI) eventType).GetGetterSPI(propertyNames[i]); var getterType = eventType.GetPropertyType(propertyNames[i]); var eval = EventTypeUtility.CodegenGetterWCoerce( getter, getterType, getterType, method, GetType(), classScope); method.Block.AssignArrayElement(Ref("getters"), Constant(i), eval); } method.Block .DeclareVar<PollResultIndexingStrategyInKeywordMulti>( "strat", NewInstance(typeof(PollResultIndexingStrategyInKeywordMulti))) .SetProperty(Ref("strat"), "StreamNum", Constant(streamNum)) .SetProperty(Ref("strat"), "PropertyNames", Constant(propertyNames)) .SetProperty(Ref("strat"), "ValueGetters", Ref("getters")) .ExprDotMethod(Ref("strat"), "Init") .MethodReturn(Ref("strat")); return LocalMethod(method); }
public override CodegenMethod MakeCodegen( CodegenMethodScope parent, SAIFFInitializeSymbolWEventType symbols, CodegenClassScope classScope) { var method = parent.MakeChild( typeof(FilterSpecLookupableAdvancedIndex), typeof(FilterSpecLookupableAdvancedIndexForge), classScope); Func<EventPropertyGetterSPI, CodegenExpression> toEval = getter => EventTypeUtility.CodegenGetterWCoerce(getter, typeof(double?), null, method, GetType(), classScope); method.Block .DeclareVar<FilterSpecLookupableAdvancedIndex>( "lookupable", NewInstance<FilterSpecLookupableAdvancedIndex>( Constant(Expression), ConstantNull(), Typeof(ReturnType))) .SetProperty(Ref("lookupable"), "QuadTreeConfig", QuadTreeConfig.Make()) .SetProperty(Ref("lookupable"), "X", toEval.Invoke(_x)) .SetProperty(Ref("lookupable"), "Y", toEval.Invoke(_y)) .SetProperty(Ref("lookupable"), "Width", toEval.Invoke(_width)) .SetProperty(Ref("lookupable"), "Height", toEval.Invoke(_height)) .SetProperty(Ref("lookupable"), "IndexType", Constant(IndexType)) .Expression( ExprDotMethodChain(symbols.GetAddInitSvc(method)) .Get(EPStatementInitServicesConstants.FILTERSHAREDLOOKUPABLEREGISTERY) .Add( "RegisterLookupable", symbols.GetAddEventType(method), Ref("lookupable"))) .MethodReturn(Ref("lookupable")); return method; }
public CodegenExpression Make( CodegenMethodScope parent, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(QueryPlanIndexItem), GetType(), classScope); var propertyGetters = EventTypeUtility.GetGetters(eventType, HashProps); var propertyTypes = EventTypeUtility.GetPropertyTypes(eventType, HashProps); var valueGetter = MultiKeyCodegen.CodegenGetterMayMultiKey( eventType, propertyGetters, propertyTypes, HashTypes, HashMultiKeyClasses, method, classScope); CodegenExpression rangeGetters; if (RangeProps.Length == 0) { rangeGetters = NewArrayByLength(typeof(EventPropertyValueGetter), Constant(0)); } else { var makeMethod = parent.MakeChild(typeof(EventPropertyValueGetter[]), GetType(), classScope); makeMethod.Block.DeclareVar<EventPropertyValueGetter[]>( "getters", NewArrayByLength(typeof(EventPropertyValueGetter), Constant(RangeProps.Length))); for (var i = 0; i < RangeProps.Length; i++) { var getter = ((EventTypeSPI) eventType).GetGetterSPI(RangeProps[i]); var getterType = eventType.GetPropertyType(RangeProps[i]); var coercionType = RangeTypes == null ? null : RangeTypes[i]; var eval = EventTypeUtility.CodegenGetterWCoerce( getter, getterType, coercionType, method, GetType(), classScope); makeMethod.Block.AssignArrayElement(Ref("getters"), Constant(i), eval); } makeMethod.Block.MethodReturn(Ref("getters")); rangeGetters = LocalMethod(makeMethod); } CodegenExpression multiKeyTransform = MultiKeyCodegen.CodegenMultiKeyFromArrayTransform( HashMultiKeyClasses, method, classScope); method.Block.MethodReturn( NewInstance<QueryPlanIndexItem>( Constant(HashProps), Constant(HashTypes), valueGetter, multiKeyTransform, HashMultiKeyClasses != null ? HashMultiKeyClasses.GetExprMKSerde(method, classScope) : ConstantNull(), Constant(RangeProps), Constant(RangeTypes), rangeGetters, DataInputOutputSerdeForgeExtensions.CodegenArray(RangeSerdes, method, classScope, null), Constant(IsUnique), AdvancedIndexProvisionDesc == null ? ConstantNull() : AdvancedIndexProvisionDesc.CodegenMake(method, classScope))); return LocalMethod(method); }
public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(PollResultIndexingStrategyComposite), GetType(), classScope); var hashGetter = ConstantNull(); if (optHashPropertyNames != null) { var propertyGetters = EventTypeUtility.GetGetters(eventType, optHashPropertyNames); var propertyTypes = EventTypeUtility.GetPropertyTypes(eventType, optHashPropertyNames); hashGetter = MultiKeyCodegen.CodegenGetterMayMultiKey( eventType, propertyGetters, propertyTypes, optHashCoercedTypes, optHashMultiKeyClasses, method, classScope); } method.Block.DeclareVar<EventPropertyValueGetter[]>( "rangeGetters", NewArrayByLength(typeof(EventPropertyValueGetter), Constant(rangeProps.Length))); for (var i = 0; i < rangeProps.Length; i++) { var propertyType = eventType.GetPropertyType(rangeProps[i]); var getterSPI = ((EventTypeSPI) eventType).GetGetterSPI(rangeProps[i]); var getter = EventTypeUtility.CodegenGetterWCoerce( getterSPI, propertyType, rangeTypes[i], method, GetType(), classScope); method.Block.AssignArrayElement(Ref("rangeGetters"), Constant(i), getter); } method.Block .DeclareVar<PollResultIndexingStrategyComposite>( "strat", NewInstance(typeof(PollResultIndexingStrategyComposite))) .SetProperty(Ref("strat"), "StreamNum", Constant(streamNum)) .SetProperty(Ref("strat"), "OptionalKeyedProps", Constant(optHashPropertyNames)) .SetProperty(Ref("strat"), "OptKeyCoercedTypes", Constant(optHashCoercedTypes)) .SetProperty(Ref("strat"), "HashGetter", hashGetter) .SetProperty(Ref("strat"), "RangeProps", Constant(rangeProps)) .SetProperty(Ref("strat"), "OptRangeCoercedTypes", Constant(rangeTypes)) .SetProperty(Ref("strat"), "RangeGetters", Ref("rangeGetters")) .ExprDotMethod(Ref("strat"), "Init") .MethodReturn(Ref("strat")); return LocalMethod(method); }
public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(PropertyCompositeEventTableFactoryFactory), GetType(), classScope); var hashGetter = ConstantNull(); if (_optKeyProps != null && _optKeyProps.Length > 0) { var propertyTypes = EventTypeUtility.GetPropertyTypes(_eventType, _optKeyProps); var getters = EventTypeUtility.GetGetters(_eventType, _optKeyProps); hashGetter = MultiKeyCodegen.CodegenGetterMayMultiKey( _eventType, getters, propertyTypes, _optKeyTypes, _hashMultikeyClasses, method, classScope); } method.Block.DeclareVar<EventPropertyValueGetter[]>( "rangeGetters", NewArrayByLength(typeof(EventPropertyValueGetter), Constant(_rangeProps.Length))); for (var i = 0; i < _rangeProps.Length; i++) { var propertyType = _eventType.GetPropertyType(_rangeProps[i]); var getterSPI = ((EventTypeSPI) _eventType).GetGetterSPI(_rangeProps[i]); var getter = EventTypeUtility.CodegenGetterWCoerce( getterSPI, propertyType, _rangeTypes[i], method, GetType(), classScope); method.Block.AssignArrayElement(Ref("rangeGetters"), Constant(i), getter); } IList<CodegenExpression> @params = new List<CodegenExpression>(); @params.Add(Constant(_indexedStreamNum)); @params.Add(Constant(_subqueryNum)); @params.Add(Constant(_isFireAndForget)); @params.Add(Constant(_optKeyProps)); @params.Add(Constant(_optKeyTypes)); @params.Add(hashGetter); @params.Add(_hashMultikeyClasses.GetExprMKSerde(method, classScope)); @params.Add(Constant(_rangeProps)); @params.Add(Constant(_rangeTypes)); @params.Add(Ref("rangeGetters")); @params.Add(DataInputOutputSerdeForgeExtensions.CodegenArray(_rangeSerdes, method, classScope, null)); method.Block.MethodReturn( NewInstance<PropertyCompositeEventTableFactoryFactory>(@params.ToArray())); return LocalMethod(method); }
public override CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var method = parent.MakeChild(typeof(VariableTriggerWriteDesc), GetType(), classScope); method.Block .DeclareVar<VariableTriggerWriteDesc>("desc", NewInstance(typeof(VariableTriggerWriteDesc))) .SetProperty( Ref("desc"), "Type", EventTypeUtility.ResolveTypeCodegen(Type, symbols.GetAddInitSvc(method))) .SetProperty( Ref("desc"), "VariableName", Constant(VariableName)) .SetProperty( Ref("desc"), "Writer", EventTypeUtility.CodegenWriter( Type, evaluationType, getterType, Writer, method, GetType(), classScope)) .SetProperty( Ref("desc"), "Getter", EventTypeUtility.CodegenGetterWCoerce( getter, getterType, null, method, GetType(), classScope)) .MethodReturn(Ref("desc")); return LocalMethod(method); }
protected override IList<CodegenExpression> AdditionalParams( CodegenMethod method, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var @params = new List<CodegenExpression>(); @params.Add(Constant(indexedProp)); @params.Add(Constant(coercionDesc.CoercionTypes[0])); var propertyType = eventType.GetPropertyType(indexedProp); var getterSPI = ((EventTypeSPI) eventType).GetGetterSPI(indexedProp); var getter = EventTypeUtility.CodegenGetterWCoerce( getterSPI, propertyType, coercionDesc.CoercionTypes[0], method, GetType(), classScope); @params.Add(getter); @params.Add(serde.Codegen(method, classScope, null)); return @params; }