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

#ifndef __gnu_java_util_regex_RE$CharUnit__
#define __gnu_java_util_regex_RE$CharUnit__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace util
      {
        namespace regex
        {
            class RE$CharUnit;
        }
      }
    }
  }
}

class gnu::java::util::regex::RE$CharUnit : public ::java::lang::Object
{

  RE$CharUnit();
public: // actually package-private
  RE$CharUnit(::gnu::java::util::regex::RE$CharUnit *);
public:
  jchar __attribute__((aligned(__alignof__( ::java::lang::Object)))) ch;
  jboolean bk;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_util_regex_RE$CharUnit__
