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

#ifndef __gnu_javax_swing_text_html_parser_support_low_pattern__
#define __gnu_javax_swing_text_html_parser_support_low_pattern__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace swing
      {
        namespace text
        {
          namespace html
          {
            namespace parser
            {
              namespace support
              {
                namespace low
                {
                    class ReaderTokenizer;
                    class node;
                    class pattern;
                }
              }
            }
          }
        }
      }
    }
  }
}

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

public:
  pattern(JArray< ::gnu::javax::swing::text::html::parser::support::low::node * > *);
  virtual jboolean matches(::gnu::javax::swing::text::html::parser::support::low::ReaderTokenizer *);
  JArray< ::gnu::javax::swing::text::html::parser::support::low::node * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) nodes;
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_swing_text_html_parser_support_low_pattern__
