Exemple #1
0
        public override bool Equals(object obj)
        {
            if (this == obj) {
                return true;
            }

            if (!(obj is FilterSpecCompiled)) {
                return false;
            }

            var other = (FilterSpecCompiled) obj;
            if (!EqualsTypeAndFilter(other)) {
                return false;
            }

            if (OptionalPropertyEvaluator == null && other.OptionalPropertyEvaluator == null) {
                return true;
            }

            if (OptionalPropertyEvaluator != null && other.OptionalPropertyEvaluator == null) {
                return false;
            }

            if (OptionalPropertyEvaluator == null && other.OptionalPropertyEvaluator != null) {
                return false;
            }

            return OptionalPropertyEvaluator.CompareTo(other.OptionalPropertyEvaluator);
        }
Exemple #2
0
        public CodegenMethod MakeCodegen(
            CodegenMethodScope parent,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        { 
            var method = parent.MakeChild(typeof(FilterSpecActivatable), typeof(FilterSpecCompiled), classScope);

            if (filterCallbackId == -1) {
                throw new IllegalStateException("Unassigned filter callback id");
            }

            var propertyEval = OptionalPropertyEvaluator == null
                ? ConstantNull()
                : OptionalPropertyEvaluator.Make(method, symbols, classScope);
            method.Block
                .DeclareVar<EventType>(
                    "eventType",
                    EventTypeUtility.ResolveTypeCodegen(FilterForEventType, EPStatementInitServicesConstants.REF))
                .DeclareVar<FilterSpecParam[][]>(
                    "parameters",
                    LocalMethod(
                        FilterSpecParamForge.MakeParamArrayArrayCodegen(Parameters, classScope, method),
                        Ref("eventType"),
                        symbols.GetAddInitSvc(method)))
                .DeclareVar<FilterSpecActivatable>(
                    "activatable",
                    NewInstance<FilterSpecActivatable>(
                        SAIFFInitializeSymbolWEventType.REF_EVENTTYPE,
                        Constant(FilterForEventType.Name),
                        Ref("parameters"),
                        propertyEval,
                        Constant(filterCallbackId)))
                .Expression(
                    ExprDotMethodChain(symbols.GetAddInitSvc(method))
                        .Get(EPStatementInitServicesConstants.FILTERSPECACTIVATABLEREGISTRY)
                        .Add("Register", Ref("activatable")))
                .MethodReturn(Ref("activatable"));

            return method;
        }