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

#ifndef __java_awt_Choice$AccessibleAWTChoice__
#define __java_awt_Choice$AccessibleAWTChoice__

#pragma interface

#include <java/awt/Component$AccessibleAWTComponent.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Choice;
        class Choice$AccessibleAWTChoice;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleAction;
        class AccessibleRole;
    }
  }
}

class java::awt::Choice$AccessibleAWTChoice : public ::java::awt::Component$AccessibleAWTComponent
{

public:
  Choice$AccessibleAWTChoice(::java::awt::Choice *);
  virtual ::javax::accessibility::AccessibleAction * getAccessibleAction();
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
  virtual jint getAccessibleActionCount();
  virtual ::java::lang::String * getAccessibleActionDescription(jint);
  virtual jboolean doAccessibleAction(jint);
private:
  static const jlong serialVersionUID = 7175603582428509322LL;
public: // actually package-private
  ::java::awt::Choice * __attribute__((aligned(__alignof__( ::java::awt::Component$AccessibleAWTComponent)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_Choice$AccessibleAWTChoice__
