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

#ifndef __java_awt_MenuBar$AccessibleAWTMenuBar__
#define __java_awt_MenuBar$AccessibleAWTMenuBar__

#pragma interface

#include <java/awt/MenuComponent$AccessibleAWTMenuComponent.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class MenuBar;
        class MenuBar$AccessibleAWTMenuBar;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleRole;
    }
  }
}

class java::awt::MenuBar$AccessibleAWTMenuBar : public ::java::awt::MenuComponent$AccessibleAWTMenuComponent
{

public: // actually protected
  MenuBar$AccessibleAWTMenuBar(::java::awt::MenuBar *);
public:
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
private:
  static const jlong serialVersionUID = -8577604491830083815LL;
public: // actually package-private
  ::java::awt::MenuBar * __attribute__((aligned(__alignof__( ::java::awt::MenuComponent$AccessibleAWTMenuComponent)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_MenuBar$AccessibleAWTMenuBar__
