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

#ifndef __gnu_java_net_protocol_http_HTTPURLConnection$1__
#define __gnu_java_net_protocol_http_HTTPURLConnection$1__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace http
          {
              class Credentials;
              class HTTPURLConnection;
              class HTTPURLConnection$1;
          }
        }
      }
    }
  }
}

class gnu::java::net::protocol::http::HTTPURLConnection$1 : public ::java::lang::Object
{

public: // actually package-private
  HTTPURLConnection$1(::gnu::java::net::protocol::http::HTTPURLConnection *, ::gnu::java::net::protocol::http::Credentials *);
public:
  virtual ::gnu::java::net::protocol::http::Credentials * getCredentials(::java::lang::String *, jint);
public: // actually package-private
  ::gnu::java::net::protocol::http::HTTPURLConnection * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
private:
  ::gnu::java::net::protocol::http::Credentials * val$creds;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_http_HTTPURLConnection$1__
