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

#ifndef __java_nio_charset_UnmappableCharacterException__
#define __java_nio_charset_UnmappableCharacterException__

#pragma interface

#include <java/nio/charset/CharacterCodingException.h>
extern "Java"
{
  namespace java
  {
    namespace nio
    {
      namespace charset
      {
          class UnmappableCharacterException;
      }
    }
  }
}

class java::nio::charset::UnmappableCharacterException : public ::java::nio::charset::CharacterCodingException
{

public:
  UnmappableCharacterException(jint);
  virtual jint getInputLength();
  virtual ::java::lang::String * getMessage();
private:
  static const jlong serialVersionUID = -7026962371537706123LL;
  jint __attribute__((aligned(__alignof__( ::java::nio::charset::CharacterCodingException)))) inputLength;
public:
  static ::java::lang::Class class$;
};

#endif // __java_nio_charset_UnmappableCharacterException__
