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

#ifndef __java_nio_FloatBufferImpl__
#define __java_nio_FloatBufferImpl__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace nio
    {
        class ByteOrder;
        class FloatBuffer;
        class FloatBufferImpl;
    }
  }
}

class java::nio::FloatBufferImpl : public ::java::nio::FloatBuffer
{

public: // actually package-private
  FloatBufferImpl(jint);
  FloatBufferImpl(JArray< jfloat > *, jint, jint, jint, jint, jint, jboolean);
public:
  jboolean isReadOnly();
  ::java::nio::FloatBuffer * slice();
  ::java::nio::FloatBuffer * duplicate();
  ::java::nio::FloatBuffer * asReadOnlyBuffer();
  ::java::nio::FloatBuffer * compact();
  jboolean isDirect();
  jfloat get();
  ::java::nio::FloatBuffer * put(jfloat);
  jfloat get(jint);
  ::java::nio::FloatBuffer * put(jint, jfloat);
  ::java::nio::ByteOrder * order();
private:
  jboolean __attribute__((aligned(__alignof__( ::java::nio::FloatBuffer)))) readOnly;
public:
  static ::java::lang::Class class$;
};

#endif // __java_nio_FloatBufferImpl__
