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

#ifndef __gnu_java_text_CharacterBreakIterator__
#define __gnu_java_text_CharacterBreakIterator__

#pragma interface

#include <gnu/java/text/BaseBreakIterator.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace text
      {
          class CharacterBreakIterator;
      }
    }
  }
}

class gnu::java::text::CharacterBreakIterator : public ::gnu::java::text::BaseBreakIterator
{

public:
  virtual ::java::lang::Object * clone();
  CharacterBreakIterator();
private:
  CharacterBreakIterator(::gnu::java::text::CharacterBreakIterator *);
  jboolean isL(jchar);
  jboolean isV(jchar);
  jboolean isT(jchar);
  jboolean isLVT(jchar);
  jboolean isHighSurrogate(jchar);
  jboolean isLowSurrogate(jchar);
public:
  virtual jint next();
  virtual jint previous();
private:
  static const jint LBase = 4352;
  static const jint VBase = 4449;
  static const jint TBase = 4519;
  static const jint LCount = 19;
  static const jint VCount = 21;
  static const jint TCount = 28;
  static const jint highSurrogateStart = 55296;
  static const jint highSurrogateEnd = 56319;
  static const jint lowSurrogateStart = 56320;
  static const jint lowSurrogateEnd = 57343;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_text_CharacterBreakIterator__
