#ifndef _DOM_CharacterDataImpl_h_
#define _DOM_CharacterDataImpl_h_
#include "xml/dom_nodeimpl.h"
#include "dom/dom_string.h"
namespace DOM {
class DocumentImpl;
#if APPLE_CHANGES
class CharacterData;
class Text;
#endif
class CharacterDataImpl : public NodeImpl
{
public:
CharacterDataImpl(DocumentPtr *doc, const DOMString &_text);
CharacterDataImpl(DocumentPtr *doc);
virtual ~CharacterDataImpl();
virtual DOMString data() const;
virtual void setData( const DOMString &_data, int &exceptioncode );
virtual unsigned long length ( ) const;
virtual DOMString substringData ( const unsigned long offset, const unsigned long count, int &exceptioncode );
virtual void appendData ( const DOMString &arg, int &exceptioncode );
virtual void insertData ( const unsigned long offset, const DOMString &arg, int &exceptioncode );
virtual void deleteData ( const unsigned long offset, const unsigned long count, int &exceptioncode );
virtual void replaceData ( const unsigned long offset, const unsigned long count, const DOMString &arg, int &exceptioncode );
virtual bool containsOnlyWhitespace() const;
bool containsOnlyWhitespace(unsigned int from, unsigned int len) const;
virtual DOMString nodeValue() const;
virtual void setNodeValue( const DOMString &_nodeValue, int &exceptioncode );
DOMStringImpl *string() { return str; }
virtual void checkCharDataOperation( const unsigned long offset, int &exceptioncode );
virtual long maxOffset() const;
virtual long caretMinOffset() const;
virtual long caretMaxOffset() const;
virtual unsigned long caretMaxRenderedOffset() const;
virtual bool rendererIsNeeded(khtml::RenderStyle *);
#ifndef NDEBUG
virtual void dump(QTextStream *stream, QString ind = "") const;
#endif
#if APPLE_CHANGES
static CharacterData createInstance(CharacterDataImpl *impl);
#endif
protected:
DOMStringImpl *str;
void dispatchModifiedEvent(DOMStringImpl *prevValue);
};
class CommentImpl : public CharacterDataImpl
{
public:
CommentImpl(DocumentPtr *doc, const DOMString &_text);
CommentImpl(DocumentPtr *doc);
virtual ~CommentImpl();
virtual DOMString nodeName() const;
virtual unsigned short nodeType() const;
virtual NodeImpl *cloneNode(bool deep);
virtual Id id() const;
virtual bool childTypeAllowed( unsigned short type );
virtual DOMString toString() const;
};
class TextImpl : public CharacterDataImpl
{
public:
TextImpl(DocumentPtr *impl, const DOMString &_text);
TextImpl(DocumentPtr *impl);
virtual ~TextImpl();
TextImpl *splitText ( const unsigned long offset, int &exceptioncode );
virtual DOMString nodeName() const;
virtual unsigned short nodeType() const;
virtual NodeImpl *cloneNode(bool deep);
virtual bool isTextNode() const { return true; }
virtual Id id() const;
virtual void attach();
virtual bool rendererIsNeeded(khtml::RenderStyle *);
virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
virtual void recalcStyle( StyleChange = NoChange );
virtual bool childTypeAllowed( unsigned short type );
virtual DOMString toString() const;
#if APPLE_CHANGES
static Text createInstance(TextImpl *impl);
#endif
#ifndef NDEBUG
virtual void formatForDebugger(char *buffer, unsigned length) const;
#endif
protected:
virtual TextImpl *createNew(DOMStringImpl *_str);
};
class CDATASectionImpl : public TextImpl
{
public:
CDATASectionImpl(DocumentPtr *impl, const DOMString &_text);
CDATASectionImpl(DocumentPtr *impl);
virtual ~CDATASectionImpl();
virtual DOMString nodeName() const;
virtual unsigned short nodeType() const;
virtual NodeImpl *cloneNode(bool deep);
virtual bool childTypeAllowed( unsigned short type );
virtual DOMString toString() const;
protected:
virtual TextImpl *createNew(DOMStringImpl *_str);
};
class EditingTextImpl : public TextImpl
{
public:
EditingTextImpl(DocumentPtr *impl, const DOMString &text);
EditingTextImpl(DocumentPtr *impl);
virtual ~EditingTextImpl();
virtual bool rendererIsNeeded(khtml::RenderStyle *);
};
} #endif