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

#ifndef __org_apache_lucene_analysis_ru_RussianStemmer__
#define __org_apache_lucene_analysis_ru_RussianStemmer__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace apache
    {
      namespace lucene
      {
        namespace analysis
        {
          namespace ru
          {
            class RussianStemmer;
          }
        }
      }
    }
  }
}

class org::apache::lucene::analysis::ru::RussianStemmer : public ::java::lang::Object
{
public:
  RussianStemmer ();
  RussianStemmer (jcharArray);
private:
  jboolean adjectival (::java::lang::StringBuffer *);
  jboolean derivational (::java::lang::StringBuffer *);
  jint findEnding (::java::lang::StringBuffer *, jint, JArray<jcharArray> *);
  jint findEnding (::java::lang::StringBuffer *, JArray<jcharArray> *);
  jboolean findAndRemoveEnding (::java::lang::StringBuffer *, JArray<jcharArray> *);
  jboolean findAndRemoveEnding (::java::lang::StringBuffer *, JArray<jcharArray> *, JArray<jcharArray> *);
  void markPositions (::java::lang::String *);
  jboolean isVowel (jchar);
  jboolean noun (::java::lang::StringBuffer *);
  jboolean perfectiveGerund (::java::lang::StringBuffer *);
  jboolean reflexive (::java::lang::StringBuffer *);
  jboolean removeI (::java::lang::StringBuffer *);
  jboolean removeSoft (::java::lang::StringBuffer *);
public:
  virtual void setCharset (jcharArray);
  virtual ::java::lang::String *stem (::java::lang::String *);
private:
  jboolean superlative (::java::lang::StringBuffer *);
  jboolean undoubleN (::java::lang::StringBuffer *);
  jboolean verb (::java::lang::StringBuffer *);
public:
  static ::java::lang::String *stem (::java::lang::String *, jcharArray);
private:
  jcharArray __attribute__((aligned(__alignof__( ::java::lang::Object ))))  charset;
  jint RV;
  jint R1;
  jint R2;
  static const jint A = 0L;
  static const jint V = 2L;
  static const jint G = 3L;
  static const jint E = 5L;
  static const jint I = 8L;
  static const jint I_ = 9L;
  static const jint L = 11L;
  static const jint M = 12L;
  static const jint N = 13L;
  static const jint O = 14L;
  static const jint S = 17L;
  static const jint T = 18L;
  static const jint U = 19L;
  static const jint X = 21L;
  static const jint SH = 24L;
  static const jint SHCH = 25L;
  static const jint Y = 27L;
  static const jint SOFT = 28L;
  static const jint AE = 29L;
  static const jint IU = 30L;
  static const jint IA = 31L;
  static jcharArray vowels;
  static JArray<jcharArray> * perfectiveGerundEndings1;
  static JArray<jcharArray> * perfectiveGerund1Predessors;
  static JArray<jcharArray> * perfectiveGerundEndings2;
  static JArray<jcharArray> * adjectiveEndings;
  static JArray<jcharArray> * participleEndings1;
  static JArray<jcharArray> * participleEndings2;
  static JArray<jcharArray> * participle1Predessors;
  static JArray<jcharArray> * reflexiveEndings;
  static JArray<jcharArray> * verbEndings1;
  static JArray<jcharArray> * verbEndings2;
  static JArray<jcharArray> * verb1Predessors;
  static JArray<jcharArray> * nounEndings;
  static JArray<jcharArray> * superlativeEndings;
  static JArray<jcharArray> * derivationalEndings;
public:

  static ::java::lang::Class class$;
};

#endif /* __org_apache_lucene_analysis_ru_RussianStemmer__ */
