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

#ifndef __javax_swing_text_html_BlockView$PositionInfo__
#define __javax_swing_text_html_BlockView$PositionInfo__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace swing
      {
        namespace text
        {
          namespace html
          {
            namespace css
            {
                class Length;
            }
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
        namespace html
        {
            class BlockView$PositionInfo;
        }
      }
    }
  }
}

class javax::swing::text::html::BlockView$PositionInfo : public ::java::lang::Object
{

public: // actually package-private
  BlockView$PositionInfo(jint, ::gnu::javax::swing::text::html::css::Length *, ::gnu::javax::swing::text::html::css::Length *, ::gnu::javax::swing::text::html::css::Length *, ::gnu::javax::swing::text::html::css::Length *);
  static const jint STATIC = 0;
  static const jint RELATIVE = 1;
  static const jint ABSOLUTE = 2;
  static const jint FIXED = 3;
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) type;
  ::gnu::javax::swing::text::html::css::Length * left;
  ::gnu::javax::swing::text::html::css::Length * right;
  ::gnu::javax::swing::text::html::css::Length * top;
  ::gnu::javax::swing::text::html::css::Length * bottom;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_html_BlockView$PositionInfo__
