Exemplo n.º 1
0
        public void ConstrainVars(string s1, string s2)
        {
            if (s1.Equals(s2))
            {
                return;
            }
            ConstraintList a1 = GetConstraints(s1);
            ConstraintList a2 = GetConstraints(s2);

            if (a1 == a2)
            {
                return;
            }

            Trace.Assert(a1 != null);
            Trace.Assert(a2 != null);

            Log("Constraining var: " + s1 + " = " + s2);

            foreach (Constraint c in a2)
            {
                AddConstraintToList(c, a1);
            }

            ConstrainQueuedItems();
        }
Exemplo n.º 2
0
 public void AddConstraintToList(Constraint c, ConstraintList a)
 {
     if (c is Var)
     {
         // Update the constraint list associated with this particular variable
         // to now be "a".
         string sVar = c.ToString();
         Trace.Assert(mLookup.ContainsKey(sVar));
         ConstraintList list = mLookup[sVar];
         if (list == a)
         {
             Err("Internal error, expected constraint list to contain constraint " + c.ToString());
         }
         mLookup[sVar] = a;
     }
     if (a.Contains(c))
     {
         return;
     }
     foreach (Constraint k in a)
     {
         AddSubConstraints(k, c);
     }
     a.Add(c);
 }
Exemplo n.º 3
0
        ConstraintList GetConstraints(string s)
        {
            if (!mLookup.ContainsKey(s))
            {
                ConstraintList a = new ConstraintList();
                a.Add(CreateVar(s));
                mLookup.Add(s, a);
            }

            Trace.Assert(mLookup[s].ContainsVar(s));
            return(mLookup[s]);
        }