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

#ifndef __gnu_java_awt_peer_swing_SwingMenuItemPeer$SwingMenuItemListener__
#define __gnu_java_awt_peer_swing_SwingMenuItemPeer$SwingMenuItemListener__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace swing
          {
              class SwingMenuItemPeer;
              class SwingMenuItemPeer$SwingMenuItemListener;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
}

class gnu::java::awt::peer::swing::SwingMenuItemPeer$SwingMenuItemListener : public ::java::lang::Object
{

  SwingMenuItemPeer$SwingMenuItemListener(::gnu::java::awt::peer::swing::SwingMenuItemPeer *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  SwingMenuItemPeer$SwingMenuItemListener(::gnu::java::awt::peer::swing::SwingMenuItemPeer *, ::gnu::java::awt::peer::swing::SwingMenuItemPeer$SwingMenuItemListener *);
  ::gnu::java::awt::peer::swing::SwingMenuItemPeer * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_swing_SwingMenuItemPeer$SwingMenuItemListener__
