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

#ifndef __gnu_java_security_x509_ext_SubjectAlternativeNames__
#define __gnu_java_security_x509_ext_SubjectAlternativeNames__

#pragma interface

#include <gnu/java/security/x509/ext/Extension$Value.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace x509
        {
          namespace ext
          {
              class GeneralNames;
              class SubjectAlternativeNames;
          }
        }
      }
    }
  }
}

class gnu::java::security::x509::ext::SubjectAlternativeNames : public ::gnu::java::security::x509::ext::Extension$Value
{

public:
  SubjectAlternativeNames(JArray< jbyte > *);
  virtual ::java::util::List * getNames();
  virtual ::java::lang::String * toString();
  static ::gnu::java::security::OID * ID;
private:
  ::gnu::java::security::x509::ext::GeneralNames * __attribute__((aligned(__alignof__( ::gnu::java::security::x509::ext::Extension$Value)))) names;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_x509_ext_SubjectAlternativeNames__
