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

#ifndef __gnu_xml_dom_DomText__
#define __gnu_xml_dom_DomText__

#pragma interface

#include <gnu/xml/dom/DomCharacterData.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace dom
      {
          class DomDocument;
          class DomText;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Text;
      }
    }
  }
}

class gnu::xml::dom::DomText : public ::gnu::xml::dom::DomCharacterData
{

public: // actually protected
  DomText(::gnu::xml::dom::DomDocument *, ::java::lang::String *);
  DomText(::gnu::xml::dom::DomDocument *, JArray< jchar > *, jint, jint);
public: // actually package-private
  DomText(jshort, ::gnu::xml::dom::DomDocument *, ::java::lang::String *);
  DomText(jshort, ::gnu::xml::dom::DomDocument *, JArray< jchar > *, jint, jint);
public:
  virtual ::java::lang::String * getNodeName();
  virtual ::org::w3c::dom::Text * splitText(jint);
  virtual jboolean isElementContentWhitespace();
  virtual ::java::lang::String * getWholeText();
  virtual ::org::w3c::dom::Text * replaceWholeText(::java::lang::String *);
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_DomText__
