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

#ifndef __javax_swing_text_AbstractDocument__
#define __javax_swing_text_AbstractDocument__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
        class UndoableEditEvent;
        class DocumentEvent;
        class UndoableEditListener;
        class DocumentListener;
      }
      namespace text
      {
        class AbstractDocument;
        class AbstractDocument$DefaultDocumentEvent;
        class Segment;
        class AbstractDocument$AttributeContext;
        class Position;
        class AttributeSet;
        class Element;
        class AbstractDocument$Content;
      }
    }
  }
}

class javax::swing::text::AbstractDocument : public ::java::lang::Object
{
public:
  virtual ::javax::swing::text::Element *getParagraphElement (jint) = 0;
  virtual ::javax::swing::text::Element *getDefaultRootElement () = 0;
public: // actually package-private
  AbstractDocument (::javax::swing::text::AbstractDocument$Content *);
public:
  virtual void addDocumentListener (::javax::swing::event::DocumentListener *);
  virtual void addUndoableEditListener (::javax::swing::event::UndoableEditListener *);
public:  // actually protected
  virtual ::javax::swing::text::Element *createBranchElement (::javax::swing::text::Element *, ::javax::swing::text::AttributeSet *);
  virtual ::javax::swing::text::Element *createLeafElement (::javax::swing::text::Element *, ::javax::swing::text::AttributeSet *, jint, jint);
public:
  virtual ::javax::swing::text::Position *createPosition (jint);
public:  // actually protected
  virtual void fireChangedUpdate (::javax::swing::event::DocumentEvent *) { }
  virtual void fireInsertUpdate (::javax::swing::event::DocumentEvent *) { }
  virtual void fireRemoveUpdate (::javax::swing::event::DocumentEvent *) { }
  virtual void fireUndoableEditUpdate (::javax::swing::event::UndoableEditEvent *) { }
public: // actually package-private
  virtual jint getAsynchronousLoadPriority ();
public:  // actually protected
  virtual ::javax::swing::text::AbstractDocument$AttributeContext *getAttributeContext () { return 0; }
public: // actually package-private
  virtual ::javax::swing::text::Element *getBidiRootElement () { return 0; }
public:  // actually protected
  virtual ::javax::swing::text::AbstractDocument$Content *getContent () { return content; }
  virtual ::java::lang::Thread *getCurrentWriter () { return 0; }
public:
  virtual ::java::util::Dictionary *getDocumentProperties () { return 0; }
  virtual ::javax::swing::text::Position *getEndPosition () { return 0; }
  virtual jint getLength ();
  virtual JArray< ::java::util::EventListener *> *getListeners (::java::lang::Class *) { return 0; }
  virtual ::java::lang::Object *getProperty (::java::lang::Object *) { return 0; }
  virtual JArray< ::javax::swing::text::Element *> *getRootElements () { return 0; }
  virtual ::javax::swing::text::Position *getStartPosition () { return 0; }
  virtual ::java::lang::String *getText (jint, jint);
  virtual void getText (jint, jint, ::javax::swing::text::Segment *);
  virtual void insertString (jint, ::java::lang::String *, ::javax::swing::text::AttributeSet *);
public:  // actually protected
  virtual void insertUpdate (::javax::swing::text::AbstractDocument$DefaultDocumentEvent *, ::javax::swing::text::AttributeSet *) { }
  virtual void postRemoveUpdate (::javax::swing::text::AbstractDocument$DefaultDocumentEvent *) { }
public:
  virtual void putProperty (::java::lang::Object *, ::java::lang::Object *) { }
  virtual void readLock () { }
  virtual void readUnlock () { }
  virtual void remove (jint, jint) { }
  virtual void removeDocumentListener (::javax::swing::event::DocumentListener *) { }
  virtual void removeUndoableEditListener (::javax::swing::event::UndoableEditListener *) { }
public:  // actually protected
  virtual void removeUpdate (::javax::swing::text::AbstractDocument$DefaultDocumentEvent *) { }
public:
  virtual void render (::java::lang::Runnable *) { }
public: // actually package-private
  virtual void setAsynchronousLoadPriority (jint) { }
  virtual void setDocumentProperties (::java::util::Dictionary *) { }
public:  // actually protected
  virtual void writeLock () { }
  virtual void writeUnlock () { }
public: // actually package-private
  ::java::util::Vector * __attribute__((aligned(__alignof__( ::java::lang::Object )))) doc_list;
  ::java::util::Vector *undo_list;
  ::javax::swing::text::AbstractDocument$Content *content;

  friend class javax_swing_text_AbstractDocument$1;
  friend class javax_swing_text_AbstractDocument$LeafElement;
  friend class javax_swing_text_AbstractDocument$ElementEdit;
  friend class javax_swing_text_AbstractDocument$DefaultDocumentEvent;
  friend class javax_swing_text_AbstractDocument$Content;
  friend class javax_swing_text_AbstractDocument$BranchElement;
  friend class javax_swing_text_AbstractDocument$AttributeContext;
  friend class javax_swing_text_AbstractDocument$AbstractElement;
public:

  static ::java::lang::Class class$;
};

#endif /* __javax_swing_text_AbstractDocument__ */
