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

#ifndef __gnu_java_awt_java2d_ScanlineCoverage$Range__
#define __gnu_java_awt_java2d_ScanlineCoverage$Range__

#pragma interface

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

class gnu::java::awt::java2d::ScanlineCoverage$Range : public ::java::lang::Object
{

public: // actually package-private
  ScanlineCoverage$Range();
  void setXPos(jint);
public:
  jint getXPos();
public: // actually package-private
  void setLength(jint);
public:
  jint getLength();
  jint getXPosEnd();
public: // actually package-private
  void setCoverage(jint);
public:
  jint getCoverage();
  ::java::lang::String * toString();
public: // actually package-private
  static jint access$0(::gnu::java::awt::java2d::ScanlineCoverage$Range *);
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) xPos;
  jint length;
  jint coverage;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_java2d_ScanlineCoverage$Range__
