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

#ifndef __javax_security_auth_Subject__
#define __javax_security_auth_Subject__

#pragma interface

#include <java/lang/Object.h>

extern "Java"
{
  namespace java
  {
    namespace security
    {
      class PrivilegedExceptionAction;
      class PrivilegedAction;
      class AccessControlContext;
    }
  }
  namespace javax
  {
    namespace security
    {
      namespace auth
      {
        class Subject;
        class Subject$SecureSet;
      }
    }
  }
}

class javax::security::auth::Subject : public ::java::lang::Object
{
public:
  Subject ();
  Subject (jboolean, ::java::util::Set *, ::java::util::Set *, ::java::util::Set *);
  static ::javax::security::auth::Subject *getSubject (::java::security::AccessControlContext *);
  static ::java::lang::Object *doAs (::javax::security::auth::Subject *, ::java::security::PrivilegedAction *);
  static ::java::lang::Object *doAs (::javax::security::auth::Subject *, ::java::security::PrivilegedExceptionAction *);
  static ::java::lang::Object *doAsPrivileged (::javax::security::auth::Subject *, ::java::security::PrivilegedAction *, ::java::security::AccessControlContext *);
  static ::java::lang::Object *doAsPrivileged (::javax::security::auth::Subject *, ::java::security::PrivilegedExceptionAction *, ::java::security::AccessControlContext *);
  virtual jboolean equals (::java::lang::Object *);
  virtual ::java::util::Set *getPrincipals () { return principals; }
  virtual ::java::util::Set *getPrincipals (::java::lang::Class *);
  virtual ::java::util::Set *getPrivateCredentials () { return reinterpret_cast< ::java::util::Set *> (privCred); }
  virtual ::java::util::Set *getPrivateCredentials (::java::lang::Class *);
  virtual ::java::util::Set *getPublicCredentials () { return reinterpret_cast< ::java::util::Set *> (pubCred); }
  virtual ::java::util::Set *getPublicCredentials (::java::lang::Class *);
  virtual jint hashCode ();
  virtual jboolean isReadOnly () { return readOnly; }
  virtual void setReadOnly ();
  virtual ::java::lang::String *toString ();
private:
  static const jlong serialVersionUID = -8308522755600156056LL;
  ::java::util::Set * __attribute__((aligned(__alignof__( ::java::lang::Object )))) principals;
  jboolean readOnly;
  ::javax::security::auth::Subject$SecureSet *pubCred;
  ::javax::security::auth::Subject$SecureSet *privCred;

  friend class javax_security_auth_Subject$SecureSet;
public:

  static ::java::lang::Class class$;
};

#endif /* __javax_security_auth_Subject__ */
