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

#ifndef __java_nio_LongBufferImpl__
#define __java_nio_LongBufferImpl__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace nio
    {
        class ByteOrder;
        class LongBuffer;
        class LongBufferImpl;
    }
  }
}

class java::nio::LongBufferImpl : public ::java::nio::LongBuffer
{

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

#endif // __java_nio_LongBufferImpl__
