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

#ifndef __java_awt_image_DataBufferFloat__
#define __java_awt_image_DataBufferFloat__

#pragma interface

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

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

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

public:
  DataBufferFloat(jint);
  DataBufferFloat(jint, jint);
  DataBufferFloat(JArray< jfloat > *, jint);
  DataBufferFloat(JArray< jfloat > *, jint, jint);
  DataBufferFloat(JArray< JArray< jfloat > * > *, jint);
  DataBufferFloat(JArray< JArray< jfloat > * > *, jint, JArray< jint > *);
  JArray< jfloat > * getData();
  JArray< jfloat > * getData(jint);
  JArray< JArray< jfloat > * > * 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< jfloat > * __attribute__((aligned(__alignof__( ::java::awt::image::DataBuffer)))) data;
  JArray< JArray< jfloat > * > * bankData;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_image_DataBufferFloat__
