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

#ifndef __gnu_javax_swing_text_html_CombinedAttributes$CombinedEnumeration__
#define __gnu_javax_swing_text_html_CombinedAttributes$CombinedEnumeration__

#pragma interface

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

class gnu::javax::swing::text::html::CombinedAttributes$CombinedEnumeration : public ::java::lang::Object
{

public: // actually package-private
  CombinedAttributes$CombinedEnumeration(::gnu::javax::swing::text::html::CombinedAttributes *, ::java::util::Enumeration *, ::java::util::Enumeration *);
public:
  virtual jboolean hasMoreElements();
  virtual ::java::lang::Object * nextElement();
public: // actually package-private
  ::java::util::Enumeration * __attribute__((aligned(__alignof__( ::java::lang::Object)))) a;
  ::java::util::Enumeration * b;
  ::gnu::javax::swing::text::html::CombinedAttributes * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_swing_text_html_CombinedAttributes$CombinedEnumeration__
