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

#ifndef __java_awt_image_DataBufferDouble__
#define __java_awt_image_DataBufferDouble__

#pragma interface

#include <java/awt/image/DataBuffer.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace image
      {
          class DataBufferDouble;
      }
    }
  }
}

class java::awt::image::DataBufferDouble : public ::java::awt::image::DataBuffer
{

public:
  DataBufferDouble(jint);
  DataBufferDouble(jint, jint);
  DataBufferDouble(JArray< jdouble > *, jint);
  DataBufferDouble(JArray< jdouble > *, jint, jint);
  DataBufferDouble(JArray< JArray< jdouble > * > *, jint);
  DataBufferDouble(JArray< JArray< jdouble > * > *, jint, JArray< jint > *);
  JArray< jdouble > * getData();
  JArray< jdouble > * getData(jint);
  JArray< JArray< jdouble > * > * getBankData();
  jint getElem(jint);
  jint getElem(jint, jint);
  void setElem(jint, jint);
  void setElem(jint, jint, jint);
  jfloat getElemFloat(jint);
  jfloat getElemFloat(jint, jint);
  void setElemFloat(jint, jfloat);
  void setElemFloat(jint, jint, jfloat);
  jdouble getElemDouble(jint);
  jdouble getElemDouble(jint, jint);
  void setElemDouble(jint, jdouble);
  void setElemDouble(jint, jint, jdouble);
private:
  JArray< jdouble > * __attribute__((aligned(__alignof__( ::java::awt::image::DataBuffer)))) data;
  JArray< JArray< jdouble > * > * bankData;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_image_DataBufferDouble__
