本文整理汇总了C++中NodeImpl::insertBefore方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeImpl::insertBefore方法的具体用法?C++ NodeImpl::insertBefore怎么用?C++ NodeImpl::insertBefore使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeImpl
的用法示例。
在下文中一共展示了NodeImpl::insertBefore方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DOM_DOMException
TextImpl *TextImpl::splitText(unsigned int offset)
{
if (isReadOnly())
{
throw DOM_DOMException(
DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);
}
unsigned int len = data.length();
if (offset > len)
throw DOM_DOMException(DOM_DOMException::INDEX_SIZE_ERR, null);
TextImpl *newText =
(TextImpl *) getOwnerDocument()->createTextNode(
data.substringData(offset, data.length() - offset));
NodeImpl *parent = getParentNode();
if (parent != null)
parent->insertBefore(newText, getNextSibling());
data = data.substringData(0, offset);
if (this->getOwnerDocument() != null) {
typedef RefVectorOf<RangeImpl> RangeImpls;
RangeImpls* ranges = this->getOwnerDocument()->getRanges();
if (ranges != null) {
unsigned int sz = ranges->size();
if (sz != 0) {
for (unsigned int i =0; i<sz; i++) {
ranges->elementAt(i)->updateSplitInfo( this, newText, offset);
}
}
}
}
return newText;
};
示例2: insertNode
//.........这里部分代码省略.........
handled = true; // ...and start a new one
break;
case ID_TEXT:
{
TextImpl *t = static_cast<TextImpl *>(n);
if (t->containsOnlyWhitespace())
return false;
DOMStringImpl *i = t->string();
unsigned int pos = 0;
while(pos < i->l && ( *(i->s+pos) == QChar(' ') ||
*(i->s+pos) == QChar(0xa0))) pos++;
if(pos == i->l)
break;
}
default:
{
NodeImpl *node = current;
NodeImpl *parent = node->parentNode();
NodeImpl *parentparent = parent->parentNode();
if (n->isTextNode() ||
( node->id() == ID_TR &&
( parent->id() == ID_THEAD ||
parent->id() == ID_TBODY ||
parent->id() == ID_TFOOT ) && parentparent->id() == ID_TABLE ) ||
( !checkChild( ID_TR, id ) && ( node->id() == ID_THEAD || node->id() == ID_TBODY || node->id() == ID_TFOOT ) &&
parent->id() == ID_TABLE ))
{
node = (node->id() == ID_TABLE) ? node :
((node->id() == ID_TR) ? parentparent : parent);
NodeImpl *parent = node->parentNode();
int exceptioncode = 0;
parent->insertBefore( n, node, exceptioncode );
if ( exceptioncode ) {
#ifdef PARSER_DEBUG
kdDebug( 6035 ) << "adding content before table failed!" << endl;
#endif
break;
}
if (n->isElementNode() && tagPriority[id] != 0 &&
!flat && endTag[id] != DOM::FORBIDDEN)
{
pushBlock(id, tagPriority[id]);
setCurrent(n);
inStrayTableContent++;
blockStack->strayTableContent = true;
}
return true;
}
if ( current->id() == ID_TR )
e = new HTMLTableCellElementImpl(document, ID_TD);
else if ( current->id() == ID_TABLE )
e = new HTMLTableSectionElementImpl( document, ID_TBODY, true /* implicit */ );
else
e = new HTMLTableRowElementImpl( document );
insertNode(e);
handled = true;
break;
} // end default
} // end switch
break;
case ID_OBJECT:
discard_until = id + ID_CLOSE_TAG;
示例3: insertNode
//.........这里部分代码省略.........
{
case ID_TABLE:
popBlock(ID_TABLE); // end the table
handled = checkChild( current->id(), id);
break;
case ID_TEXT:
{
TextImpl *t = static_cast<TextImpl *>(n);
DOMStringImpl *i = t->string();
unsigned int pos = 0;
while(pos < i->l && ( *(i->s+pos) == QChar(' ') ||
*(i->s+pos) == QChar(0xa0))) pos++;
if(pos == i->l)
break;
}
default:
{
NodeImpl *node = current;
NodeImpl *parent = node->parentNode();
NodeImpl *parentparent = parent->parentNode();
if(( node->id() == ID_TR &&
( parent->id() == ID_THEAD ||
parent->id() == ID_TBODY ||
parent->id() == ID_TFOOT ) && parentparent->id() == ID_TABLE ) ||
( !checkChild( ID_TR, id ) && ( node->id() == ID_THEAD || node->id() == ID_TBODY || node->id() == ID_TFOOT ) &&
parent->id() == ID_TABLE ) )
{
node = ( node->id() == ID_TR ) ? parentparent : parent;
NodeImpl *parent = node->parentNode();
int exceptioncode = 0;
NodeImpl *container = new HTMLGenericElementImpl( document, ID__KONQBLOCK );
parent->insertBefore( container, node, exceptioncode );
if ( exceptioncode ) {
#ifdef PARSER_DEBUG
kdDebug( 6035 ) << "adding anonymous container before table failed!" << endl;
#endif
break;
}
if ( !container->attached() && HTMLWidget )
container->attach();
pushBlock( ID__KONQBLOCK, tagPriority[ID__KONQBLOCK] );
haveKonqBlock = true;
current = container;
handled = true;
break;
}
if ( current->id() == ID_TR )
e = new HTMLTableCellElementImpl(document, ID_TD);
else if ( current->id() == ID_TABLE )
e = new HTMLTableSectionElementImpl( document, ID_TBODY, true /* implicit */ );
else
e = new HTMLTableRowElementImpl( document );
insertNode(e);
handled = true;
break;
} // end default
} // end switch
break;
case ID_OBJECT:
discard_until = id + ID_CLOSE_TAG;
return false;
case ID_UL: