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

#ifndef __gnu_javax_print_ipp_attribute_supported_MediaSupported__
#define __gnu_javax_print_ipp_attribute_supported_MediaSupported__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace print
      {
        namespace ipp
        {
          namespace attribute
          {
            namespace supported
            {
                class MediaSupported;
            }
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace print
    {
      namespace attribute
      {
        namespace standard
        {
            class Media;
        }
      }
    }
  }
}

class gnu::javax::print::ipp::attribute::supported::MediaSupported : public ::javax::print::attribute::TextSyntax
{

public:
  MediaSupported(::java::lang::String *, ::java::util::Locale *);
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
  static JArray< ::javax::print::attribute::standard::Media * > * getAssociatedAttributeArray(::java::util::Set *);
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_ipp_attribute_supported_MediaSupported__
