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

#ifndef __gnu_java_net_loader_Resource__
#define __gnu_java_net_loader_Resource__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace loader
        {
            class Resource;
            class URLLoader;
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
    }
    namespace security
    {
        class CodeSource;
      namespace cert
      {
          class Certificate;
      }
    }
  }
}

class gnu::java::net::loader::Resource : public ::java::lang::Object
{

public:
  Resource(::gnu::java::net::loader::URLLoader *);
  virtual ::java::security::CodeSource * getCodeSource();
  virtual JArray< ::java::security::cert::Certificate * > * getCertificates();
  virtual ::gnu::java::net::loader::URLLoader * getLoader();
  virtual ::java::net::URL * getURL() = 0;
  virtual jint getLength() = 0;
  virtual ::java::io::InputStream * getInputStream() = 0;
public: // actually package-private
  ::gnu::java::net::loader::URLLoader * __attribute__((aligned(__alignof__( ::java::lang::Object)))) loader;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_loader_Resource__
