Interpreter.interpretFourPointerRelation

If this is a four pointer relation, evaluate it, else return NULL.

This is an expression of the form (p1 > q1 && p2 < q2) or (p1 < q1 || p2 > q2) where p1, p2 are expressions yielding pointers to memory block p, and q1, q2 are expressions yielding pointers to memory block q. This expression is valid even if p and q are independent memory blocks and are therefore not normally comparable; the && form returns true if p1..p2 lies inside q1..q2, and false otherwise; the || form returns true if p1..p2 lies outside q1..q2, and false otherwise.

Within the expression, any ordering of p1, p2, q1, q2 is permissible; the comparison operators can be any of >, <, <=, >=, provided that both directions (p > q and p < q) are checked. Additionally the relational sub-expressions can be negated, eg (!(q1 < p1) && p2 <= q2) is valid.

class Interpreter
void
interpretFourPointerRelation

Meta