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

#ifndef __gnu_xml_dom_html2_DomHTMLAnchorElement__
#define __gnu_xml_dom_html2_DomHTMLAnchorElement__

#pragma interface

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

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

public: // actually protected
  DomHTMLAnchorElement(::gnu::xml::dom::html2::DomHTMLDocument *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual ::java::lang::String * getAccessKey();
  virtual void setAccessKey(::java::lang::String *);
  virtual ::java::lang::String * getCharset();
  virtual void setCharset(::java::lang::String *);
  virtual ::java::lang::String * getCoords();
  virtual void setCoords(::java::lang::String *);
  virtual ::java::lang::String * getHref();
  virtual void setHref(::java::lang::String *);
  virtual ::java::lang::String * getHreflang();
  virtual void setHreflang(::java::lang::String *);
  virtual ::java::lang::String * getName();
  virtual void setName(::java::lang::String *);
  virtual ::java::lang::String * getRel();
  virtual void setRel(::java::lang::String *);
  virtual ::java::lang::String * getRev();
  virtual void setRev(::java::lang::String *);
  virtual ::java::lang::String * getShape();
  virtual void setShape(::java::lang::String *);
  virtual jint getTabIndex();
  virtual void setTabIndex(jint);
  virtual ::java::lang::String * getTarget();
  virtual void setTarget(::java::lang::String *);
  virtual ::java::lang::String * getType();
  virtual void setType(::java::lang::String *);
  virtual void blur();
  virtual void focus();
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_html2_DomHTMLAnchorElement__
