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); }
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); }