Esempio n. 1
0
        public PossibleValueSet OrElse(PossibleValueSet pvs)
        {
            /*
             * T || T == T
             * T || F == T
             * T || N == T
             * F || T == T
             * F || F == F
             * F || N == N
             * N || T == T
             * N || F == N
             * N || N == N
             */

            var result = new PossibleValueSet(DetermineBoolType(pvs));

            if (Contains(true) && pvs.Contains(true) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(true) && pvs.Contains(false) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(true) && pvs.Contains(null) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(false) && pvs.Contains(true) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(false) && pvs.Contains(false) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(false) && pvs.Contains(null))
            {
                result.ContainsNull = true;
            }
            if (Contains(null) && pvs.Contains(true) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(null) && pvs.Contains(false))
            {
                result.ContainsNull = true;
            }
            if (Contains(null) && pvs.Contains(null))
            {
                result.ContainsNull = true;
            }

            return(result);
        }
Esempio n. 2
0
        public PossibleValueSet AndAlso(PossibleValueSet pvs)
        {
            /*
             * T && T == T
             * T && F == F
             * T && N == N
             * F && T == F
             * F && F == F
             * F && N == F
             * N && T == N
             * N && F == F
             * N && N == N
             */

            var result = new PossibleValueSet(DetermineBoolType(pvs));

            if (Contains(true) && pvs.Contains(true) && !result.Contains(true))
            {
                result.DistinctValues.Add(true);
            }
            if (Contains(true) && pvs.Contains(false) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(true) && pvs.Contains(null))
            {
                result.ContainsNull = true;
            }
            if (Contains(false) && pvs.Contains(true) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(false) && pvs.Contains(false) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(false) && pvs.Contains(null) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(null) && pvs.Contains(true))
            {
                result.ContainsNull = true;
            }
            if (Contains(null) && pvs.Contains(false) && !result.Contains(false))
            {
                result.DistinctValues.Add(false);
            }
            if (Contains(null) && pvs.Contains(null))
            {
                result.ContainsNull = true;
            }

            return(result);
        }