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

#ifndef __gnu_javax_swing_text_html_parser_support_low_Location__
#define __gnu_javax_swing_text_html_parser_support_low_Location__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace swing
      {
        namespace text
        {
          namespace html
          {
            namespace parser
            {
              namespace support
              {
                namespace low
                {
                    class Location;
                }
              }
            }
          }
        }
      }
    }
  }
}

class gnu::javax::swing::text::html::parser::support::low::Location : public ::java::lang::Object
{

public:
  Location();
  Location(jint);
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) beginLine;
  jint endLine;
  jint endPosition;
  jint startPosition;
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_swing_text_html_parser_support_low_Location__
