static bool constraint_conflict (constraint c1, constraint c2)
{
-
- llassert(constraint_isDefined(c1) );
- llassert(constraint_isDefined(c2) );
+ if (!constraint_isDefined(c1) || !constraint_isDefined(c2))
+ {
+ return FALSE;
+ }
if (constraintExpr_similar (c1->lexpr, c2->lexpr))
{
static bool constraintResolve_satisfies (constraint pre, constraint post)
{
- llassert (constraint_isDefined(pre));
- llassert (constraint_isDefined(post));
+ if (!constraint_isDefined (pre))
+ {
+ return TRUE;
+ }
+
+ if (!constraint_isDefined(post))
+ {
+ return FALSE;
+ }
if (constraint_isAlwaysTrue (pre))
return TRUE;
{
switch (c->ar)
{
- case CASTEQ:
case EQ:
case GTE:
case LTE:
/*@only@*/ constraint constraint_substitute (/*@observer@*/ /*@temp@*/ constraint c, constraintList p)
{
- constraint ret;
+ constraint ret = constraint_copy (c);
- ret = constraint_copy(c);
constraintList_elements (p, el)
{
- llassert(constraint_isDefined(el) );
- if ( el->ar == EQ)
- if (!constraint_conflict (ret, el) )
-
- {
- constraint temp;
-
- temp = constraint_copy(el);
-
- temp = constraint_adjust(temp, ret);
-
- llassert(constraint_isDefined(temp) );
-
-
- DPRINTF((message ("constraint_substitute :: Substituting in %s using %s",
- constraint_print (ret), constraint_print (temp)
- ) ) );
-
+ if (constraint_isDefined (el))
+ {
+ if ( el->ar == EQ)
+ if (!constraint_conflict (ret, el))
+ {
+ constraint temp = constraint_copy(el);
+ temp = constraint_adjust(temp, ret);
+
+ llassert(constraint_isDefined(temp) );
+
+
+ DPRINTF (("constraint_substitute :: Substituting in %s using %s",
+ constraint_print (ret), constraint_print (temp)));
- ret = constraint_searchandreplace (ret, temp->lexpr, temp->expr);
- DPRINTF(( message (" constraint_substitute :: The new constraint is %s", constraint_print (ret) ) ));
- constraint_free(temp);
- }
+ ret = constraint_searchandreplace (ret, temp->lexpr, temp->expr);
+ DPRINTF (("constraint_substitute :: The new constraint is %s", constraint_print (ret)));;
+ constraint_free(temp);
+ }
+ }
}
end_constraintList_elements;
- ret = constraint_simplify(ret);
-
+ ret = constraint_simplify (ret);
DPRINTF(( message (" constraint_substitute :: The final new constraint is %s", constraint_print (ret) ) ));
-
return ret;
}