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

#ifndef __org_w3c_dom_css_CSSImportRule__
#define __org_w3c_dom_css_CSSImportRule__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
        namespace css
        {
            class CSSImportRule;
            class CSSRule;
            class CSSStyleSheet;
        }
        namespace stylesheets
        {
            class MediaList;
        }
      }
    }
  }
}

class org::w3c::dom::css::CSSImportRule : public ::java::lang::Object
{

public:
  virtual ::java::lang::String * getHref() = 0;
  virtual ::org::w3c::dom::stylesheets::MediaList * getMedia() = 0;
  virtual ::org::w3c::dom::css::CSSStyleSheet * getStyleSheet() = 0;
  virtual jshort getType() = 0;
  virtual ::java::lang::String * getCssText() = 0;
  virtual void setCssText(::java::lang::String *) = 0;
  virtual ::org::w3c::dom::css::CSSStyleSheet * getParentStyleSheet() = 0;
  virtual ::org::w3c::dom::css::CSSRule * getParentRule() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_w3c_dom_css_CSSImportRule__
