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

#ifndef __gnu_javax_print_ipp_attribute_supported_CharsetSupported__
#define __gnu_javax_print_ipp_attribute_supported_CharsetSupported__

#pragma interface

#include <gnu/javax/print/ipp/attribute/CharsetSyntax.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace print
      {
        namespace ipp
        {
          namespace attribute
          {
            namespace supported
            {
                class CharsetSupported;
            }
          }
        }
      }
    }
  }
}

class gnu::javax::print::ipp::attribute::supported::CharsetSupported : public ::gnu::javax::print::ipp::attribute::CharsetSyntax
{

public:
  CharsetSupported(::java::lang::String *);
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_ipp_attribute_supported_CharsetSupported__
