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

#ifndef __gnu_xml_xpath_XPathTokenizer__
#define __gnu_xml_xpath_XPathTokenizer__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace xpath
      {
          class XPathTokenizer;
          class XPathTokenizer$XPathToken;
      }
    }
  }
}

class gnu::xml::xpath::XPathTokenizer : public ::java::lang::Object
{

public:
  XPathTokenizer(::java::lang::String *);
public: // actually package-private
  XPathTokenizer(::java::io::Reader *);
public:
  virtual jboolean advance();
  virtual jint token();
  virtual ::java::lang::Object * value();
public: // actually package-private
  virtual ::gnu::xml::xpath::XPathTokenizer$XPathToken * consume_literal(jint);
  virtual ::gnu::xml::xpath::XPathTokenizer$XPathToken * consume_digits(jint);
  virtual ::gnu::xml::xpath::XPathTokenizer$XPathToken * consume_name(jint);
  virtual jboolean isNameChar(jint);
  static ::java::util::Map * keywords;
  ::java::io::Reader * __attribute__((aligned(__alignof__( ::java::lang::Object)))) in;
  ::gnu::xml::xpath::XPathTokenizer$XPathToken * token__;
  ::gnu::xml::xpath::XPathTokenizer$XPathToken * lastToken;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_xpath_XPathTokenizer__
