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

#ifndef __javax_swing_text_Segment__
#define __javax_swing_text_Segment__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class Segment;
      }
    }
  }
}

class javax::swing::text::Segment : public ::java::lang::Object
{

public:
  Segment();
  Segment(JArray< jchar > *, jint, jint);
  virtual ::java::lang::Object * clone();
  virtual jchar current();
  virtual jchar first();
  virtual jint getBeginIndex();
  virtual jint getEndIndex();
  virtual jint getIndex();
  virtual jchar last();
  virtual jchar next();
  virtual jchar previous();
  virtual jchar setIndex(jint);
  virtual ::java::lang::String * toString();
  virtual void setPartialReturn(jboolean);
  virtual jboolean isPartialReturn();
private:
  jboolean __attribute__((aligned(__alignof__( ::java::lang::Object)))) partialReturn;
  jint current__;
public:
  JArray< jchar > * array;
  jint count;
  jint offset;
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_Segment__
