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

#ifndef __java_awt_RenderingHints$Key__
#define __java_awt_RenderingHints$Key__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class RenderingHints$Key;
    }
  }
}

class java::awt::RenderingHints$Key : public ::java::lang::Object
{

public: // actually protected
  RenderingHints$Key(jint);
public:
  virtual jboolean isCompatibleValue(::java::lang::Object *) = 0;
public: // actually protected
  virtual jint intKey();
public:
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) key;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_RenderingHints$Key__
