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

#ifndef __gnu_java_awt_java2d_TextCacheKey__
#define __gnu_java_awt_java2d_TextCacheKey__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace java2d
        {
            class TextCacheKey;
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Font;
      namespace font
      {
          class FontRenderContext;
      }
    }
  }
}

class gnu::java::awt::java2d::TextCacheKey : public ::java::lang::Object
{

public:
  TextCacheKey();
  TextCacheKey(::java::lang::String *, ::java::awt::Font *, ::java::awt::font::FontRenderContext *);
  virtual void setString(::java::lang::String *);
  virtual void setFontRenderContext(::java::awt::font::FontRenderContext *);
  virtual void setFont(::java::awt::Font *);
  virtual jboolean equals(::java::lang::Object *);
  virtual jint hashCode();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) string;
  ::java::awt::font::FontRenderContext * fontRenderContext;
  ::java::awt::Font * font;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_java2d_TextCacheKey__
