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

#ifndef __java_awt_image_DataBufferByte__
#define __java_awt_image_DataBufferByte__

#pragma interface

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

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

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

public:
  DataBufferByte(jint);
  DataBufferByte(jint, jint);
  DataBufferByte(JArray< jbyte > *, jint);
  DataBufferByte(JArray< jbyte > *, jint, jint);
  DataBufferByte(JArray< JArray< jbyte > * > *, jint);
  DataBufferByte(JArray< JArray< jbyte > * > *, jint, JArray< jint > *);
  JArray< jbyte > * getData();
  JArray< jbyte > * getData(jint);
  JArray< JArray< jbyte > * > * getBankData();
  jint getElem(jint);
  jint getElem(jint, jint);
  void setElem(jint, jint);
  void setElem(jint, jint, jint);
private:
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::awt::image::DataBuffer)))) data;
  JArray< JArray< jbyte > * > * bankData;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_image_DataBufferByte__
