Exemple #1
0
        public static CodegenExpression Codegen(
            EnumDistinctEventsForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var innerType = Boxing.GetBoxedType(forge.InnerExpression.EvaluationType);

            var scope = new ExprForgeCodegenSymbol(false, null);
            var methodNode = codegenMethodScope.MakeChildWithScope(
                    typeof(FlexCollection),
                    typeof(EnumDistinctEventsForgeEval),
                    scope,
                    codegenClassScope)
                .AddParam(EnumForgeCodegenNames.PARAMS);

            var block = methodNode.Block
                .IfCondition(Relational(ExprDotName(EnumForgeCodegenNames.REF_ENUMCOLL, "Count"), LE, Constant(1)))
                .BlockReturn(EnumForgeCodegenNames.REF_ENUMCOLL)
                .DeclareVar<IDictionary<object, EventBean>>("distinct", NewInstance(typeof(LinkedHashMap<object, EventBean>)));
            block.ForEach(typeof(EventBean), "next", EnumForgeCodegenNames.REF_ENUMCOLL)
                .AssignArrayElement(EnumForgeCodegenNames.REF_EPS, Constant(forge.StreamNumLambda), Ref("next"))
                .DeclareVar(
                    innerType,
                    "comparable",
                    forge.InnerExpression.EvaluateCodegen(innerType, methodNode, scope, codegenClassScope))
                .IfCondition(Not(ExprDotMethod(Ref("distinct"), "CheckedContainsKey", Ref("comparable"))))
                .Expression(ExprDotMethod(Ref("distinct"), "Put", Ref("comparable"), Ref("next")))
                .BlockEnd();
            block.MethodReturn(FlexWrap(ExprDotName(Ref("distinct"), "Values")));
            return LocalMethod(methodNode, args.Eps, args.Enumcoll, args.IsNewData, args.ExprCtx);
        }
Exemple #2
0
 protected override EPType InitAndNoParamsReturnType(
     EventType inputEventType,
     Type collectionComponentType)
 {
     aggMethodFactory = GetAggregatorFactory(collectionComponentType);
     return(EPTypeHelper.SingleValue(Boxing.GetBoxedType(aggMethodFactory.ValueType)));
 }
Exemple #3
0
 /// <summary>
 /// 会有变更
 /// </summary>
 public void SetBoxingProp()
 {
     BoxingPropIndex = -1;
     if (Boxing.Contains("HMI"))
     {
         //if(Comment.Contains())
         return;
     }
     if (Boxing.Contains("LR"))
     {
         // TODO
         return;
     }
     if (Boxing.Contains("PB"))
     {
         // TODO
         return;
     }
     if (Boxing.Contains("DPB"))
     {
         //todo
         return;
     }
     if (Boxing.Contains("GPB"))
     {
         //TODO
     }
 }
Exemple #4
0
        public override CodegenExpression Codegen(
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var innerTypeBoxed = Boxing.GetBoxedType(EPTypeHelper.GetCodegenReturnType(_resultType));

            var paramTypes = EnumForgeCodegenNames.PARAMS;
            var block = codegenMethodScope
                .MakeChild(innerTypeBoxed, typeof(EnumMinMaxEventsForgeEval), codegenClassScope)
                .AddParam(paramTypes)
                .Block
                .DeclareVar(innerTypeBoxed, "minKey", ConstantNull());

            var forEach = block.ForEach(typeof(object), "value", EnumForgeCodegenNames.REF_ENUMCOLL)
                .IfRefNull("value")
                .BlockContinue();

            forEach.IfCondition(EqualsNull(Ref("minKey")))
                .AssignRef("minKey", Cast(innerTypeBoxed, Ref("value")))
                .IfElse()
                .IfCondition(
                    Relational(ExprDotMethod(Unbox(Ref("minKey"), innerTypeBoxed), "CompareTo", Ref("value")), _max ? LT : GT, Constant(0)))
                .AssignRef("minKey", Cast(innerTypeBoxed, Ref("value")));

            var method = block.MethodReturn(Ref("minKey"));
            return LocalMethod(method, args.Expressions);
        }
Exemple #5
0
        public override EnumForge GetEnumForge(StreamTypeService streamTypeService,
            string enumMethodUsedName,
            IList<ExprDotEvalParam> bodiesAndParameters,
            EventType inputEventType,
            Type collectionComponentType,
            int numStreamsIncoming,
            bool disablePropertyExpressionEventCollCache,
            StatementRawInfo statementRawInfo,
            StatementCompileTimeServices services)
        {
            var max = EnumMethodEnum == EnumMethodEnum.MAX;

            if (bodiesAndParameters.IsEmpty()) {
                var returnTypeX = Boxing.GetBoxedType(collectionComponentType);
                TypeInfo = EPTypeHelper.SingleValue(returnTypeX);
                return new EnumMinMaxScalarForge(numStreamsIncoming, max, TypeInfo);
            }

            var first = (ExprDotEvalParamLambda) bodiesAndParameters[0];
            var returnType = Boxing.GetBoxedType(first.BodyForge.EvaluationType);
            TypeInfo = EPTypeHelper.SingleValue(returnType);

            if (inputEventType == null) {
                return new EnumMinMaxScalarLambdaForge(
                    first.BodyForge,
                    first.StreamCountIncoming,
                    max,
                    (ObjectArrayEventType) first.GoesToTypes[0]);
            }

            return new EnumMinMaxEventsForge(first.BodyForge, first.StreamCountIncoming, max);
        }
    void Start()
    {
        monster     = gameObject.GetComponent <Monster>();
        search      = gameObject.GetComponent <SearchFood>();
        stats       = gameObject.GetComponent <MonsterStats>();
        fetch       = gameObject.GetComponent <Fetch>();
        boxing      = gameObject.GetComponent <Boxing>();
        audioSource = gameObject.GetComponent <AudioSource>();

        fetch.stats         = stats;
        fetch.state         = this;
        fetch.monster       = monster;
        search.monster      = monster;
        search.fetch        = fetch;
        search.state        = this;
        search.player       = GameObject.Find("Player").GetComponent <Valve.VR.InteractionSystem.Player>();
        stats.state         = this;
        stats.monster       = monster;
        boxing.monster      = monster;
        boxing.player       = monster.mainPlayer;
        boxing.obstacleMask = monster.ObstacleMask;
        boxing.stats        = stats;
        boxing.state        = this;

        stats.DisplayStats();

        Vector3 temphPos = hatchObject.transform.position;

        temphPos.y = monster.GroundLevel;
        gameObject.transform.position = temphPos;


        EventManager.instance.Fetching += OnFetching;
        EventManager.instance.Pointing += OnPointing;
    }
Exemple #7
0
 public static ObjectArrayEventType MakeTransientOAType(
     string enumMethod,
     string propertyName,
     Type type,
     StatementRawInfo statementRawInfo,
     StatementCompileTimeServices services)
 {
     IDictionary<string, object> propsResult = new Dictionary<string, object>();
     propsResult.Put(propertyName, Boxing.GetBoxedType(type));
     var eventTypeName =
         services.EventTypeNameGeneratorStatement.GetAnonymousTypeNameEnumMethod(enumMethod, propertyName);
     var metadata = new EventTypeMetadata(
         eventTypeName,
         statementRawInfo.ModuleName,
         EventTypeTypeClass.ENUMDERIVED,
         EventTypeApplicationType.OBJECTARR,
         NameAccessModifier.TRANSIENT,
         EventTypeBusModifier.NONBUS,
         false,
         EventTypeIdPair.Unassigned());
     var oatype = BaseNestableEventUtil.MakeOATypeCompileTime(
         metadata,
         propsResult,
         null,
         null,
         null,
         null,
         services.BeanEventTypeFactoryPrivate,
         services.EventTypeCompileTimeResolver);
     services.EventTypeCompileTimeRegistry.NewType(oatype);
     return oatype;
 }
Exemple #8
0
 public EnumMinMaxByEvents(
     ExprDotEvalParamLambda lambda,
     bool max) : base(lambda)
 {
     this._max            = max;
     this._innerTypeBoxed = Boxing.GetBoxedType(InnerExpression.EvaluationType);
 }
Exemple #9
0
        public static ExcludePlanHint GetHint(
            string[] streamNames,
            StatementRawInfo rawInfo,
            StatementCompileTimeServices services)
        {
            IList<string> hints = HintEnum.EXCLUDE_PLAN.GetHintAssignedValues(rawInfo.Annotations);
            if (hints == null) {
                return null;
            }

            IList<ExprEvaluator> filters = new List<ExprEvaluator>();
            foreach (string hint in hints) {
                if (string.IsNullOrWhiteSpace(hint)) {
                    continue;
                }

                ExprForge forge = ExcludePlanHintExprUtil.ToExpression(hint, rawInfo, services);
                if (Boxing.GetBoxedType(forge.EvaluationType) != typeof(bool?)) {
                    throw new ExprValidationException(
                        "Expression provided for hint " + HintEnum.EXCLUDE_PLAN + " must return a boolean value");
                }

                filters.Add(forge.ExprEvaluator);
            }

            return new ExcludePlanHint(streamNames, filters, services);
        }
Exemple #10
0
        private void RunAssertionPropertiesWGetter(
            RegressionEnvironment env,
            string typename,
            FunctionSendEventIntString send,
            RegressionPath path)
        {
            var epl = "@Name('s0') select MyInt, exists(MyInt) as exists_MyInt, MyString, exists(MyString) as exists_MyString from " + typename;

            env.CompileDeploy(epl, path).AddListener("s0");

            var fields = "MyInt,exists_MyInt,MyString,exists_MyString".SplitCsv();

            var eventType = env.Statement("s0").EventType;

            Assert.AreEqual(typeof(int?), Boxing.GetBoxedType(eventType.GetPropertyType("MyInt")));
            Assert.AreEqual(typeof(string), eventType.GetPropertyType("MyString"));
            Assert.AreEqual(typeof(bool?), eventType.GetPropertyType("exists_MyInt"));
            Assert.AreEqual(typeof(bool?), eventType.GetPropertyType("exists_MyString"));

            send.Invoke(typename, env, 3, "some string");

            var @event = env.Listener("s0").AssertOneGetNewAndReset();

            RunAssertionEventInvalidProp(@event);
            EPAssertionUtil.AssertProps(@event, fields, new object[] { 3, true, "some string", true });

            send.Invoke(typename, env, 4, "other string");
            @event = env.Listener("s0").AssertOneGetNewAndReset();
            EPAssertionUtil.AssertProps(@event, fields, new object[] { 4, true, "other string", true });

            env.UndeployModuleContaining("s0");
        }
Exemple #11
0
        protected override CodegenExpression CodegenEvaluateInternal(
            CodegenMethodScope parent,
            SubselectForgeNRSymbol symbols,
            CodegenClassScope classScope)
        {
            var method = parent.MakeChild(typeof(bool?), this.GetType(), classScope);
            var left = symbols.GetAddLeftResult(method);
            method.Block.DeclareVar<bool>("hasNullRow", ConstantFalse());
            var @foreach = method.Block.ForEach(typeof(EventBean), "theEvent", symbols.GetAddMatchingEvents(method));
            {
                @foreach.AssignArrayElement(NAME_EPS, Constant(0), Ref("theEvent"));
                if (filterEval != null) {
                    CodegenLegoBooleanExpression.CodegenContinueIfNotNullAndNotPass(
                        @foreach,
                        filterEval.EvaluationType,
                        filterEval.EvaluateCodegen(typeof(bool?), method, symbols, classScope));
                }

                @foreach.IfRefNullReturnNull(left);

                Type valueRightType;
                if (selectEval != null) {
                    valueRightType = Boxing.GetBoxedType(selectEval.EvaluationType);
                    @foreach.DeclareVar(
                        valueRightType,
                        "valueRight",
                        selectEval.EvaluateCodegen(valueRightType, method, symbols, classScope));
                }
                else {
                    valueRightType = subselect.RawEventType.UnderlyingType;
                    @foreach.DeclareVar(
                        valueRightType,
                        "valueRight",
                        Cast(valueRightType, ExprDotUnderlying(ArrayAtIndex(symbols.GetAddEPS(method), Constant(0)))));
                }

                var ifRight = @foreach.IfCondition(NotEqualsNull(Ref("valueRight")));
                {
                    if (coercer == null) {
                        ifRight.IfCondition(ExprDotMethod(left, "Equals", Ref("valueRight")))
                            .BlockReturn(Constant(!isNotIn));
                    }
                    else {
                        ifRight.DeclareVar<object>("left", coercer.CoerceCodegen(left, symbols.LeftResultType))
                            .DeclareVar<object>("right", coercer.CoerceCodegen(Ref("valueRight"), valueRightType))
                            .DeclareVar<bool>("eq", ExprDotMethod(Ref("left"), "Equals", Ref("right")))
                            .IfCondition(Ref("eq"))
                            .BlockReturn(Constant(!isNotIn));
                    }
                }
                ifRight.IfElse().AssignRef("hasNullRow", ConstantTrue());
            }

            method.Block
                .IfCondition(Ref("hasNullRow"))
                .BlockReturn(ConstantNull())
                .MethodReturn(Constant(isNotIn));
            return LocalMethod(method);
        }
Exemple #12
0
        public static CodegenExpression Codegen(
            EnumMinMaxByScalarLambdaForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var innerType = forge.InnerExpression.EvaluationType;
            var innerTypeBoxed = Boxing.GetBoxedType(innerType);
            var resultTypeBoxed = Boxing.GetBoxedType(EPTypeHelper.GetCodegenReturnType(forge.resultType));
            var resultTypeMember = codegenClassScope.AddDefaultFieldUnshared(
                true,
                typeof(ObjectArrayEventType),
                Cast(
                    typeof(ObjectArrayEventType),
                    EventTypeUtility.ResolveTypeCodegen(forge.resultEventType, EPStatementInitServicesConstants.REF)));

            var scope = new ExprForgeCodegenSymbol(false, null);
            var methodNode = codegenMethodScope
                .MakeChildWithScope(
                    resultTypeBoxed,
                    typeof(EnumMinMaxByScalarLambdaForgeEval),
                    scope,
                    codegenClassScope)
                .AddParam(EnumForgeCodegenNames.PARAMS);

            var block = methodNode.Block
                .DeclareVar(innerTypeBoxed, "minKey", ConstantNull())
                .DeclareVar(resultTypeBoxed, "result", ConstantNull())
                .DeclareVar<ObjectArrayEventBean>(
                    "resultEvent",
                    NewInstance<ObjectArrayEventBean>(NewArrayByLength(typeof(object), Constant(1)), resultTypeMember))
                .AssignArrayElement(EnumForgeCodegenNames.REF_EPS, Constant(forge.StreamNumLambda), Ref("resultEvent"))
                .DeclareVar<object[]>("props", ExprDotName(Ref("resultEvent"), "Properties"));

            var forEach = block.ForEach(typeof(object), "next", EnumForgeCodegenNames.REF_ENUMCOLL)
                .AssignArrayElement("props", Constant(0), Ref("next"))
                .DeclareVar(
                    innerTypeBoxed,
                    "value",
                    forge.InnerExpression.EvaluateCodegen(innerTypeBoxed, methodNode, scope, codegenClassScope))
                .IfRefNull("value")
                .BlockContinue();

            forEach.IfCondition(EqualsNull(Ref("minKey")))
                .AssignRef("minKey", Ref("value"))
                .AssignRef("result", Cast(resultTypeBoxed, Ref("next")))
                .IfElse()
                .IfCondition(
                    Relational(
                        ExprDotMethod(Unbox(Ref("minKey"), innerTypeBoxed), "CompareTo", Ref("value")),
                        forge.max ? LT : GT,
                        Constant(0)))
                .AssignRef("minKey", Ref("value"))
                .AssignRef("result", Cast(resultTypeBoxed, Ref("next")));

            block.MethodReturn(Ref("result"));
            return LocalMethod(methodNode, args.Eps, args.Enumcoll, args.IsNewData, args.ExprCtx);
        }
        private Type[] GetPropertyTypes(IList<QueryGraphValueEntryHashKeyedForge> hashKeys)
        {
            var types = new Type[hashKeys.Count];
            for (var i = 0; i < hashKeys.Count; i++) {
                types[i] = Boxing.GetBoxedType(hashKeys[i].KeyExpr.Forge.EvaluationType);
            }

            return types;
        }
Exemple #14
0
 public EnumMinMaxEventPlus(
     ExprDotEvalParamLambda lambda,
     ObjectArrayEventType indexEventType,
     int numParameters,
     bool max) : base(lambda, indexEventType, numParameters)
 {
     this._max            = max;
     this._innerTypeBoxed = Boxing.GetBoxedType(InnerExpression.EvaluationType);
 }
Exemple #15
0
 public static void Main()
 {
     PrimitiveDemo();
     BoxingDemo();
     ReferenceVsValue.Go();
     Boxing.Go();
     BoxingForInterfaceMethod.Go();
     MutateViaInterface.Go();
 }
Exemple #16
0
        public static CodegenExpression Codegen(
            EnumMostLeastFrequentScalarLamdaForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var resultTypeMember = codegenClassScope.AddDefaultFieldUnshared(
                true,
                typeof(ObjectArrayEventType),
                Cast(
                    typeof(ObjectArrayEventType),
                    EventTypeUtility.ResolveTypeCodegen(forge.resultEventType, EPStatementInitServicesConstants.REF)));
            var returnType = Boxing.GetBoxedType(forge.InnerExpression.EvaluationType);

            var scope = new ExprForgeCodegenSymbol(false, null);
            var paramTypes = EnumForgeCodegenNames.PARAMS;
            var methodNode = codegenMethodScope
                .MakeChildWithScope(
                    returnType,
                    typeof(EnumMostLeastFrequentScalarLamdaForgeEval),
                    scope,
                    codegenClassScope)
                .AddParam(paramTypes);

            var block = methodNode.Block
                .IfCondition(ExprDotMethod(EnumForgeCodegenNames.REF_ENUMCOLL, "IsEmpty"))
                .BlockReturn(ConstantNull())
                .DeclareVar<IDictionary<object, int>>("items", NewInstance(typeof(HashMap<object, int>)))
                .DeclareVar<ObjectArrayEventBean>(
                    "resultEvent",
                    NewInstance<ObjectArrayEventBean>(NewArrayByLength(typeof(object), Constant(1)), resultTypeMember))
                .AssignArrayElement(EnumForgeCodegenNames.REF_EPS, Constant(forge.StreamNumLambda), Ref("resultEvent"))
                .DeclareVar<object[]>("props", ExprDotName(Ref("resultEvent"), "Properties"));

            block.ForEach(typeof(object), "next", EnumForgeCodegenNames.REF_ENUMCOLL)
                .AssignArrayElement("props", Constant(0), Ref("next"))
                .DeclareVar<object>(
                    "item",
                    forge.InnerExpression.EvaluateCodegen(typeof(object), methodNode, scope, codegenClassScope))
                .DeclareVar<int?>("existing", ExprDotMethod(Ref("items"), "GetBoxed", Ref("item")))
                .IfCondition(EqualsNull(Ref("existing")))
                .AssignRef("existing", Constant(1))
                .IfElse()
                .Increment("existing")
                .BlockEnd()
                .ExprDotMethod(Ref("items"), "Put", Ref("item"), Unbox(Ref("existing")));
            block.MethodReturn(
                Cast(
                    returnType,
                    StaticMethod(
                        typeof(EnumMostLeastFrequentEventForgeEval),
                        "GetEnumMostLeastFrequentResult",
                        Ref("items"),
                        Constant(forge.isMostFrequent))));
            return LocalMethod(methodNode, args.Eps, args.Enumcoll, args.IsNewData, args.ExprCtx);
        }
Exemple #17
0
 protected override Func <ExprDotEvalParamLambda, EPType> InitAndSingleParamReturnType(
     EventType inputEventType,
     Type collectionComponentType)
 {
     return(lambda => {
         aggMethodFactory = GetAggregatorFactory(lambda.BodyForge.EvaluationType);
         var returnType = Boxing.GetBoxedType(aggMethodFactory.ValueType);
         return EPTypeHelper.SingleValue(returnType);
     });
 }
        private Type[] GetPropertyTypes(
            EventType eventType,
            string[] properties)
        {
            var types = new Type[properties.Length];
            for (var i = 0; i < properties.Length; i++) {
                types[i] = Boxing.GetBoxedType(eventType.GetPropertyType(properties[i]));
            }

            return types;
        }
        private static void HandleBox(Boxing boxing, StringBuilder bodySb, TypeDescriptionTable typeTable, ClosureEntities closureEntities)
        {
            TypeDescription typeDescription = boxing.Right.ComputedType();

            bodySb
            .AppendFormat("{0} = box_value<{2}>({1}, {3});",
                          boxing.AssignedTo.Name,
                          boxing.Right.Name,
                          typeDescription.GetClrType(closureEntities).ToDeclaredVariableType(EscapingMode.Stack),
                          typeTable.GetTypeId(typeDescription.GetClrType(closureEntities)));
        }
Exemple #20
0
 public EnumMinMaxByScalar(
     ExprDotEvalParamLambda lambda,
     ObjectArrayEventType fieldEventType,
     int numParameters,
     bool max,
     EPType resultType) : base(lambda, fieldEventType, numParameters)
 {
     this._max             = max;
     this._resultType      = resultType;
     this._innerTypeBoxed  = Boxing.GetBoxedType(InnerExpression.EvaluationType);
     this._resultTypeBoxed = Boxing.GetBoxedType(EPTypeHelper.GetCodegenReturnType(resultType));
 }
Exemple #21
0
        private static void ValidateBuiltin(
            CreateIndexItem columnDesc,
            EventType eventType,
            IList<IndexedPropDesc> hashProps,
            IList<IndexedPropDesc> btreeProps,
            ISet<string> indexedColumns)
        {
            if (columnDesc.Expressions.IsEmpty()) {
                throw new ExprValidationException("Invalid empty list of index expressions");
            }

            if (columnDesc.Expressions.Count > 1) {
                throw new ExprValidationException(
                    "Invalid multiple index expressions for index type '" + columnDesc.IndexType + "'");
            }

            ExprNode expression = columnDesc.Expressions[0];
            if (!(expression is ExprIdentNode)) {
                throw new ExprValidationException(
                    "Invalid index expression '" +
                    ExprNodeUtilityPrint.ToExpressionStringMinPrecedenceSafe(expression) +
                    "'");
            }

            var identNode = (ExprIdentNode) expression;
            if (identNode.FullUnresolvedName.Contains(".")) {
                throw new ExprValidationException(
                    "Invalid index expression '" +
                    ExprNodeUtilityPrint.ToExpressionStringMinPrecedenceSafe(expression) +
                    "'");
            }

            var columnName = identNode.FullUnresolvedName;
            Type type = Boxing.GetBoxedType(eventType.GetPropertyType(columnName));
            if (type == null) {
                throw new ExprValidationException("Property named '" + columnName + "' not found");
            }

            if (!indexedColumns.Add(columnName)) {
                throw new ExprValidationException(
                    "Property named '" + columnName + "' has been declared more then once");
            }

            var desc = new IndexedPropDesc(columnName, type);
            string indexType = columnDesc.IndexType;
            if (indexType.Equals(CreateIndexType.HASH.GetName(), StringComparison.InvariantCultureIgnoreCase)) {
                hashProps.Add(desc);
            }
            else {
                btreeProps.Add(desc);
            }
        }
Exemple #22
0
        private void HandAttachedUpdate(Hand hand)
        {
            // send signal for monster to dodge
            if (hand.GetTrackedObjectVelocity().magnitude > 2)
            {
                RaycastHit hit;

                if (Physics.Raycast(transform.position, transform.forward * 1.3f, out hit, 1))
                {
                    hit.transform.gameObject.SendMessage("Dodge", SendMessageOptions.DontRequireReceiver);
                    StartCoroutine("HitRefresh");
                }
            }

            if (canBeHit)
            {
                for (int i = 0; i < monsterColls.Length; i++)
                {
                    if (coll.bounds.Intersects(monsterColls[i].bounds))
                    {
                        Boxing mBoxing = monster.GetComponent <Boxing>();
                        if (mBoxing)
                        {
                            mBoxing.GetHit(true);
                            StartCoroutine("HitRefresh");
                        }
                    }
                }
                //if (otherColl)
                //{
                //    if (coll.bounds.Intersects(otherColl.bounds))
                //    {
                //        Collider[] colls = otherColl.GetComponentsInChildren<Collider>();
                //        for (int i = 0; i < colls.Length; i++)
                //        {
                //            if (coll.bounds.Intersects(colls[i].bounds))
                //            {
                //                Boxing mBoxing = colls[i].GetComponentInParent<Boxing>();
                //                if (mBoxing)
                //                {
                //                    mBoxing.GetHit(true);
                //                    StartCoroutine("HitRefresh");
                //                }
                //            }
                //        }
                //    }
                //}
            }
        }
Exemple #23
0
        private static void ValidateFieldTypes(
            Type declaredClass,
            IDictionary <string, FieldInfo> targetFields,
            IDictionary <string, object> insertedFields)
        {
            foreach (var inserted in insertedFields)
            {
                var insertedName = inserted.Key;
                var insertedType = inserted.Value;
                var field        = targetFields.Get(insertedName);

                if (field == null)
                {
                    throw new ExprValidationException("Failed to find public field '" + insertedName + "' on class '" + declaredClass.Name + "'");
                }

                var fieldClass = Boxing.GetBoxedType(field.FieldType);
                if (insertedType is Type)
                {
                    var insertedClass = ((Type)insertedType).GetBoxedType();
                    if (!TypeHelper.IsSubclassOrImplementsInterface(insertedClass, fieldClass))
                    {
                        throw MakeInvalidField(insertedName, insertedClass, declaredClass, field);
                    }
                }
                else if (insertedType is TypeBeanOrUnderlying || insertedType is EventType)
                {
                    var eventType = (insertedType is TypeBeanOrUnderlying) ? ((TypeBeanOrUnderlying)insertedType).EventType : (EventType)insertedType;
                    if (!TypeHelper.IsSubclassOrImplementsInterface(eventType.UnderlyingType, fieldClass))
                    {
                        throw MakeInvalidField(insertedName, eventType.UnderlyingType, declaredClass, field);
                    }
                }
                else if (insertedType is TypeBeanOrUnderlying[] || insertedType is EventType[])
                {
                    var eventType = (insertedType is TypeBeanOrUnderlying[])
                                                ? ((TypeBeanOrUnderlying[])insertedType)[0].EventType
                                                : ((EventType[])insertedType)[0];
                    if (!fieldClass.IsArray || !TypeHelper.IsSubclassOrImplementsInterface(eventType.UnderlyingType, fieldClass.GetElementType()))
                    {
                        throw MakeInvalidField(insertedName, eventType.UnderlyingType, declaredClass, field);
                    }
                }
                else
                {
                    throw new IllegalStateException("Unrecognized type '" + insertedType + "'");
                }
            }
        }
Exemple #24
0
 public ExprFilterSpecLookupable(
     String expression,
     ExprEventEvaluator eval,
     ExprEvaluator expr,
     Type returnType,
     bool isNonPropertyEval,
     DataInputOutputSerde valueSerde)
 {
     _expression = expression;
     _eval = eval;
     _expr = expr;
     _returnType = Boxing.GetBoxedType(returnType); // For type consistency for recovery and serde define as boxed type
     _isNonPropertyEval = isNonPropertyEval;
     _valueSerde = valueSerde;
 }
        protected override CodegenExpression CodegenEvaluateInternal(
            CodegenMethodScope parent,
            SubselectForgeNRSymbol symbols,
            CodegenClassScope classScope)
        {
            var method = parent.MakeChild(typeof(bool?), this.GetType(), classScope);
            var eps = symbols.GetAddEPS(method);
            var evalCtx = symbols.GetAddExprEvalCtx(method);
            var left = symbols.GetAddLeftResult(method);

            method.Block.IfNullReturnNull(symbols.GetAddLeftResult(method));
            if (havingEval != null) {
                CodegenExpression having = LocalMethod(
                    CodegenLegoMethodExpression.CodegenExpression(havingEval, method, classScope, true),
                    eps,
                    ConstantTrue(),
                    evalCtx);
                CodegenLegoBooleanExpression.CodegenReturnValueIfNullOrNotPass(
                    method.Block,
                    havingEval.EvaluationType,
                    having,
                    ConstantNull());
            }

            CodegenExpression select = LocalMethod(
                CodegenLegoMethodExpression.CodegenExpression(selectEval, method, classScope, true),
                eps,
                ConstantTrue(),
                evalCtx);
            var rightEvalType = Boxing.GetBoxedType(selectEval.EvaluationType);
            method.Block
                .DeclareVar(rightEvalType, "rhs", select)
                .IfRefNullReturnNull("rhs");

            if (coercer == null) {
                method.Block.IfCondition(ExprDotMethod(left, "Equals", Ref("rhs"))).BlockReturn(Constant(!isNotIn));
            }
            else {
                method.Block.DeclareVar<object>("left", coercer.CoerceCodegen(left, symbols.LeftResultType))
                    .DeclareVar<object>("right", coercer.CoerceCodegen(Ref("valueRight"), rightEvalType))
                    .DeclareVar<bool>("eq", StaticMethod<object>("Equals", Ref("left"), Ref("right")))
                    .IfCondition(Ref("eq"))
                    .BlockReturn(Constant(!isNotIn));
            }

            method.Block.MethodReturn(Constant(isNotIn));
            return LocalMethod(method);
        }
Exemple #26
0
 public ExprFilterSpecLookupableForge(
     string expression,
     ExprEventEvaluatorForge optionalEventEvalForge,
     ExprForge optionalExprForge,
     Type returnType,
     bool isNonPropertyGetter,
     DataInputOutputSerdeForge valueSerde)
 {
     // prefixing the expression ensures the expression resolves to either the event-eval or the expr-eval
     _expression = optionalExprForge != null ? "." + expression : expression;
     _optionalEventEvalForge = optionalEventEvalForge;
     _optionalExprForge = optionalExprForge;
     _returnType = Boxing.GetBoxedType(returnType); // For type consistency for recovery and serde define as boxed type
     _isNonPropertyGetter = isNonPropertyGetter;
     _valueSerde = valueSerde;
 }
Exemple #27
0
        public void Box(Type operand)
        {
            var valueToBox = _evaluator.Pop();
            var result     = SetNewVReg();

            //The type of the value on the stack is not necessarily the boxing type
            valueToBox.FixedType = new TypeDescription(operand);
            result.FixedType     = new TypeDescription(typeof(object));
            var boxing = new Boxing
            {
                AssignedTo = result,
                Right      = valueToBox
            };

            AddOperation(boxing);
        }
Exemple #28
0
        public static CodegenExpression Codegen(
            EnumMostLeastFrequentEventForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var returnType = Boxing.GetBoxedType(forge.InnerExpression.EvaluationType);
            var scope = new ExprForgeCodegenSymbol(false, null);
            var methodNode = codegenMethodScope.MakeChildWithScope(
                    returnType,
                    typeof(EnumMostLeastFrequentEventForgeEval),
                    scope,
                    codegenClassScope)
                .AddParam(EnumForgeCodegenNames.PARAMS);

            var block = methodNode.Block
                .IfCondition(ExprDotMethod(EnumForgeCodegenNames.REF_ENUMCOLL, "IsEmpty"))
                .BlockReturn(ConstantNull())
                .DeclareVar<IDictionary<object, int>>(
                    "items",
                    NewInstance(typeof(HashMap<object, int>)));

            var forEach = block
                .ForEach(typeof(EventBean), "next", EnumForgeCodegenNames.REF_ENUMCOLL)
                .AssignArrayElement(EnumForgeCodegenNames.REF_EPS, Constant(forge.StreamNumLambda), Ref("next"))
                .DeclareVar<object>( // type erasure issue
                    "item",
                    forge.InnerExpression.EvaluateCodegen(typeof(object), methodNode, scope, codegenClassScope))
                .DeclareVar<int?>(
                    "existing",
                    ExprDotMethod(Ref("items"), "GetBoxed", Ref("item")))
                .IfCondition(EqualsNull(Ref("existing")))
                .AssignRef("existing", Constant(1))
                .IfElse()
                .Increment("existing")
                .BlockEnd()
                .ExprDotMethod(Ref("items"), "Put", Ref("item"), Unbox(Ref("existing")));
            block.MethodReturn(
                Cast(
                    returnType,
                    StaticMethod(
                        typeof(EnumMostLeastFrequentEventForgeEval),
                        "GetEnumMostLeastFrequentResult",
                        Ref("items"),
                        Constant(forge.isMostFrequent))));
            return LocalMethod(methodNode, args.Eps, args.Enumcoll, args.IsNewData, args.ExprCtx);
        }
Exemple #29
0
        private static void TryAssertionNewWRepresentation(
            RegressionEnvironment env,
            EventRepresentationChoice rep,
            AtomicLong milestone)
        {
            var epl = rep.GetAnnotationTextWJsonProvided <MyLocalJsonProvided>() +
                      "@Name('s0') select new { TheString = 'x' || TheString || 'x', IntPrimitive = IntPrimitive + 2} as val0 from SupportBean as sb";

            env.CompileDeploy(epl).AddListener("s0").Milestone(milestone.GetAndIncrement());

            Assert.AreEqual(
                rep.IsAvroEvent() ? typeof(GenericRecord) : typeof(IDictionary <string, object>),
                env.Statement("s0").EventType.GetPropertyType("val0"));
            var fragType = env.Statement("s0").EventType.GetFragmentType("val0");

            if (rep == EventRepresentationChoice.JSONCLASSPROVIDED)
            {
                Assert.IsNull(fragType);
            }
            else
            {
                Assert.IsFalse(fragType.IsIndexed);
                Assert.IsFalse(fragType.IsNative);
                Assert.AreEqual(typeof(string), fragType.FragmentType.GetPropertyType("TheString"));
                Assert.AreEqual(typeof(int?), Boxing.GetBoxedType(fragType.FragmentType.GetPropertyType("IntPrimitive")));
            }

            var fieldsInner = "TheString,IntPrimitive".SplitCsv();

            env.SendEventBean(new SupportBean("E1", -5));
            var @event = env.Listener("s0").AssertOneGetNewAndReset();

            if (rep.IsAvroEvent())
            {
                SupportAvroUtil.AvroToJson(@event);
                GenericRecord inner = (GenericRecord)@event.Get("val0");
                Assert.AreEqual("xE1x", inner.Get("TheString"));
                Assert.AreEqual(-3, inner.Get("IntPrimitive"));
            }
            else
            {
                EPAssertionUtil.AssertPropsMap((IDictionary <string, object>)@event.Get("val0"), fieldsInner, "xE1x", -3);
            }

            env.UndeployAll();
        }
Exemple #30
0
        public static CodegenExpression Codegen(
            EnumDistinctScalarLambdaForge forge,
            EnumForgeCodegenParams args,
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope)
        {
            var resultTypeMember = codegenClassScope.AddDefaultFieldUnshared(
                true,
                typeof(ObjectArrayEventType),
                Cast(
                    typeof(ObjectArrayEventType),
                    EventTypeUtility.ResolveTypeCodegen(forge.resultEventType, EPStatementInitServicesConstants.REF)));
            var innerType = Boxing.GetBoxedType(forge.InnerExpression.EvaluationType);

            var scope = new ExprForgeCodegenSymbol(false, null);
            var methodNode = codegenMethodScope
                .MakeChildWithScope(
                    typeof(FlexCollection),
                    typeof(EnumDistinctScalarLambdaForgeEval),
                    scope,
                    codegenClassScope)
                .AddParam(EnumForgeCodegenNames.PARAMS);

            var block = methodNode.Block
                .IfCondition(Relational(ExprDotName(EnumForgeCodegenNames.REF_ENUMCOLL, "Count"), LE, Constant(1)))
                .BlockReturn(EnumForgeCodegenNames.REF_ENUMCOLL)
                .DeclareVar<IDictionary<object, object>>("distinct", NewInstance(typeof(LinkedHashMap<object, object>)))
                .DeclareVar<ObjectArrayEventBean>(
                    "resultEvent",
                    NewInstance<ObjectArrayEventBean>(NewArrayByLength(typeof(object), Constant(1)), resultTypeMember))
                .AssignArrayElement(EnumForgeCodegenNames.REF_EPS, Constant(forge.StreamNumLambda), Ref("resultEvent"))
                .DeclareVar<object[]>("props", ExprDotName(Ref("resultEvent"), "Properties"));

            block.ForEach(typeof(object), "next", EnumForgeCodegenNames.REF_ENUMCOLL)
                .AssignArrayElement("props", Constant(0), Ref("next"))
                .DeclareVar(
                    innerType,
                    "comparable",
                    forge.InnerExpression.EvaluateCodegen(innerType, methodNode, scope, codegenClassScope))
                .IfCondition(Not(ExprDotMethod(Ref("distinct"), "CheckedContainsKey", Ref("comparable"))))
                .Expression(ExprDotMethod(Ref("distinct"), "Put", Ref("comparable"), Ref("next")))
                .BlockEnd();
            block.MethodReturn(FlexWrap(ExprDotName(Ref("distinct"), "Values")));
            return LocalMethod(methodNode, args.Eps, args.Enumcoll, args.IsNewData, args.ExprCtx);
        }