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

#ifndef __javax_swing_text_DefaultStyledDocument$ElementSpec__
#define __javax_swing_text_DefaultStyledDocument$ElementSpec__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AttributeSet;
          class DefaultStyledDocument$ElementSpec;
      }
    }
  }
}

class javax::swing::text::DefaultStyledDocument$ElementSpec : public ::java::lang::Object
{

public:
  DefaultStyledDocument$ElementSpec(::javax::swing::text::AttributeSet *, jshort);
  DefaultStyledDocument$ElementSpec(::javax::swing::text::AttributeSet *, jshort, jint);
  DefaultStyledDocument$ElementSpec(::javax::swing::text::AttributeSet *, jshort, JArray< jchar > *, jint, jint);
  virtual void setType(jshort);
  virtual jshort getType();
  virtual void setDirection(jshort);
  virtual jshort getDirection();
  virtual ::javax::swing::text::AttributeSet * getAttributes();
  virtual JArray< jchar > * getArray();
  virtual jint getOffset();
  virtual jint getLength();
  virtual ::java::lang::String * toString();
  static const jshort StartTagType = 1;
  static const jshort EndTagType = 2;
  static const jshort ContentType = 3;
  static const jshort JoinPreviousDirection = 4;
  static const jshort JoinNextDirection = 5;
  static const jshort OriginateDirection = 6;
  static const jshort JoinFractureDirection = 7;
public: // actually package-private
  jshort __attribute__((aligned(__alignof__( ::java::lang::Object)))) type;
  jshort direction;
  jint offset;
  jint length;
  JArray< jchar > * content;
  ::javax::swing::text::AttributeSet * attributes;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_DefaultStyledDocument$ElementSpec__
