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

#ifndef __javax_swing_text_AsyncBoxView$ChildState__
#define __javax_swing_text_AsyncBoxView$ChildState__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AsyncBoxView;
          class AsyncBoxView$ChildState;
          class View;
      }
    }
  }
}

class javax::swing::text::AsyncBoxView$ChildState : public ::java::lang::Object
{

public:
  AsyncBoxView$ChildState(::javax::swing::text::AsyncBoxView *, ::javax::swing::text::View *);
  virtual ::javax::swing::text::View * getChildView();
  virtual jboolean isLayoutValid();
  virtual void run();
private:
  void update();
public:
  virtual jfloat getMinorSpan();
  virtual jfloat getMinorOffset();
  virtual jfloat getMajorSpan();
  virtual jfloat getMajorOffset();
  virtual void setMajorOffset(jfloat);
  virtual void preferenceChanged(jboolean, jboolean);
private:
  ::javax::swing::text::View * __attribute__((aligned(__alignof__( ::java::lang::Object)))) childView;
  jboolean minorValid;
  jboolean majorValid;
public: // actually package-private
  jboolean childSizeValid;
  jfloat minimum;
  jfloat preferred;
private:
  jfloat majorSpan;
  jfloat majorOffset;
  jfloat minorSpan;
  jfloat minorOffset;
  jfloat maximum;
public: // actually package-private
  ::javax::swing::text::AsyncBoxView * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_AsyncBoxView$ChildState__
