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

#ifndef __gnu_java_nio_channels_FileChannelImpl__
#define __gnu_java_nio_channels_FileChannelImpl__

#pragma interface

#include <java/nio/channels/FileChannel.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace nio
      {
        namespace channels
        {
            class FileChannelImpl;
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
        class MappedByteBuffer;
      namespace channels
      {
          class FileChannel;
          class FileChannel$MapMode;
          class FileLock;
          class ReadableByteChannel;
          class WritableByteChannel;
      }
    }
  }
}

class gnu::java::nio::channels::FileChannelImpl : public ::java::nio::channels::FileChannel
{

  static void init();
public:
  FileChannelImpl();
  static ::gnu::java::nio::channels::FileChannelImpl * create(::java::io::File *, jint);
private:
  FileChannelImpl(::java::io::File *, jint);
public: // actually package-private
  FileChannelImpl(jint, jint);
private:
  jint open(::java::lang::String *, jint);
public:
  jint available();
private:
  jlong implPosition();
  void seek(jlong);
  void implTruncate(jlong);
public:
  void unlock(jlong, jlong);
  jlong size();
public: // actually protected
  void implCloseChannel();
  void finalize();
public:
  jint read(::java::nio::ByteBuffer *);
  jint read(::java::nio::ByteBuffer *, jlong);
  jint read();
  jint read(JArray< jbyte > *, jint, jint);
  jlong read(JArray< ::java::nio::ByteBuffer * > *, jint, jint);
  jint write(::java::nio::ByteBuffer *);
  jint write(::java::nio::ByteBuffer *, jlong);
  void write(JArray< jbyte > *, jint, jint);
  void write(jint);
  jlong write(JArray< ::java::nio::ByteBuffer * > *, jint, jint);
  ::java::nio::MappedByteBuffer * mapImpl(jchar, jlong, jint);
  ::java::nio::MappedByteBuffer * map(::java::nio::channels::FileChannel$MapMode *, jlong, jlong);
  void force(jboolean);
private:
  jint smallTransferTo(jlong, jint, ::java::nio::channels::WritableByteChannel *);
public:
  jlong transferTo(jlong, jlong, ::java::nio::channels::WritableByteChannel *);
private:
  jint smallTransferFrom(::java::nio::channels::ReadableByteChannel *, jlong, jint);
public:
  jlong transferFrom(::java::nio::channels::ReadableByteChannel *, jlong, jlong);
  ::java::nio::channels::FileLock * tryLock(jlong, jlong, jboolean);
private:
  jboolean lock(jlong, jlong, jboolean, jboolean);
public:
  ::java::nio::channels::FileLock * lock(jlong, jlong, jboolean);
  jlong position();
  ::java::nio::channels::FileChannel * position(jlong);
  ::java::nio::channels::FileChannel * truncate(jlong);
  jint getNativeFD();
  static const jint READ = 1;
  static const jint WRITE = 2;
  static const jint APPEND = 4;
  static const jint EXCL = 8;
  static const jint SYNC = 16;
  static const jint DSYNC = 32;
private:
  jint __attribute__((aligned(__alignof__( ::java::nio::channels::FileChannel)))) fd;
  jlong pos;
  jint mode;
public:
  static ::gnu::java::nio::channels::FileChannelImpl * in;
  static ::gnu::java::nio::channels::FileChannelImpl * out;
  static ::gnu::java::nio::channels::FileChannelImpl * err;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_nio_channels_FileChannelImpl__
