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

#ifndef __gnu_javax_print_ipp_attribute_job_AttributesNaturalLanguage__
#define __gnu_javax_print_ipp_attribute_job_AttributesNaturalLanguage__

#pragma interface

#include <gnu/javax/print/ipp/attribute/NaturalLanguageSyntax.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace print
      {
        namespace ipp
        {
          namespace attribute
          {
            namespace job
            {
                class AttributesNaturalLanguage;
            }
          }
        }
      }
    }
  }
}

class gnu::javax::print::ipp::attribute::job::AttributesNaturalLanguage : public ::gnu::javax::print::ipp::attribute::NaturalLanguageSyntax
{

public:
  AttributesNaturalLanguage(::java::lang::String *);
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
  static ::gnu::javax::print::ipp::attribute::job::AttributesNaturalLanguage * EN;
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_ipp_attribute_job_AttributesNaturalLanguage__
