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

#ifndef __javax_security_auth_Policy__
#define __javax_security_auth_Policy__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
        class CodeSource;
        class PermissionCollection;
    }
  }
  namespace javax
  {
    namespace security
    {
      namespace auth
      {
          class Policy;
          class Subject;
      }
    }
  }
}

class javax::security::auth::Policy : public ::java::lang::Object
{

public: // actually protected
  Policy();
public:
  static ::javax::security::auth::Policy * getPolicy();
  static void setPolicy(::javax::security::auth::Policy *);
  virtual ::java::security::PermissionCollection * getPermissions(::javax::security::auth::Subject *, ::java::security::CodeSource *) = 0;
  virtual void refresh() = 0;
private:
  static ::javax::security::auth::Policy * policy;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_security_auth_Policy__
