//
// This software is now distributed according to
// the Lesser Gnu Public License.  Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
//    -- Happy Computing!
//
package com.stevesoft.pat;

/**
 Shareware: package pat
 <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>
 */
/**
 * This class only exists to store data needed during the compilation of a
 * regular expression.
 */
public class Rthings
{
  /**
   * The numeric identity of the next () to be encountered while compiling the
   * pattern.
   */
  public int val = Regex.BackRefOffset;

  /**
   * Needed in case (?i) is encountered, to pass back the message that
   * ignoreCase should be set.
   */
  public boolean ignoreCase;

  /**
   * Needed in case (?Q) is encountered, to pass back the message that
   * dontMatchInQuotes should be set.
   */
  public boolean dontMatchInQuotes;

  public boolean optimizeMe = false;

  public boolean noBackRefs = false;

  public int parenLevel = 0;

  boolean gFlag = false, mFlag = false, sFlag = false;

  Pattern p;

  Or o;

  Rthings(Regex r)
  {
    ignoreCase = r.ignoreCase;
    dontMatchInQuotes = r.dontMatchInQuotes;
  }

  void set(Regex r)
  {
    r.gFlag = gFlag;
    r.mFlag = mFlag;
    r.sFlag = sFlag;
    r.ignoreCase = ignoreCase;
    r.dontMatchInQuotes = dontMatchInQuotes;
    if (optimizeMe)
    {
      r.optimize();
    }
  }
};
