public static UnnamedVar Create(Atom ns, int id, string name) { UnnamedVar v = new UnnamedVar(ns, name); v.myId = id * -1; return(v); }
public override Literal CloneNS(Atom newNamespace) { UnnamedVar newv = new UnnamedVar(newNamespace, GetFunctor()); newv.myId = this.myId; newv.hashCodeCache = this.hashCodeCache; if (HasAnnot()) { newv.AddAnnots(this.GetAnnots().CloneLT()); } return(newv); }
public static UnnamedVar Create(Atom ns, string name) { if (name.Length == 1) { return(new UnnamedVar(ns)); } else { int id = Interlocked.Increment(ref varCont); UnnamedVar v = new UnnamedVar(ns, "_" + id + name); v.myId = id; return(v); } }
public VarTerm VarToReplace(ITerm t, Unifier u) { VarTerm v = (VarTerm)t; VarTerm deref = u.Deref(v); if (deref.Equals(v)) { Atom a = v.GetNS(); if (a.IsVar()) { a = VarToReplace(a, u); } //UnnamedVar uv = useShortUnnamedVars ? new UnnamedVar(a) : UnnamedVar.Create(a, t.ToString()); UnnamedVar uv = UnnamedVar.Create(a, t.ToString()); if (deref.HasAnnot()) { uv.SetAnnots(deref.GetAnnots().CloneLT()); uv.MakeVarsAnnon(u); } u.Bind(deref, v); return(v); } else { Atom a = v.GetNS(); if (a.IsVar()) { a = VarToReplace(a, u); } deref = (VarTerm)deref.CloneNS(a); if (v.HasAnnot() && !deref.HasAnnot()) { deref.SetAnnots(v.GetAnnots().CloneLT()); deref.MakeVarsAnnon(u); } return(deref); } }