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

#ifndef __java_nio_ByteBuffer__
#define __java_nio_ByteBuffer__

#pragma interface

#include <java/nio/Buffer.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace nio
    {
      class DoubleBuffer;
      class FloatBuffer;
      class LongBuffer;
      class IntBuffer;
      class CharBuffer;
      class ShortBuffer;
      class ByteBuffer;
      class ByteOrder;
    }
  }
}

class java::nio::ByteBuffer : public ::java::nio::Buffer
{
public: // actually package-private
  ByteBuffer (jint, jint, jint, jint);
  ByteBuffer (jbyteArray, jint, jint, jint, jint, jint);
public:
  static ::java::nio::ByteBuffer *allocateDirect (jint);
  static ::java::nio::ByteBuffer *allocate (jint);
  static ::java::nio::ByteBuffer *wrap (jbyteArray, jint, jint);
  static ::java::nio::ByteBuffer *wrap (jbyteArray);
  virtual ::java::nio::ByteBuffer *get (jbyteArray, jint, jint);
  virtual ::java::nio::ByteBuffer *get (jbyteArray);
  virtual ::java::nio::ByteBuffer *put (::java::nio::ByteBuffer *);
  virtual ::java::nio::ByteBuffer *put (jbyteArray, jint, jint);
  ::java::nio::ByteBuffer *put (jbyteArray);
  jboolean hasArray ();
  jbyteArray array ();
  jint arrayOffset ();
  virtual jint hashCode ();
  virtual jboolean equals (::java::lang::Object *);
  virtual jint compareTo (::java::lang::Object *);
  ::java::nio::ByteOrder *order () { return endian; }
  ::java::nio::ByteBuffer *order (::java::nio::ByteOrder *);
  virtual jbyte get () = 0;
  virtual ::java::nio::ByteBuffer *put (jbyte) = 0;
  virtual jbyte get (jint) = 0;
  virtual ::java::nio::ByteBuffer *put (jint, jbyte) = 0;
  virtual ::java::nio::ByteBuffer *compact () = 0;
public: // actually package-private
  virtual void shiftDown (jint, jint, jint);
public:
  virtual jboolean isDirect () = 0;
  virtual ::java::nio::ByteBuffer *slice () = 0;
  virtual ::java::nio::ByteBuffer *duplicate () = 0;
  virtual ::java::nio::ByteBuffer *asReadOnlyBuffer () = 0;
  virtual ::java::nio::ShortBuffer *asShortBuffer () = 0;
  virtual ::java::nio::CharBuffer *asCharBuffer () = 0;
  virtual ::java::nio::IntBuffer *asIntBuffer () = 0;
  virtual ::java::nio::LongBuffer *asLongBuffer () = 0;
  virtual ::java::nio::FloatBuffer *asFloatBuffer () = 0;
  virtual ::java::nio::DoubleBuffer *asDoubleBuffer () = 0;
  virtual jchar getChar () = 0;
  virtual ::java::nio::ByteBuffer *putChar (jchar) = 0;
  virtual jchar getChar (jint) = 0;
  virtual ::java::nio::ByteBuffer *putChar (jint, jchar) = 0;
  virtual jshort getShort () = 0;
  virtual ::java::nio::ByteBuffer *putShort (jshort) = 0;
  virtual jshort getShort (jint) = 0;
  virtual ::java::nio::ByteBuffer *putShort (jint, jshort) = 0;
  virtual jint getInt () = 0;
  virtual ::java::nio::ByteBuffer *putInt (jint) = 0;
  virtual jint getInt (jint) = 0;
  virtual ::java::nio::ByteBuffer *putInt (jint, jint) = 0;
  virtual jlong getLong () = 0;
  virtual ::java::nio::ByteBuffer *putLong (jlong) = 0;
  virtual jlong getLong (jint) = 0;
  virtual ::java::nio::ByteBuffer *putLong (jint, jlong) = 0;
  virtual jfloat getFloat () = 0;
  virtual ::java::nio::ByteBuffer *putFloat (jfloat) = 0;
  virtual jfloat getFloat (jint) = 0;
  virtual ::java::nio::ByteBuffer *putFloat (jint, jfloat) = 0;
  virtual jdouble getDouble () = 0;
  virtual ::java::nio::ByteBuffer *putDouble (jdouble) = 0;
  virtual jdouble getDouble (jint) = 0;
  virtual ::java::nio::ByteBuffer *putDouble (jint, jdouble) = 0;
  virtual ::java::lang::String *toString ();
private:
  ::java::nio::ByteOrder * __attribute__((aligned(__alignof__( ::java::nio::Buffer )))) endian;
public: // actually package-private
  jint array_offset;
  jbyteArray backing_buffer;
public:

  static ::java::lang::Class class$;
};

#endif /* __java_nio_ByteBuffer__ */
