Exemple #1
0
        internal override PredicateMatch MatchResource(IResource res, IPropertyChangeSet cs)
        {
            PredicateMatch match = MatchResourceByLink(res, cs, _directPropType);

            if (match != PredicateMatch.Match && _directPropType != _reversePropType)
            {
                PredicateMatch match2 = MatchResourceByLink(res, cs, _reversePropType);
                if (match2 == PredicateMatch.Match)
                {
                    return(match2);
                }
                if (match == PredicateMatch.Add && match2 == PredicateMatch.Del)
                {
                    return(PredicateMatch.Match);
                }
                if (match == PredicateMatch.Del && match2 == PredicateMatch.Add)
                {
                    return(PredicateMatch.Match);
                }
                if (match != PredicateMatch.None)
                {
                    return(match);
                }
                return(match2);
            }
            return(match);
        }
Exemple #2
0
        internal void GetMatchCounts(IResource res, IPropertyChangeSet cs, ref int oldMatch, ref int newMatch)
        {
            PredicateMatch match = MatchResource(res, cs);

            if (match == PredicateMatch.Add || match == PredicateMatch.Match)
            {
                newMatch++;
            }

            if (match == PredicateMatch.Del || match == PredicateMatch.Match)
            {
                oldMatch++;
            }
        }
Exemple #3
0
        internal override PredicateMatch MatchResource(IResource res, IPropertyChangeSet cs)
        {
            int oldMatch = 0;
            int newMatch = 0;
            int len      = _sourcePredicates.Length;

            for (int i = 0; i < len; i++)
            {
                PredicateMatch match = _sourcePredicates [i].MatchResource(res, cs);
                if (match == PredicateMatch.Add || match == PredicateMatch.Match)
                {
                    newMatch++;
                }

                if (match == PredicateMatch.Del || match == PredicateMatch.Match)
                {
                    oldMatch++;
                }

                if (newMatch == 0 && oldMatch == 0)
                {
                    break;
                }
            }
            if (newMatch == len && oldMatch == len)
            {
                return(PredicateMatch.Match);
            }
            if (newMatch == len)
            {
                return(PredicateMatch.Add);
            }
            if (oldMatch == len)
            {
                return(PredicateMatch.Del);
            }
            return(PredicateMatch.None);
        }