public static bool IsEqual(PredicateEdgeBase <TValue> a, PredicateEdgeBase <TValue> b) { if (ReferenceEquals(a, b)) { return(true); } if (a.IsFuncPredicate && b.IsFuncPredicate) { var aa = (FuncPredicateEdge <TValue>)a; var bb = (FuncPredicateEdge <TValue>)b; return(ReferenceEquals(aa.Condition, bb.Condition)); } if (a.IsComparePredicate && b.IsComparePredicate) { var aa = (ComparePredicateEdge <TValue>)a; var bb = (ComparePredicateEdge <TValue>)b; return(ReferenceEquals(aa.Comparer, bb.Comparer) && aa.Comparer.Equals(aa.Value, bb.Value)); } if (a.IsSystemPredicate && b.IsSystemPredicate) { if (ReferenceEquals(a, b)) { return(true); } var aa = (SystemPredicateEdge <TValue>)a; var bb = (SystemPredicateEdge <TValue>)b; return(!aa.IsUnique && !bb.IsUnique && aa.Name == bb.Name); } return(false); }
public static bool IsEpsilon(PredicateEdgeBase <TValue> a) { return(a.IsSystemPredicate); }