예제 #1
0
        internal override ThreeValuedLogic Evaluate(Strategy strategy)
        {
            object value = strategy.GetCompositeRole(this.roleType.RelationType);

            if (value == null)
            {
                return(ThreeValuedLogic.False);
            }

            object equalsValue = this.equals;

            if (this.equals is IRoleType)
            {
                var equalsRole = (IRoleType)this.equals;
                equalsValue = strategy.GetCompositeRole(equalsRole.RelationType);
            }

            if (equalsValue == null)
            {
                return(ThreeValuedLogic.False);
            }

            return(value.Equals(equalsValue)
                       ? ThreeValuedLogic.True
                       : ThreeValuedLogic.False);
        }
예제 #2
0
        internal override ThreeValuedLogic Evaluate(Strategy strategy)
        {
            IObject roleStrategy = strategy.GetCompositeRole(this.roleType.RelationType);

            if (roleStrategy == null)
            {
                return(ThreeValuedLogic.False);
            }

            return(this.containingExtent.Contains(roleStrategy)
                       ? ThreeValuedLogic.True
                       : ThreeValuedLogic.False);
        }
        internal override ThreeValuedLogic Evaluate(Strategy strategy)
        {
            var containing   = new HashSet <IObject>(this.containingEnumerable);
            var roleStrategy = strategy.GetCompositeRole(this.roleType.RelationType);

            if (roleStrategy == null)
            {
                return(ThreeValuedLogic.False);
            }

            return(containing.Contains(roleStrategy)
                       ? ThreeValuedLogic.True
                       : ThreeValuedLogic.False);
        }
예제 #4
0
        internal override ThreeValuedLogic Evaluate(Strategy strategy)
        {
            var role = strategy.GetCompositeRole(this.roleType.RelationType);

            if (role == null)
            {
                return(ThreeValuedLogic.False);
            }

            // TODO: Optimize
            var roleObjectType = role.Strategy.Class;

            if (roleObjectType.Equals(this.objectType))
            {
                return(ThreeValuedLogic.True);
            }

            var @interface = this.objectType as IInterface;

            return((@interface != null && roleObjectType.ExistSupertype(@interface))
                       ? ThreeValuedLogic.True
                       : ThreeValuedLogic.False);
        }