bool RulesConflict(NamingRule r, NamingRule s) { //they don't match the same kinds at all if ((r.MatchKind & s.MatchKind) == 0) { return(false); } //one requires something that the other does not var matchAllIntersect = r.MatchAllModifiers & s.MatchAllModifiers; if (matchAllIntersect != r.MatchAllModifiers && matchAllIntersect != s.MatchAllModifiers) { return(false); } if (r.MatchAnyModifiers != 0 && s.MatchAnyModifiers != 0 && (r.MatchAnyModifiers & s.MatchAnyModifiers) == 0) { return(false); } //one requires something that the other prohibits if ((r.MatchAllModifiers & s.MatchNoModifiers) != 0 || (s.MatchAllModifiers & r.MatchNoModifiers) != 0) { return(false); } if (s.MatchAnyModifiers != 0 && (r.MatchNoModifiers & s.MatchAnyModifiers) == s.MatchAnyModifiers) { return(false); } if (r.MatchAnyModifiers != 0 && (s.MatchNoModifiers & r.MatchAnyModifiers) == r.MatchAnyModifiers) { return(false); } return(true); }
bool RulesConflict (NamingRule r, NamingRule s) { //they don't match the same kinds at all if ((r.MatchKind & s.MatchKind) == 0) return false; //one requires something that the other does not var matchAllIntersect = r.MatchAllModifiers & s.MatchAllModifiers; if (matchAllIntersect != r.MatchAllModifiers && matchAllIntersect != s.MatchAllModifiers) return false; if (r.MatchAnyModifiers != 0 && s.MatchAnyModifiers != 0 && (r.MatchAnyModifiers & s.MatchAnyModifiers) == 0) return false; //one requires something that the other prohibits if ((r.MatchAllModifiers & s.MatchNoModifiers) != 0 || (s.MatchAllModifiers & r.MatchNoModifiers) != 0) return false; if (s.MatchAnyModifiers != 0 && (r.MatchNoModifiers & s.MatchAnyModifiers) == s.MatchAnyModifiers) return false; if (r.MatchAnyModifiers != 0 && (s.MatchNoModifiers & r.MatchAnyModifiers) == r.MatchAnyModifiers) return false; return true; }