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

#ifndef __gnu_javax_security_auth_Password__
#define __gnu_javax_security_auth_Password__

#pragma interface

#include <gnu/java/security/util/ExpirableObject.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace security
      {
        namespace auth
        {
            class Password;
        }
      }
    }
  }
}

class gnu::javax::security::auth::Password : public ::gnu::java::security::util::ExpirableObject
{

public:
  Password(JArray< jchar > *);
  Password(JArray< jchar > *, jlong);
  Password(JArray< jchar > *, jint, jint);
  Password(JArray< jchar > *, jint, jint, jlong);
  Password(JArray< jbyte > *);
  Password(JArray< jbyte > *, jlong);
  Password(JArray< jbyte > *, jint, jint);
  Password(JArray< jbyte > *, jint, jint, jlong);
  JArray< jchar > * getPassword();
  JArray< jbyte > * getBytes();
public: // actually protected
  void doDestroy();
public:
  jboolean isDestroyed();
private:
  JArray< jchar > * __attribute__((aligned(__alignof__( ::gnu::java::security::util::ExpirableObject)))) password;
  JArray< jbyte > * bPassword;
  jboolean mIsDestroyed;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_security_auth_Password__
