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

#ifndef __javax_accessibility_AccessibleTable__
#define __javax_accessibility_AccessibleTable__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace accessibility
    {
        class Accessible;
        class AccessibleTable;
    }
  }
}

class javax::accessibility::AccessibleTable : public ::java::lang::Object
{

public:
  virtual ::javax::accessibility::Accessible * getAccessibleCaption() = 0;
  virtual void setAccessibleCaption(::javax::accessibility::Accessible *) = 0;
  virtual ::javax::accessibility::Accessible * getAccessibleSummary() = 0;
  virtual void setAccessibleSummary(::javax::accessibility::Accessible *) = 0;
  virtual jint getAccessibleRowCount() = 0;
  virtual jint getAccessibleColumnCount() = 0;
  virtual ::javax::accessibility::Accessible * getAccessibleAt(jint, jint) = 0;
  virtual jint getAccessibleRowExtentAt(jint, jint) = 0;
  virtual jint getAccessibleColumnExtentAt(jint, jint) = 0;
  virtual ::javax::accessibility::AccessibleTable * getAccessibleRowHeader() = 0;
  virtual void setAccessibleRowHeader(::javax::accessibility::AccessibleTable *) = 0;
  virtual ::javax::accessibility::AccessibleTable * getAccessibleColumnHeader() = 0;
  virtual void setAccessibleColumnHeader(::javax::accessibility::AccessibleTable *) = 0;
  virtual ::javax::accessibility::Accessible * getAccessibleRowDescription(jint) = 0;
  virtual void setAccessibleRowDescription(jint, ::javax::accessibility::Accessible *) = 0;
  virtual ::javax::accessibility::Accessible * getAccessibleColumnDescription(jint) = 0;
  virtual void setAccessibleColumnDescription(jint, ::javax::accessibility::Accessible *) = 0;
  virtual jboolean isAccessibleSelected(jint, jint) = 0;
  virtual jboolean isAccessibleRowSelected(jint) = 0;
  virtual jboolean isAccessibleColumnSelected(jint) = 0;
  virtual JArray< jint > * getSelectedAccessibleRows() = 0;
  virtual JArray< jint > * getSelectedAccessibleColumns() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_accessibility_AccessibleTable__
