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

#ifndef __java_awt_geom_Line2D$1__
#define __java_awt_geom_Line2D$1__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace geom
      {
          class AffineTransform;
          class Line2D;
          class Line2D$1;
      }
    }
  }
}

class java::awt::geom::Line2D$1 : public ::java::lang::Object
{

public: // actually package-private
  Line2D$1(::java::awt::geom::Line2D *, ::java::awt::geom::AffineTransform *);
public:
  virtual jint getWindingRule();
  virtual jboolean isDone();
  virtual void next();
  virtual jint currentSegment(JArray< jfloat > *);
  virtual jint currentSegment(JArray< jdouble > *);
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) current;
public: // actually package-private
  ::java::awt::geom::Line2D * this$0;
private:
  ::java::awt::geom::AffineTransform * val$at;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_geom_Line2D$1__
