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

#ifndef __java_awt_Dialog$AccessibleAWTDialog__
#define __java_awt_Dialog$AccessibleAWTDialog__

#pragma interface

#include <java/awt/Window$AccessibleAWTWindow.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Dialog;
        class Dialog$AccessibleAWTDialog;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleRole;
        class AccessibleStateSet;
    }
  }
}

class java::awt::Dialog$AccessibleAWTDialog : public ::java::awt::Window$AccessibleAWTWindow
{

public: // actually protected
  Dialog$AccessibleAWTDialog(::java::awt::Dialog *);
public:
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
  virtual ::javax::accessibility::AccessibleStateSet * getAccessibleStateSet();
private:
  static const jlong serialVersionUID = 4837230331833941201LL;
public: // actually package-private
  ::java::awt::Dialog * __attribute__((aligned(__alignof__( ::java::awt::Window$AccessibleAWTWindow)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_Dialog$AccessibleAWTDialog__
