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

#ifndef __gnu_java_net_protocol_jar_Handler__
#define __gnu_java_net_protocol_jar_Handler__

#pragma interface

#include <java/net/URLStreamHandler.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace jar
          {
              class Handler;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
        class URLConnection;
    }
  }
}

class gnu::java::net::protocol::jar::Handler : public ::java::net::URLStreamHandler
{

public:
  Handler();
public: // actually protected
  virtual ::java::net::URLConnection * openConnection(::java::net::URL *);
  virtual void parseURL(::java::net::URL *, ::java::lang::String *, jint, jint);
private:
  static ::java::lang::String * flat(::java::lang::String *);
public: // actually protected
  virtual ::java::lang::String * toExternalForm(::java::net::URL *);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_jar_Handler__
