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

#ifndef __gnu_java_beans_DummyAppletStub__
#define __gnu_java_beans_DummyAppletStub__

#pragma interface

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

class gnu::java::beans::DummyAppletStub : public ::java::lang::Object
{

public:
  DummyAppletStub(::java::net::URL *, ::java::net::URL *);
  virtual jboolean isActive();
  virtual ::java::net::URL * getDocumentBase();
  virtual ::java::net::URL * getCodeBase();
  virtual ::java::lang::String * getParameter(::java::lang::String *);
  virtual ::java::applet::AppletContext * getAppletContext();
  virtual void appletResize(jint, jint);
private:
  ::java::net::URL * __attribute__((aligned(__alignof__( ::java::lang::Object)))) documentBase;
  ::java::net::URL * codeBase;
  ::gnu::java::beans::DummyAppletContext * context;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_DummyAppletStub__
