summaryrefslogtreecommitdiffstats
path: root/khtml/dom/html_table.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch)
tree5ac38a06f3dde268dc7927dc155896926aaf7012 /khtml/dom/html_table.cpp
downloadtdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz
tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'khtml/dom/html_table.cpp')
-rw-r--r--khtml/dom/html_table.cpp868
1 files changed, 868 insertions, 0 deletions
diff --git a/khtml/dom/html_table.cpp b/khtml/dom/html_table.cpp
new file mode 100644
index 000000000..f89c4a899
--- /dev/null
+++ b/khtml/dom/html_table.cpp
@@ -0,0 +1,868 @@
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
+ * (C) 1999 Lars Knoll (knoll@kde.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+// --------------------------------------------------------------------------
+
+#include "dom/html_misc.h"
+#include "dom/html_table.h"
+#include "dom/dom_exception.h"
+
+#include "html/html_miscimpl.h"
+#include "html/html_tableimpl.h"
+#include "misc/htmlhashes.h"
+
+using namespace DOM;
+
+HTMLTableCaptionElement::HTMLTableCaptionElement() : HTMLElement()
+{
+}
+
+HTMLTableCaptionElement::HTMLTableCaptionElement(const HTMLTableCaptionElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableCaptionElement::HTMLTableCaptionElement(HTMLTableCaptionElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableCaptionElement &HTMLTableCaptionElement::operator = (const Node &other)
+{
+ assignOther( other, ID_CAPTION );
+ return *this;
+}
+
+HTMLTableCaptionElement &HTMLTableCaptionElement::operator = (const HTMLTableCaptionElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableCaptionElement::~HTMLTableCaptionElement()
+{
+}
+
+DOMString HTMLTableCaptionElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableCaptionElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+// --------------------------------------------------------------------------
+
+HTMLTableCellElement::HTMLTableCellElement() : HTMLElement()
+{
+}
+
+HTMLTableCellElement::HTMLTableCellElement(const HTMLTableCellElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableCellElement::HTMLTableCellElement(HTMLTableCellElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableCellElement &HTMLTableCellElement::operator = (const Node &other)
+{
+ if( other.elementId() != ID_TD &&
+ other.elementId() != ID_TH )
+ {
+ if ( impl ) impl->deref();
+ impl = 0;
+ } else {
+ Node::operator = (other);
+ }
+ return *this;
+}
+
+HTMLTableCellElement &HTMLTableCellElement::operator = (const HTMLTableCellElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableCellElement::~HTMLTableCellElement()
+{
+}
+
+long HTMLTableCellElement::cellIndex() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableCellElementImpl *)impl)->cellIndex();
+}
+
+void HTMLTableCellElement::setCellIndex( long /*_cellIndex*/ )
+{
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+}
+
+DOMString HTMLTableCellElement::abbr() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ABBR);
+}
+
+void HTMLTableCellElement::setAbbr( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ABBR, value);
+}
+
+DOMString HTMLTableCellElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableCellElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+DOMString HTMLTableCellElement::axis() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_AXIS);
+}
+
+void HTMLTableCellElement::setAxis( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_AXIS, value);
+}
+
+DOMString HTMLTableCellElement::bgColor() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_BGCOLOR);
+}
+
+void HTMLTableCellElement::setBgColor( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_BGCOLOR, value);
+}
+
+DOMString HTMLTableCellElement::ch() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAR);
+}
+
+void HTMLTableCellElement::setCh( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAR, value);
+}
+
+DOMString HTMLTableCellElement::chOff() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAROFF);
+}
+
+void HTMLTableCellElement::setChOff( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAROFF, value);
+}
+
+long HTMLTableCellElement::colSpan() const
+{
+ if(!impl) return 0;
+ return ((ElementImpl *)impl)->getAttribute(ATTR_COLSPAN).toInt();
+}
+
+void HTMLTableCellElement::setColSpan( long _colSpan )
+{
+ if(impl) {
+ DOMString value(QString::number(_colSpan));
+ ((ElementImpl *)impl)->setAttribute(ATTR_COLSPAN,value);
+ }
+}
+
+DOMString HTMLTableCellElement::headers() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_HEADERS);
+}
+
+void HTMLTableCellElement::setHeaders( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_HEADERS, value);
+}
+
+DOMString HTMLTableCellElement::height() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_HEIGHT);
+}
+
+void HTMLTableCellElement::setHeight( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_HEIGHT, value);
+}
+
+bool HTMLTableCellElement::noWrap() const
+{
+ if(!impl) return false;
+ return !((ElementImpl *)impl)->getAttribute(ATTR_NOWRAP).isNull();
+}
+
+void HTMLTableCellElement::setNoWrap( bool _noWrap )
+{
+ if(impl)
+ ((ElementImpl *)impl)->setAttribute(ATTR_NOWRAP, _noWrap ? "" : 0);
+}
+
+long HTMLTableCellElement::rowSpan() const
+{
+ if(!impl) return 0;
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ROWSPAN).toInt();
+}
+
+void HTMLTableCellElement::setRowSpan( long _rowSpan )
+{
+ if(impl) {
+ DOMString value(QString::number(_rowSpan));
+ ((ElementImpl *)impl)->setAttribute(ATTR_ROWSPAN,value);
+ }
+}
+
+DOMString HTMLTableCellElement::scope() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_SCOPE);
+}
+
+void HTMLTableCellElement::setScope( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_SCOPE, value);
+}
+
+DOMString HTMLTableCellElement::vAlign() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_VALIGN);
+}
+
+void HTMLTableCellElement::setVAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_VALIGN, value);
+}
+
+DOMString HTMLTableCellElement::width() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_WIDTH);
+}
+
+void HTMLTableCellElement::setWidth( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_WIDTH, value);
+}
+
+// --------------------------------------------------------------------------
+
+HTMLTableColElement::HTMLTableColElement() : HTMLElement()
+{
+}
+
+HTMLTableColElement::HTMLTableColElement(const HTMLTableColElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableColElement::HTMLTableColElement(HTMLTableColElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableColElement &HTMLTableColElement::operator = (const Node &other)
+{
+ if( other.elementId() != ID_COL &&
+ other.elementId() != ID_COLGROUP )
+ {
+ if ( impl ) impl->deref();
+ impl = 0;
+ } else {
+ Node::operator = (other);
+ }
+ return *this;
+}
+
+HTMLTableColElement &HTMLTableColElement::operator = (const HTMLTableColElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableColElement::~HTMLTableColElement()
+{
+}
+
+DOMString HTMLTableColElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableColElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+DOMString HTMLTableColElement::ch() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAR);
+}
+
+void HTMLTableColElement::setCh( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAR, value);
+}
+
+DOMString HTMLTableColElement::chOff() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAROFF);
+}
+
+void HTMLTableColElement::setChOff( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAROFF, value);
+}
+
+long HTMLTableColElement::span() const
+{
+ if(!impl) return 0;
+ return ((ElementImpl *)impl)->getAttribute(ATTR_SPAN).toInt();
+}
+
+void HTMLTableColElement::setSpan( long _span )
+{
+ if(impl) {
+ DOMString value(QString::number(_span));
+ ((ElementImpl *)impl)->setAttribute(ATTR_SPAN,value);
+ }
+}
+
+DOMString HTMLTableColElement::vAlign() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_VALIGN);
+}
+
+void HTMLTableColElement::setVAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_VALIGN, value);
+}
+
+DOMString HTMLTableColElement::width() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_WIDTH);
+}
+
+void HTMLTableColElement::setWidth( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_WIDTH, value);
+}
+
+// --------------------------------------------------------------------------
+
+HTMLTableElement::HTMLTableElement() : HTMLElement()
+{
+}
+
+HTMLTableElement::HTMLTableElement(const HTMLTableElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableElement::HTMLTableElement(HTMLTableElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableElement &HTMLTableElement::operator = (const Node &other)
+{
+ assignOther( other, ID_TABLE );
+ return *this;
+}
+
+HTMLTableElement &HTMLTableElement::operator = (const HTMLTableElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableElement::~HTMLTableElement()
+{
+}
+
+HTMLTableCaptionElement HTMLTableElement::caption() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->caption();
+}
+
+void HTMLTableElement::setCaption( const HTMLTableCaptionElement &_caption )
+{
+ if(impl)
+ ((HTMLTableElementImpl *)impl)
+ ->setCaption( ((HTMLTableCaptionElementImpl *)_caption.impl) );
+}
+
+HTMLTableSectionElement HTMLTableElement::tHead() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->tHead();
+}
+
+void HTMLTableElement::setTHead( const HTMLTableSectionElement &_tHead )
+{
+
+ if(impl)
+ ((HTMLTableElementImpl *)impl)
+ ->setTHead( ((HTMLTableSectionElementImpl *)_tHead.impl) );
+}
+
+HTMLTableSectionElement HTMLTableElement::tFoot() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->tFoot();
+}
+
+void HTMLTableElement::setTFoot( const HTMLTableSectionElement &_tFoot )
+{
+
+ if(impl)
+ ((HTMLTableElementImpl *)impl)
+ ->setTFoot( ((HTMLTableSectionElementImpl *)_tFoot.impl) );
+}
+
+HTMLCollection HTMLTableElement::rows() const
+{
+ if(!impl) return HTMLCollection();
+ return HTMLCollection(impl, HTMLCollectionImpl::TABLE_ROWS);
+}
+
+HTMLCollection HTMLTableElement::tBodies() const
+{
+ if(!impl) return HTMLCollection();
+ return HTMLCollection(impl, HTMLCollectionImpl::TABLE_TBODIES);
+}
+
+DOMString HTMLTableElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+DOMString HTMLTableElement::bgColor() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_BGCOLOR);
+}
+
+void HTMLTableElement::setBgColor( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_BGCOLOR, value);
+}
+
+DOMString HTMLTableElement::border() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_BORDER);
+}
+
+void HTMLTableElement::setBorder( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_BORDER, value);
+}
+
+DOMString HTMLTableElement::cellPadding() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CELLPADDING);
+}
+
+void HTMLTableElement::setCellPadding( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CELLPADDING, value);
+}
+
+DOMString HTMLTableElement::cellSpacing() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CELLSPACING);
+}
+
+void HTMLTableElement::setCellSpacing( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CELLSPACING, value);
+}
+
+DOMString HTMLTableElement::frame() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_FRAME);
+}
+
+void HTMLTableElement::setFrame( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_FRAME, value);
+}
+
+DOMString HTMLTableElement::rules() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_RULES);
+}
+
+void HTMLTableElement::setRules( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_RULES, value);
+}
+
+DOMString HTMLTableElement::summary() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_SUMMARY);
+}
+
+void HTMLTableElement::setSummary( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_SUMMARY, value);
+}
+
+DOMString HTMLTableElement::width() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_WIDTH);
+}
+
+void HTMLTableElement::setWidth( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_WIDTH, value);
+}
+
+HTMLElement HTMLTableElement::createTHead( )
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->createTHead( );
+}
+
+void HTMLTableElement::deleteTHead( )
+{
+ if(impl)
+ ((HTMLTableElementImpl *)impl)->deleteTHead( );
+}
+
+HTMLElement HTMLTableElement::createTFoot( )
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->createTFoot( );
+}
+
+void HTMLTableElement::deleteTFoot( )
+{
+ if(impl)
+ ((HTMLTableElementImpl *)impl)->deleteTFoot( );
+}
+
+HTMLElement HTMLTableElement::createCaption( )
+{
+ if(!impl) return 0;
+ return ((HTMLTableElementImpl *)impl)->createCaption( );
+}
+
+void HTMLTableElement::deleteCaption( )
+{
+ if(impl)
+ ((HTMLTableElementImpl *)impl)->deleteCaption( );
+}
+
+HTMLElement HTMLTableElement::insertRow( long index )
+{
+ if(!impl) return 0;
+ int exceptioncode = 0;
+ HTMLElementImpl* ret = ((HTMLTableElementImpl *)impl)->insertRow( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+ return ret;
+}
+
+void HTMLTableElement::deleteRow( long index )
+{
+ int exceptioncode = 0;
+ if(impl)
+ ((HTMLTableElementImpl *)impl)->deleteRow( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+}
+
+// --------------------------------------------------------------------------
+
+HTMLTableRowElement::HTMLTableRowElement() : HTMLElement()
+{
+}
+
+HTMLTableRowElement::HTMLTableRowElement(const HTMLTableRowElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableRowElement::HTMLTableRowElement(HTMLTableRowElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableRowElement &HTMLTableRowElement::operator = (const Node &other)
+{
+ assignOther( other, ID_TR );
+ return *this;
+}
+
+HTMLTableRowElement &HTMLTableRowElement::operator = (const HTMLTableRowElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableRowElement::~HTMLTableRowElement()
+{
+}
+
+long HTMLTableRowElement::rowIndex() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableRowElementImpl *)impl)->rowIndex();
+}
+
+void HTMLTableRowElement::setRowIndex( long /*_rowIndex*/ )
+{
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+}
+
+long HTMLTableRowElement::sectionRowIndex() const
+{
+ if(!impl) return 0;
+ return ((HTMLTableRowElementImpl *)impl)->sectionRowIndex();
+}
+
+void HTMLTableRowElement::setSectionRowIndex( long /*_sectionRowIndex*/ )
+{
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+}
+
+HTMLCollection HTMLTableRowElement::cells() const
+{
+ if(!impl) return HTMLCollection();
+ return HTMLCollection(impl, HTMLCollectionImpl::TR_CELLS);
+}
+
+void HTMLTableRowElement::setCells( const HTMLCollection & /*_cells*/ )
+{
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
+}
+
+DOMString HTMLTableRowElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableRowElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+DOMString HTMLTableRowElement::bgColor() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_BGCOLOR);
+}
+
+void HTMLTableRowElement::setBgColor( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_BGCOLOR, value);
+}
+
+DOMString HTMLTableRowElement::ch() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAR);
+}
+
+void HTMLTableRowElement::setCh( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAR, value);
+}
+
+DOMString HTMLTableRowElement::chOff() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAROFF);
+}
+
+void HTMLTableRowElement::setChOff( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAROFF, value);
+}
+
+DOMString HTMLTableRowElement::vAlign() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_VALIGN);
+}
+
+void HTMLTableRowElement::setVAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_VALIGN, value);
+}
+
+HTMLElement HTMLTableRowElement::insertCell( long index )
+{
+ if(!impl) return 0;
+ int exceptioncode = 0;
+ HTMLElementImpl* ret = ((HTMLTableRowElementImpl *)impl)->insertCell( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+ return ret;
+}
+
+void HTMLTableRowElement::deleteCell( long index )
+{
+ int exceptioncode = 0;
+ if(impl)
+ ((HTMLTableRowElementImpl *)impl)->deleteCell( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+}
+
+// --------------------------------------------------------------------------
+
+HTMLTableSectionElement::HTMLTableSectionElement() : HTMLElement()
+{
+}
+
+HTMLTableSectionElement::HTMLTableSectionElement(const HTMLTableSectionElement &other) : HTMLElement(other)
+{
+}
+
+HTMLTableSectionElement::HTMLTableSectionElement(HTMLTableSectionElementImpl *impl) : HTMLElement(impl)
+{
+}
+
+HTMLTableSectionElement &HTMLTableSectionElement::operator = (const Node &other)
+{
+ if(other.elementId() != ID_TBODY &&
+ other.elementId() != ID_THEAD &&
+ other.elementId() != ID_TFOOT )
+ {
+ if ( impl ) impl->deref();
+ impl = 0;
+ } else {
+ Node::operator = (other);
+ }
+ return *this;
+}
+
+HTMLTableSectionElement &HTMLTableSectionElement::operator = (const HTMLTableSectionElement &other)
+{
+ HTMLElement::operator = (other);
+ return *this;
+}
+
+HTMLTableSectionElement::~HTMLTableSectionElement()
+{
+}
+
+DOMString HTMLTableSectionElement::align() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_ALIGN);
+}
+
+void HTMLTableSectionElement::setAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN, value);
+}
+
+DOMString HTMLTableSectionElement::ch() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAR);
+}
+
+void HTMLTableSectionElement::setCh( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAR, value);
+}
+
+DOMString HTMLTableSectionElement::chOff() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_CHAROFF);
+}
+
+void HTMLTableSectionElement::setChOff( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_CHAROFF, value);
+}
+
+DOMString HTMLTableSectionElement::vAlign() const
+{
+ if(!impl) return DOMString();
+ return ((ElementImpl *)impl)->getAttribute(ATTR_VALIGN);
+}
+
+void HTMLTableSectionElement::setVAlign( const DOMString &value )
+{
+ if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_VALIGN, value);
+}
+
+HTMLCollection HTMLTableSectionElement::rows() const
+{
+ if(!impl) return HTMLCollection();
+ return HTMLCollection(impl, HTMLCollectionImpl::TSECTION_ROWS);
+}
+
+HTMLElement HTMLTableSectionElement::insertRow( long index )
+{
+ if(!impl) return 0;
+ int exceptioncode = 0;
+ HTMLElementImpl* ret = ((HTMLTableSectionElementImpl *)impl)->insertRow( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+ return ret;
+}
+
+void HTMLTableSectionElement::deleteRow( long index )
+{
+ int exceptioncode = 0;
+ if(impl)
+ ((HTMLTableSectionElementImpl *)impl)->deleteRow( index, exceptioncode );
+ if (exceptioncode)
+ throw DOMException(exceptioncode);
+}
+