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

#ifndef __javax_swing_JTable$AccessibleJTable$AccessibleJTableModelChange__
#define __javax_swing_JTable$AccessibleJTable$AccessibleJTableModelChange__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class JTable$AccessibleJTable;
        class JTable$AccessibleJTable$AccessibleJTableModelChange;
    }
  }
}

class javax::swing::JTable$AccessibleJTable$AccessibleJTableModelChange : public ::java::lang::Object
{

public: // actually protected
  JTable$AccessibleJTable$AccessibleJTableModelChange(::javax::swing::JTable$AccessibleJTable *, jint, jint, jint, jint, jint);
public:
  virtual jint getType();
  virtual jint getFirstRow();
  virtual jint getLastRow();
  virtual jint getFirstColumn();
  virtual jint getLastColumn();
public: // actually protected
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) type;
  jint firstRow;
  jint lastRow;
  jint firstColumn;
  jint lastColumn;
public: // actually package-private
  ::javax::swing::JTable$AccessibleJTable * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JTable$AccessibleJTable$AccessibleJTableModelChange__
