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

#ifndef __gnu_java_awt_font_opentype_CharGlyphMap$Type4__
#define __gnu_java_awt_font_opentype_CharGlyphMap$Type4__

#pragma interface

#include <gnu/java/awt/font/opentype/CharGlyphMap.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace font
        {
          namespace opentype
          {
              class CharGlyphMap$Type4;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
        class CharBuffer;
        class ShortBuffer;
    }
  }
}

class gnu::java::awt::font::opentype::CharGlyphMap$Type4 : public ::gnu::java::awt::font::opentype::CharGlyphMap
{

public: // actually package-private
  static jboolean isSupported(jint, jint, jint);
  static ::gnu::java::awt::font::opentype::CharGlyphMap$Type4 * readTable(::java::nio::ByteBuffer *, jint, jint);
private:
  CharGlyphMap$Type4(jint, ::java::nio::CharBuffer *, ::java::nio::CharBuffer *, ::java::nio::ShortBuffer *, ::java::nio::CharBuffer *);
public:
  jint getGlyph(jint);
private:
  jint find(jchar);
  ::java::nio::CharBuffer * __attribute__((aligned(__alignof__( ::gnu::java::awt::font::opentype::CharGlyphMap)))) lastChar;
  ::java::nio::CharBuffer * firstChar;
  ::java::nio::ShortBuffer * idDelta;
  ::java::nio::CharBuffer * rangeID;
  jint numSegments;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_font_opentype_CharGlyphMap$Type4__
