public override int CompareTo(ITerm t) { if (t.GetType() == typeof(VarTerm)) { return(t.CompareTo(this) * -1); } return(base.CompareTo(t)); }
public override int CompareTo(ITerm o) { if (o.GetType() == typeof(VarTerm)) { return(o.CompareTo(this) * -1); } if (o.GetType() == typeof(INumberTerm)) { return(1); } return(base.CompareTo(o)); }
public override int CompareTo(ITerm o) { if (o.GetType() == typeof(VarTerm)) { return(o.CompareTo(this) * -1); } if (o.GetType() == typeof(NumberTermImpl)) { NumberTermImpl st = o as NumberTermImpl; if (value > st.value) { return(1); } if (value < st.value) { return(-1); } return(0); } return(-1); }
public override bool HasAnnot(ITerm t) { if (annotations == null) { return(false); } IEnumerator <IListTerm> en = annotations.ListTermIterator(); while (en.MoveNext()) { IListTerm lt = en.Current; int c = t.CompareTo(lt.GetTerm()); if (c == 0) { return(true); } else if (c < 0) { return(false); } } return(false); }
override protected bool Compare(ITerm a, ITerm t) { return(a.CompareTo(t) < 0); }
protected virtual bool Compare(ITerm a, ITerm t) { return(a.CompareTo(t) > 0); }
public override bool HasSubsetAnnot(Literal p, Unifier u) { if (annotations == null) { return(true); } if (!p.HasAnnot()) { return(false); } ITerm thisTail = null; IListTerm pAnnots = p.GetAnnots().CloneLTShallow(); VarTerm pTail = pAnnots.GetTail(); ITerm pAnnot = null; IListTerm pAnnotsTail = null; IEnumerator <ITerm> en = pAnnots.ListTermIterator(); bool enReset = false; IEnumerator <IListTerm> en2 = annotations.ListTermIterator(); // use this iterator to get the tail of the list while (en2.MoveNext()) { IListTerm lt = en2.Current; ITerm annot = lt.GetTerm(); if (annot == null) { break; } if (lt.IsTail()) { thisTail = lt.GetTail(); } if (annotations.IsVar() && !enReset) { enReset = true; en = pAnnots.ListTermIterator(); pAnnot = null; } bool ok = false; while (true) { if (pAnnot != null && u.UnifiesNoUndo(annotations, pAnnot)) { ok = true; en.Dispose(); pAnnot = en.Current; break; } else if (pAnnot != null && pAnnot.CompareTo(annot) > 0) { break; } else if (en.MoveNext()) { pAnnot = en.Current; } else { break; } } if (!ok && pTail != null) { if (pAnnotsTail == null) { pAnnotsTail = (IListTerm)u.Get(pTail); if (pAnnotsTail == null) { pAnnotsTail = new ListTermImpl(); u.Unifies(pTail, pAnnotsTail); pAnnotsTail = (IListTerm)u.Get(pTail); } } pAnnotsTail.Add((ITerm)annot.Clone()); // Como uso el Clone de C# lo que clono son object que luego hay que castear... ok = true; } if (!ok) { return(false); } } if (thisTail != null) { u.Unifies(thisTail, pAnnots); } return(true); }