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

#ifndef __javax_print_attribute_standard_Sides__
#define __javax_print_attribute_standard_Sides__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace print
    {
      namespace attribute
      {
          class EnumSyntax;
        namespace standard
        {
            class Sides;
        }
      }
    }
  }
}

class javax::print::attribute::standard::Sides : public ::javax::print::attribute::EnumSyntax
{

public: // actually protected
  Sides(jint);
public:
  ::java::lang::Class * getCategory();
  ::java::lang::String * getName();
public: // actually protected
  JArray< ::java::lang::String * > * getStringTable();
  JArray< ::javax::print::attribute::EnumSyntax * > * getEnumValueTable();
private:
  static const jlong serialVersionUID = -6890309414893262822LL;
public:
  static ::javax::print::attribute::standard::Sides * ONE_SIDED;
  static ::javax::print::attribute::standard::Sides * TWO_SIDED_LONG_EDGE;
  static ::javax::print::attribute::standard::Sides * TWO_SIDED_SHORT_EDGE;
  static ::javax::print::attribute::standard::Sides * DUPLEX;
  static ::javax::print::attribute::standard::Sides * TUMBLE;
private:
  static JArray< ::java::lang::String * > * stringTable;
  static JArray< ::javax::print::attribute::standard::Sides * > * enumValueTable;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_print_attribute_standard_Sides__
