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

#ifndef __java_util_jar_Attributes$Name__
#define __java_util_jar_Attributes$Name__

#pragma interface

#include <java/lang/Object.h>

class java::util::jar::Attributes$Name : public ::java::lang::Object
{

public:
  Attributes$Name(::java::lang::String *);
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
  static ::java::util::jar::Attributes$Name * MANIFEST_VERSION;
  static ::java::util::jar::Attributes$Name * SIGNATURE_VERSION;
  static ::java::util::jar::Attributes$Name * CLASS_PATH;
  static ::java::util::jar::Attributes$Name * MAIN_CLASS;
  static ::java::util::jar::Attributes$Name * EXTENSION_LIST;
  static ::java::util::jar::Attributes$Name * EXTENSION_NAME;
  static ::java::util::jar::Attributes$Name * EXTENSION_INSTALLATION;
  static ::java::util::jar::Attributes$Name * IMPLEMENTATION_TITLE;
  static ::java::util::jar::Attributes$Name * IMPLEMENTATION_VERSION;
  static ::java::util::jar::Attributes$Name * IMPLEMENTATION_VENDOR;
  static ::java::util::jar::Attributes$Name * IMPLEMENTATION_VENDOR_ID;
  static ::java::util::jar::Attributes$Name * IMPLEMENTATION_URL;
  static ::java::util::jar::Attributes$Name * SPECIFICATION_TITLE;
  static ::java::util::jar::Attributes$Name * SPECIFICATION_VERSION;
  static ::java::util::jar::Attributes$Name * SPECIFICATION_VENDOR;
  static ::java::util::jar::Attributes$Name * SEALED;
  static ::java::util::jar::Attributes$Name * CONTENT_TYPE;
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
  ::java::lang::String * origName;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_jar_Attributes$Name__
