// 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 AccessControlContext;
        class PrivilegedAction;
        class PrivilegedExceptionAction;
    }
  }
  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 *);
  jboolean equals(::java::lang::Object *);
  ::java::util::Set * getPrincipals();
  ::java::util::Set * getPrincipals(::java::lang::Class *);
  ::java::util::Set * getPrivateCredentials();
  ::java::util::Set * getPrivateCredentials(::java::lang::Class *);
  ::java::util::Set * getPublicCredentials();
  ::java::util::Set * getPublicCredentials(::java::lang::Class *);
  jint hashCode();
  jboolean isReadOnly();
  void setReadOnly();
  ::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;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_security_auth_Subject__