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

#ifndef __gnu_javax_print_ipp_attribute_job_JobDetailedStatusMessages__
#define __gnu_javax_print_ipp_attribute_job_JobDetailedStatusMessages__

#pragma interface

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

class gnu::javax::print::ipp::attribute::job::JobDetailedStatusMessages : public ::javax::print::attribute::TextSyntax
{

public:
  JobDetailedStatusMessages(::java::lang::String *, ::java::util::Locale *);
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_ipp_attribute_job_JobDetailedStatusMessages__
