Ejemplo n.º 1
0
        public static UnnamedVar Create(Atom ns, int id, string name)
        {
            UnnamedVar v = new UnnamedVar(ns, name);

            v.myId = id * -1;
            return(v);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
        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);
            }
        }