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

#ifndef __gnu_java_awt_java2d_PixelCoverage$Bucket__
#define __gnu_java_awt_java2d_PixelCoverage$Bucket__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace java2d
        {
            class PixelCoverage$Bucket;
        }
      }
    }
  }
}

class gnu::java::awt::java2d::PixelCoverage$Bucket : public ::java::lang::Object
{

  PixelCoverage$Bucket();
public: // actually package-private
  PixelCoverage$Bucket(::gnu::java::awt::java2d::PixelCoverage$Bucket *);
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) xPos;
  jint xCov;
  jint yCov;
  ::gnu::java::awt::java2d::PixelCoverage$Bucket * next;
  ::gnu::java::awt::java2d::PixelCoverage$Bucket * prev;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_java2d_PixelCoverage$Bucket__
