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

#ifndef __javax_swing_text_AbstractDocument$ElementEdit__
#define __javax_swing_text_AbstractDocument$ElementEdit__

#pragma interface

#include <javax/swing/undo/AbstractUndoableEdit.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AbstractDocument$ElementEdit;
          class Element;
      }
    }
  }
}

class javax::swing::text::AbstractDocument$ElementEdit : public ::javax::swing::undo::AbstractUndoableEdit
{

public:
  AbstractDocument$ElementEdit(::javax::swing::text::Element *, jint, JArray< ::javax::swing::text::Element * > *, JArray< ::javax::swing::text::Element * > *);
  virtual JArray< ::javax::swing::text::Element * > * getChildrenAdded();
  virtual JArray< ::javax::swing::text::Element * > * getChildrenRemoved();
  virtual ::javax::swing::text::Element * getElement();
  virtual jint getIndex();
private:
  static const jlong serialVersionUID = -1216620962142928304LL;
  ::javax::swing::text::Element * __attribute__((aligned(__alignof__( ::javax::swing::undo::AbstractUndoableEdit)))) elem;
  jint index;
  JArray< ::javax::swing::text::Element * > * removed;
  JArray< ::javax::swing::text::Element * > * added;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_AbstractDocument$ElementEdit__
