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

#ifndef __javax_swing_text_GapContent$UndoRemove__
#define __javax_swing_text_GapContent$UndoRemove__

#pragma interface

#include <javax/swing/undo/AbstractUndoableEdit.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class GapContent;
          class GapContent$UndoRemove;
      }
    }
  }
}

class javax::swing::text::GapContent$UndoRemove : public ::javax::swing::undo::AbstractUndoableEdit
{

public:
  GapContent$UndoRemove(::javax::swing::text::GapContent *, jint, ::java::lang::String *);
  virtual void undo();
  virtual void redo();
  jint __attribute__((aligned(__alignof__( ::javax::swing::undo::AbstractUndoableEdit)))) where;
public: // actually package-private
  ::java::lang::String * text;
private:
  ::java::util::Vector * positions;
public: // actually package-private
  ::javax::swing::text::GapContent * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_GapContent$UndoRemove__
