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

#ifndef __gnu_javax_swing_text_html_parser_support_gnuStringIntMapper__
#define __gnu_javax_swing_text_html_parser_support_gnuStringIntMapper__

#pragma interface

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

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

public:
  gnuStringIntMapper();
  virtual ::java::lang::String * get(jint);
  virtual jint get(::java::lang::String *);
public: // actually protected
  virtual void create() = 0;
  virtual void add(::java::lang::String *, jint);
private:
  void createTheMap();
  ::java::util::Map * __attribute__((aligned(__alignof__( ::java::lang::Object)))) is_Map;
  ::java::util::Map * si_Map;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_swing_text_html_parser_support_gnuStringIntMapper__
