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

#ifndef __java_applet_AppletStub__
#define __java_applet_AppletStub__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace applet
    {
        class AppletContext;
        class AppletStub;
    }
    namespace net
    {
        class URL;
    }
  }
}

class java::applet::AppletStub : public ::java::lang::Object
{

public:
  virtual jboolean isActive() = 0;
  virtual ::java::net::URL * getDocumentBase() = 0;
  virtual ::java::net::URL * getCodeBase() = 0;
  virtual ::java::lang::String * getParameter(::java::lang::String *) = 0;
  virtual ::java::applet::AppletContext * getAppletContext() = 0;
  virtual void appletResize(jint, jint) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_applet_AppletStub__
