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

#ifndef __gnu_java_nio_ChannelWriter__
#define __gnu_java_nio_ChannelWriter__

#pragma interface

#include <java/io/Writer.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace nio
      {
          class ChannelWriter;
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
        class CharBuffer;
      namespace channels
      {
          class WritableByteChannel;
      }
      namespace charset
      {
          class CharsetEncoder;
      }
    }
  }
}

class gnu::java::nio::ChannelWriter : public ::java::io::Writer
{

  void writeBuffer();
public:
  ChannelWriter(::java::nio::channels::WritableByteChannel *, ::java::nio::charset::CharsetEncoder *, jint);
  virtual void flush();
  virtual void close();
  virtual void write(JArray< jchar > *, jint, jint);
private:
  static const jint DEFAULT_BUFFER_CAP = 8192;
  ::java::nio::channels::WritableByteChannel * __attribute__((aligned(__alignof__( ::java::io::Writer)))) byteChannel;
  ::java::nio::charset::CharsetEncoder * enc;
  ::java::nio::ByteBuffer * byteBuffer;
  ::java::nio::CharBuffer * charBuffer;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_nio_ChannelWriter__
