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

#ifndef __gnu_javax_swing_text_html_css_Length__
#define __gnu_javax_swing_text_html_css_Length__

#pragma interface

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

class gnu::javax::swing::text::html::css::Length : public ::java::lang::Object
{

public:
  Length(::java::lang::String *);
  virtual jfloat getValue();
  virtual jfloat getValue(jfloat);
  virtual void setEMBase(jfloat);
  virtual void setEXBase(jfloat);
  virtual void setFontBases(jfloat, jfloat);
  virtual jboolean isFontEMRelative();
  virtual jboolean isFontEXRelative();
  virtual jboolean isPercentage();
  static jboolean isValid(::java::lang::String *);
  virtual ::java::lang::String * toString();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
public: // actually protected
  jfloat floatValue;
private:
  jboolean isPercentage__;
  jboolean isFontEMRelative__;
  jboolean isFontEXRelative__;
  jfloat emBase;
  jfloat exBase;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_swing_text_html_css_Length__
