Exemplo n.º 1
0
  /**
   * Returns the step in an expression of the form 'step = value'. Null is returned if the
   * expression is not of the right form. Optimization if off if null is returned.
   */
  public Step getStep() {
    // Returned cached value if called more than once
    if (_step != null) {
      return _step;
    }

    // Nothing to do if _exp is null
    if (_exp == null) {
      return null;
    }

    // Ignore if not equality expression
    if (_exp instanceof EqualityExpr) {
      EqualityExpr exp = (EqualityExpr) _exp;
      Expression left = exp.getLeft();
      Expression right = exp.getRight();

      // Unwrap and set _step if appropriate
      if (left instanceof CastExpr) {
        left = ((CastExpr) left).getExpr();
      }
      if (left instanceof Step) {
        _step = (Step) left;
      }

      // Unwrap and set _step if appropriate
      if (right instanceof CastExpr) {
        right = ((CastExpr) right).getExpr();
      }
      if (right instanceof Step) {
        _step = (Step) right;
      }
    }
    return _step;
  }
Exemplo n.º 2
0
  /**
   * Returns the value in an expression of the form 'step = value'. A value may be either a literal
   * string or a variable whose type is string. Optimization if off if null is returned.
   */
  public Expression getCompareValue() {
    // Returned cached value if called more than once
    if (_value != null) {
      return _value;
    }

    // Nothing to to do if _exp is null
    if (_exp == null) {
      return null;
    }

    // Ignore if not an equality expression
    if (_exp instanceof EqualityExpr) {
      EqualityExpr exp = (EqualityExpr) _exp;
      Expression left = exp.getLeft();
      Expression right = exp.getRight();

      // Return if left is literal string
      if (left instanceof LiteralExpr) {
        _value = left;
        return _value;
      }
      // Return if left is a variable reference of type string
      if (left instanceof VariableRefBase && left.getType() == Type.String) {
        _value = left;
        return _value;
      }

      // Return if right is literal string
      if (right instanceof LiteralExpr) {
        _value = right;
        return _value;
      }
      // Return if left is a variable reference whose type is string
      if (right instanceof VariableRefBase && right.getType() == Type.String) {
        _value = right;
        return _value;
      }
    }
    return null;
  }
Exemplo n.º 3
0
 public void flushCache() {
   super.flushCache();
 }