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

#ifndef __gnu_javax_print_ipp_attribute_defaults_PrinterResolutionDefault__
#define __gnu_javax_print_ipp_attribute_defaults_PrinterResolutionDefault__

#pragma interface

#include <javax/print/attribute/ResolutionSyntax.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace print
      {
        namespace ipp
        {
          namespace attribute
          {
            namespace defaults
            {
                class PrinterResolutionDefault;
            }
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace print
    {
      namespace attribute
      {
          class Attribute;
      }
    }
  }
}

class gnu::javax::print::ipp::attribute::defaults::PrinterResolutionDefault : public ::javax::print::attribute::ResolutionSyntax
{

public:
  PrinterResolutionDefault(jint, jint, jint);
  jboolean equals(::java::lang::Object *);
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
  ::javax::print::attribute::Attribute * getAssociatedAttribute();
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_print_ipp_attribute_defaults_PrinterResolutionDefault__
