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

#ifndef __javax_swing_text_Element__
#define __javax_swing_text_Element__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AttributeSet;
          class Document;
          class Element;
      }
    }
  }
}

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

public:
  virtual ::javax::swing::text::AttributeSet * getAttributes() = 0;
  virtual ::javax::swing::text::Document * getDocument() = 0;
  virtual ::javax::swing::text::Element * getElement(jint) = 0;
  virtual jint getElementCount() = 0;
  virtual jint getElementIndex(jint) = 0;
  virtual jint getEndOffset() = 0;
  virtual ::java::lang::String * getName() = 0;
  virtual ::javax::swing::text::Element * getParentElement() = 0;
  virtual jint getStartOffset() = 0;
  virtual jboolean isLeaf() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_text_Element__
