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

#ifndef __gnu_xml_dom_html2_DomHTMLIFrameElement__
#define __gnu_xml_dom_html2_DomHTMLIFrameElement__

#pragma interface

#include <gnu/xml/dom/html2/DomHTMLElement.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace dom
      {
        namespace html2
        {
            class DomHTMLDocument;
            class DomHTMLIFrameElement;
        }
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Document;
      }
    }
  }
}

class gnu::xml::dom::html2::DomHTMLIFrameElement : public ::gnu::xml::dom::html2::DomHTMLElement
{

public: // actually protected
  DomHTMLIFrameElement(::gnu::xml::dom::html2::DomHTMLDocument *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual ::java::lang::String * getAlign();
  virtual void setAlign(::java::lang::String *);
  virtual ::java::lang::String * getFrameBorder();
  virtual void setFrameBorder(::java::lang::String *);
  virtual ::java::lang::String * getHeight();
  virtual void setHeight(::java::lang::String *);
  virtual ::java::lang::String * getLongDesc();
  virtual void setLongDesc(::java::lang::String *);
  virtual ::java::lang::String * getMarginHeight();
  virtual void setMarginHeight(::java::lang::String *);
  virtual ::java::lang::String * getMarginWidth();
  virtual void setMarginWidth(::java::lang::String *);
  virtual ::java::lang::String * getName();
  virtual void setName(::java::lang::String *);
  virtual ::java::lang::String * getScrolling();
  virtual void setScrolling(::java::lang::String *);
  virtual ::java::lang::String * getSrc();
  virtual void setSrc(::java::lang::String *);
  virtual ::java::lang::String * getWidth();
  virtual void setWidth(::java::lang::String *);
  virtual ::org::w3c::dom::Document * getContentDocument();
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_html2_DomHTMLIFrameElement__
