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

#ifndef __gnu_java_net_protocol_http_Credentials__
#define __gnu_java_net_protocol_http_Credentials__

#pragma interface

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

class gnu::java::net::protocol::http::Credentials : public ::java::lang::Object
{

public:
  Credentials(::java::lang::String *, ::java::lang::String *);
  virtual ::java::lang::String * getUsername();
  virtual ::java::lang::String * getPassword();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) username;
  ::java::lang::String * password;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_http_Credentials__
