
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_util_regex_REException__
#define __gnu_java_util_regex_REException__

#pragma interface

#include <java/lang/Exception.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace util
      {
        namespace regex
        {
            class REException;
        }
      }
    }
  }
}

class gnu::java::util::regex::REException : public ::java::lang::Exception
{

public: // actually package-private
  REException(::java::lang::String *, jint, jint);
  REException(::java::lang::String *, ::java::lang::Throwable *, jint, jint);
public:
  virtual jint getType();
  virtual jint getPosition();
  virtual ::java::lang::String * getMessage();
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Exception)))) type;
  jint pos;
public:
  static const jint REG_BADRPT = 1;
  static const jint REG_BADBR = 2;
  static const jint REG_EBRACE = 3;
  static const jint REG_EBRACK = 4;
  static const jint REG_ERANGE = 5;
  static const jint REG_ECTYPE = 6;
  static const jint REG_EPAREN = 7;
  static const jint REG_ESUBREG = 8;
  static const jint REG_EEND = 9;
  static const jint REG_ESCAPE = 10;
  static const jint REG_BADPAT = 11;
  static const jint REG_ESIZE = 12;
  static const jint REG_ESPACE = 13;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_util_regex_REException__
