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

#ifndef __javax_swing_text_html_HTMLDocument$RunElement__
#define __javax_swing_text_html_HTMLDocument$RunElement__

#pragma interface

#include <javax/swing/text/AbstractDocument$LeafElement.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AttributeSet;
          class Element;
        namespace html
        {
            class HTMLDocument;
            class HTMLDocument$RunElement;
        }
      }
    }
  }
}

class javax::swing::text::html::HTMLDocument$RunElement : public ::javax::swing::text::AbstractDocument$LeafElement
{

public:
  HTMLDocument$RunElement(::javax::swing::text::html::HTMLDocument *, ::javax::swing::text::Element *, ::javax::swing::text::AttributeSet *, jint, jint);
  virtual ::java::lang::String * getName();
  virtual ::javax::swing::text::AttributeSet * getResolveParent();
public: // actually package-private
  ::javax::swing::text::html::HTMLDocument * __attribute__((aligned(__alignof__( ::javax::swing::text::AbstractDocument$LeafElement)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_html_HTMLDocument$RunElement__
