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

#ifndef __gnu_java_text_WordBreakIterator__
#define __gnu_java_text_WordBreakIterator__

#pragma interface

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

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

public:
  virtual ::java::lang::Object * clone();
  WordBreakIterator();
private:
  WordBreakIterator(::gnu::java::text::WordBreakIterator *);
  jboolean isHira(jchar);
  jboolean isKata(jchar);
  jboolean isHan(jchar);
public:
  virtual jint next();
  virtual jint previous();
  static ::java::lang::Class class$;
};

#endif // __gnu_java_text_WordBreakIterator__
