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

#ifndef __gnu_gcj_convert_Output_iconv__
#define __gnu_gcj_convert_Output_iconv__

#pragma interface

#include <gnu/gcj/convert/UnicodeToBytes.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
        class RawData;
      namespace convert
      {
          class Output_iconv;
      }
    }
  }
}

class gnu::gcj::convert::Output_iconv : public ::gnu::gcj::convert::UnicodeToBytes
{

public:
  Output_iconv(::java::lang::String *);
  virtual ::java::lang::String * getName();
  virtual void finalize();
private:
  void init(::java::lang::String *);
public:
  virtual jint write(JArray< jchar > *, jint, jint);
  virtual void done();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::gcj::convert::UnicodeToBytes)))) encoding;
  ::gnu::gcj::RawData * handle;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_gcj_convert_Output_iconv__
