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

#ifndef __java_awt_geom_Arc2D$ArcIterator__
#define __java_awt_geom_Arc2D$ArcIterator__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace geom
      {
          class AffineTransform;
          class Arc2D;
          class Arc2D$ArcIterator;
          class Ellipse2D;
      }
    }
  }
}

class java::awt::geom::Arc2D$ArcIterator : public ::java::lang::Object
{

public:
  Arc2D$ArcIterator(::java::awt::geom::Arc2D *, ::java::awt::geom::AffineTransform *);
  Arc2D$ArcIterator(::java::awt::geom::Ellipse2D *, ::java::awt::geom::AffineTransform *);
  jint getWindingRule();
  jboolean isDone();
  void next();
  jint currentSegment(JArray< jfloat > *);
  jint currentSegment(JArray< jdouble > *);
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) current;
  jint limit;
  ::java::awt::geom::AffineTransform * xform;
  jdouble x;
  jdouble y;
  jdouble w;
  jdouble h;
  jdouble start;
  jdouble extent;
  jint type;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_geom_Arc2D$ArcIterator__
