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

#ifndef __java_applet_AppletContext__
#define __java_applet_AppletContext__

#pragma interface

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

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

public:
  virtual ::java::applet::AudioClip * getAudioClip(::java::net::URL *) = 0;
  virtual ::java::awt::Image * getImage(::java::net::URL *) = 0;
  virtual ::java::applet::Applet * getApplet(::java::lang::String *) = 0;
  virtual ::java::util::Enumeration * getApplets() = 0;
  virtual void showDocument(::java::net::URL *) = 0;
  virtual void showDocument(::java::net::URL *, ::java::lang::String *) = 0;
  virtual void showStatus(::java::lang::String *) = 0;
  virtual void setStream(::java::lang::String *, ::java::io::InputStream *) = 0;
  virtual ::java::io::InputStream * getStream(::java::lang::String *) = 0;
  virtual ::java::util::Iterator * getStreamKeys() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_applet_AppletContext__
