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

#ifndef __javax_print_attribute_standard_MediaName__
#define __javax_print_attribute_standard_MediaName__

#pragma interface

#include <javax/print/attribute/standard/Media.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace print
    {
      namespace attribute
      {
          class EnumSyntax;
        namespace standard
        {
            class MediaName;
        }
      }
    }
  }
}

class javax::print::attribute::standard::MediaName : public ::javax::print::attribute::standard::Media
{

public: // actually protected
  MediaName(jint);
  virtual JArray< ::java::lang::String * > * getStringTable();
  virtual JArray< ::javax::print::attribute::EnumSyntax * > * getEnumValueTable();
private:
  static const jlong serialVersionUID = 4653117714524155448LL;
public:
  static ::javax::print::attribute::standard::MediaName * NA_LETTER_WHITE;
  static ::javax::print::attribute::standard::MediaName * NA_LETTER_TRANSPARENT;
  static ::javax::print::attribute::standard::MediaName * ISO_A4_WHITE;
  static ::javax::print::attribute::standard::MediaName * ISO_A4_TRANSPARENT;
private:
  static JArray< ::java::lang::String * > * stringTable;
  static JArray< ::javax::print::attribute::standard::MediaName * > * enumValueTable;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_print_attribute_standard_MediaName__
