亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rangeimpl.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
        return;    }    DOM_Node parent = refNode.getParentNode();    if (parent != null ) // REVIST: what to do if it IS null?    {        fStartContainer = parent;        fEndContainer = parent;        unsigned int i = 0;        for (DOM_Node n = parent.getFirstChild(); n!=null, n!=refNode; n = n.getNextSibling()) {            i++;        }        fStartOffset = i;        fEndOffset = fStartOffset+1;    }}void RangeImpl::selectNodeContents(const DOM_Node& node){    validateNode(node);    fStartContainer = node;    fEndContainer = node;    fStartOffset = 0;    if (node.getNodeType() == DOM_Node::TEXT_NODE ) {        fEndOffset = ((DOM_Text &)node).getLength();        return;    }    DOM_Node first = node.getFirstChild();    if (first == null) {        fEndOffset = 0;        return;    }    unsigned int i = 0;    for (DOM_Node n = first; n!=null; n = n.getNextSibling()) {        i++;    }    fEndOffset = i;}void RangeImpl::surroundContents(DOM_Node& newParent){    if (newParent==null) return;    //check for elimination criteria    if( fDetached) {        throw DOM_DOMException(            DOM_DOMException::INVALID_STATE_ERR, null);    }    if (newParent.getOwnerDocument() !=fDocument) {        throw DOM_DOMException(            DOM_DOMException::WRONG_DOCUMENT_ERR, null);    }    int type = newParent.getNodeType();    if ( !isLegalContainedNode(newParent)        || type == DOM_Node::DOCUMENT_TYPE_NODE)    {        throw DOM_RangeException(            DOM_RangeException::INVALID_NODE_TYPE_ERR, null);    }    DOM_Node root = getCommonAncestorContainer();    DOM_Node realStart = fStartContainer;    DOM_Node realEnd = fEndContainer;    if (fStartContainer.getNodeType() == DOM_Node::TEXT_NODE) {        realStart = fStartContainer.getParentNode();    }    if (fEndContainer.getNodeType() == DOM_Node::TEXT_NODE) {        realEnd = fEndContainer.getParentNode();    }    if (realStart != realEnd) {        throw DOM_RangeException(            DOM_RangeException::BAD_BOUNDARYPOINTS_ERR, null);    }    DOM_DocumentFragment frag = extractContents();    insertNode(newParent);    newParent.appendChild(frag);    selectNode(newParent);}short RangeImpl::compareBoundaryPoints(DOM_Range::CompareHow how, RangeImpl* srcRange) const{    if (fDocument != srcRange->fDocument) {        throw DOM_DOMException(            DOM_DOMException::WRONG_DOCUMENT_ERR, null);    }    if( fDetached) {        throw DOM_DOMException(            DOM_DOMException::INVALID_STATE_ERR, null);    }    DOM_Node pointA, pointB;    int offsetA, offsetB;    switch (how)    {    case (DOM_Range::START_TO_START) :        pointB = srcRange->getStartContainer();        pointA = fStartContainer;        offsetB = srcRange->getStartOffset();        offsetA = fStartOffset;        break;    case (DOM_Range::START_TO_END) :        pointB = srcRange->getStartContainer();        pointA = fEndContainer;        offsetB = srcRange->getStartOffset();        offsetA = fEndOffset;        break;    case (DOM_Range::END_TO_START) :        pointB = srcRange->getEndContainer();        pointA = fStartContainer;        offsetB = srcRange->getEndOffset();        offsetA = fStartOffset;        break;    case (DOM_Range::END_TO_END) :        pointB = srcRange->getEndContainer();        pointA = fEndContainer;        offsetB = srcRange->getEndOffset();        offsetA = fEndOffset;        break;    }    // case 1: same container    if (pointA == pointB) {        if (offsetA < offsetB) return -1; //A before B        if (offsetA == offsetB) return 0; //A equal to B        return 1; // A after B    }    // case 2: Child C of container A is ancestor of B    for (DOM_Node node = pointA.getFirstChild(); node != null; node=node.getNextSibling()) {        if (isAncestorOf(node, pointB)) {            int index = indexOf(node, pointA);            if (offsetA <=  index) return -1;            return 1;        }    }    // case 3: Child C of container B is ancestor of A    for (DOM_Node nd = pointB.getFirstChild(); nd != null; nd=nd.getNextSibling()) {        if (isAncestorOf(nd, pointA)) {            int index = indexOf(nd, pointB);            if (index < offsetB ) return -1;            return 1; //B strictly before A        }    }    // case 4: preorder traversal of context tree.    DOM_Node ancestor = commonAncestorOf(pointA, pointB);    DOM_Node current = ancestor;    do {        if (current == pointA) return -1;        if (current == pointB) return 1;        current = nextNode(current, true);    }    while (current!=null && current!=ancestor);    return -2; // this should never happen}void RangeImpl:: deleteContents(){    traverseContents(DELETE_CONTENTS);}DOM_DocumentFragment RangeImpl::extractContents(){    checkReadOnly(fStartContainer, fEndContainer, fStartOffset, fEndOffset);    return traverseContents(EXTRACT_CONTENTS);}DOM_DocumentFragment RangeImpl::cloneContents() const{    // cast off const.    return ((RangeImpl *)this)->traverseContents(CLONE_CONTENTS);}void RangeImpl::insertNode(DOM_Node& newNode){    if (newNode == null) return; //don't have to do anything    for (DOM_Node aNode = fStartContainer; aNode!=null; aNode = aNode.getParentNode()) {        if (aNode.fImpl->isReadOnly()) {        throw DOM_DOMException(            DOM_DOMException::NO_MODIFICATION_ALLOWED_ERR, null);    }    }    if (fDocument != newNode.getOwnerDocument()) {        throw DOM_DOMException(            DOM_DOMException::WRONG_DOCUMENT_ERR, null);    }    // Prevent cycles in the tree.    //isKidOK() is not checked here as its taken care by insertBefore() function    if (isAncestorOf( newNode, fStartContainer)) {        throw DOM_DOMException(            DOM_DOMException::HIERARCHY_REQUEST_ERR, null);    }    if( fDetached) {        throw DOM_DOMException(            DOM_DOMException::INVALID_STATE_ERR, null);    }    int type = newNode.getNodeType();    if (type == DOM_Node::ATTRIBUTE_NODE        || type == DOM_Node::ENTITY_NODE        || type == DOM_Node::NOTATION_NODE        || type == DOM_Node::DOCUMENT_NODE)    {        throw DOM_RangeException(            DOM_RangeException::INVALID_NODE_TYPE_ERR, null);    }    DOM_Node parent;    DOM_Node next;    if (fStartContainer.getNodeType() == DOM_Node::TEXT_NODE) {        //set 'parent' and 'next' here        parent = fStartContainer.getParentNode();        //split the text nodes       if (fStartOffset > 0)            ((DOM_Text &)fStartContainer).splitText(fStartOffset);        //update the new start information later. After inserting the first newNode        if (fStartOffset == 0)            next = fStartContainer;        else            next = fStartContainer.getNextSibling();    } // end of text handling    else {        parent = fStartContainer;        next = fStartContainer.getFirstChild();        for(unsigned int i = 0; (i < fStartOffset) && (next != null); i++) {            next=next.getNextSibling();        }    }    if (parent != null) {        if (next != null)            parent.insertBefore(newNode, next);        else            parent.appendChild(newNode);    }}RangeImpl* RangeImpl::cloneRange() const{    if( fDetached) {        throw DOM_DOMException(            DOM_DOMException::INVALID_STATE_ERR, null);    }    RangeImpl* range = ((DocumentImpl*)fDocument.fImpl)->createRange();    range->setStart(fStartContainer, fStartOffset);    range->setEnd(fEndContainer, fEndOffset);    return range;}DOMString RangeImpl::toString() const{    if( fDetached) {        throw DOM_DOMException(            DOM_DOMException::INVALID_STATE_ERR, null);    }    DOM_Node node = fStartContainer;    DOM_Node stopNode = fEndContainer;    DOMString tempString;    if ( (fStartContainer.getNodeType() == DOM_Node::TEXT_NODE)        || (fStartContainer.getNodeType() == DOM_Node::CDATA_SECTION_NODE) ) {        if (fStartContainer == fEndContainer) {            tempString.appendData(fStartContainer.getNodeValue().substringData(fStartOffset, fEndOffset-fStartOffset));            return tempString;        } else {            int length = fStartContainer.getNodeValue().length();            tempString.appendData(fStartContainer.getNodeValue().substringData(fStartOffset, length - fStartOffset));            node = nextNode(node, true);        }    }else { //fStartContainer is not a TextNode        node=node.getFirstChild();        if (fStartOffset>0) { //find a first node within a range, specified by fStartOffset            unsigned int counter = 0;            while (counter<fStartOffset && node!=null) {                node=node.getNextSibling();                counter++;            }        }        if (node == null) {            node = nextNode(fStartContainer,false);        }    }    if ( fEndContainer.getNodeType()!= DOM_Node::TEXT_NODE &&        fEndContainer.getNodeType()!= DOM_Node::CDATA_SECTION_NODE ){        int i=fEndOffset;        stopNode = fEndContainer.getFirstChild();        while( i>0 && stopNode!=null ){            --i;            stopNode = stopNode.getNextSibling();        }        if ( stopNode == null )            stopNode = nextNode( fEndContainer, false );    }    while (node != stopNode) {  //look into all kids of the Range        if (node == null) break;        if (node.getNodeType() == DOM_Node::TEXT_NODE            ||  node.getNodeType() == DOM_Node::CDATA_SECTION_NODE) {            tempString.appendData(node.getNodeValue());        }        node = nextNode(node, true);    }    if (fEndContainer.getNodeType() == DOM_Node::TEXT_NODE        || fEndContainer.getNodeType() == DOM_Node::CDATA_SECTION_NODE) {        tempString.appendData(fEndContainer.getNodeValue().substringData(0,fEndOffset));    }    return tempString;}DOM_Document RangeImpl::getDocument(){    return fDocument;}const DOM_Node RangeImpl::getCommonAncestorContainer() const{     return commonAncestorOf(fStartContainer, fEndContainer);}//---------------------//private functions//---------------------bool RangeImpl::isValidAncestorType(const DOM_Node& node) const{    for (DOM_Node aNode = node; aNode!=null; aNode = aNode.getParentNode()) {        short type = aNode.getNodeType();        if ( type == DOM_Node::ENTITY_NODE            || type == DOM_Node::NOTATION_NODE            || type == DOM_Node::DOCUMENT_TYPE_NODE)            return false;    }    return true;}bool RangeImpl::isAncestorOf(const DOM_Node& a, const DOM_Node& b) {    for (DOM_Node node=b; node != null; node=node.getParentNode()) {        if  (node == a) return true;    }    return false;}bool RangeImpl::hasLegalRootContainer(const DOM_Node& node) const {    if ( node==null )        return false;    DOM_Node rootContainer = node;    for (; rootContainer.getParentNode()!=null; rootContainer = rootContainer.getParentNode())        ;    switch( rootContainer.getNodeType() ) {        case DOM_Node::ATTRIBUTE_NODE:        case DOM_Node::DOCUMENT_NODE:        case DOM_Node::DOCUMENT_FRAGMENT_NODE:        return true;    }    return false;}bool RangeImpl::isLegalContainedNode(const DOM_Node& node ) const {   if ( node==null )       return false;   switch( node.getNodeType() )   {       case DOM_Node::DOCUMENT_NODE:       case DOM_Node::DOCUMENT_FRAGMENT_NODE:       case DOM_Node::ATTRIBUTE_NODE:       case DOM_Node::ENTITY_NODE:       case DOM_Node::NOTATION_NODE:       return false;   }   return true;}unsigned short RangeImpl::indexOf(const DOM_Node& child, const DOM_Node& parent) const{    unsigned short i = 0;    if (child.getParentNode() != parent) return (unsigned short)-1;    for(DOM_Node node = child.getPreviousSibling(); node!= null; node=node.getPreviousSibling()) {        i++;    }    return i;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色录像片| 精品一区二区三区日韩| 久久国产精品色| 日本精品一区二区三区高清| 2023国产精品| 蜜臀久久99精品久久久画质超高清| 国产v日产∨综合v精品视频| 欧美色男人天堂| 国产精品嫩草久久久久| 久久91精品国产91久久小草| 欧美午夜精品久久久久久孕妇| 欧美国产日韩在线观看| 美女网站一区二区| 欧美午夜影院一区| 亚洲一区二区影院| 日本乱人伦aⅴ精品| 中文字幕亚洲一区二区av在线| 精品一区二区免费看| 欧美精品久久99久久在免费线 | 欧美国产乱子伦| 麻豆国产欧美日韩综合精品二区| 日本高清成人免费播放| 中文字幕中文在线不卡住| 国产精品99久久久久久久女警 | 日韩一级大片在线观看| 亚洲成av人在线观看| 色成年激情久久综合| 亚洲人成影院在线观看| 成人av动漫网站| 亚洲日本在线视频观看| 波多野结衣亚洲一区| 国产精品久久久久7777按摩 | 亚洲欧美区自拍先锋| 成人美女视频在线看| 国产精品视频免费| 成人免费av资源| 亚洲欧美乱综合| 欧美日韩一区二区电影| 日韩高清不卡一区二区三区| 欧美一区二区网站| 久久精品国产亚洲一区二区三区| 精品国产三级a在线观看| 激情五月婷婷综合网| 国产亚洲综合av| 色综合久久精品| 亚洲444eee在线观看| 日韩一区二区三区在线观看| 国内成人自拍视频| 日韩毛片视频在线看| 欧美日韩三级在线| 精品一二三四区| 国产精品理论片在线观看| 不卡高清视频专区| 午夜日韩在线观看| 精品日韩99亚洲| jizzjizzjizz欧美| 香蕉成人啪国产精品视频综合网| 日韩欧美自拍偷拍| zzijzzij亚洲日本少妇熟睡| 三级欧美韩日大片在线看| 精品国产麻豆免费人成网站| 99久久国产综合色|国产精品| 亚洲综合一区二区三区| 欧美刺激午夜性久久久久久久| 国产精品一二三区在线| 亚洲福利视频三区| 久久久精品tv| 欧美色偷偷大香| 成人国产精品免费观看动漫 | 亚洲三级久久久| 日韩一区二区三区电影| 99re66热这里只有精品3直播 | va亚洲va日韩不卡在线观看| 亚洲成a人v欧美综合天堂| 国产日产亚洲精品系列| 欧美二区在线观看| caoporn国产精品| 精品一区二区国语对白| 亚洲第一主播视频| 中文字幕一区二区三区色视频| 欧美妇女性影城| 色综合一个色综合| 国产乱码一区二区三区| 天堂av在线一区| 亚洲男女毛片无遮挡| 久久精品免费在线观看| 欧美一级久久久| 日本丰满少妇一区二区三区| 91精品在线免费观看| 成人深夜视频在线观看| 久久99精品国产麻豆婷婷| 亚洲一区二区三区四区在线观看 | 五月天久久比比资源色| 亚洲欧美另类在线| 国产欧美一区二区三区沐欲| 欧美一二三四区在线| 在线观看视频一区| thepron国产精品| 粉嫩av一区二区三区粉嫩| 国产在线不卡一区| 捆绑紧缚一区二区三区视频 | 中国av一区二区三区| 欧美另类z0zxhd电影| 色欧美日韩亚洲| 波多野结衣在线一区| 国产91精品久久久久久久网曝门| 久久精品久久久精品美女| 日韩电影一区二区三区四区| 夜夜操天天操亚洲| 亚洲日本免费电影| 中文字幕亚洲精品在线观看 | 波多野结衣中文字幕一区| 国产九色sp调教91| 国产成人精品www牛牛影视| 狠狠狠色丁香婷婷综合久久五月| 男女男精品网站| 日韩av中文字幕一区二区三区| 午夜视频在线观看一区二区| 色综合久久久久网| 91久久精品国产91性色tv | 一区二区三区久久| 亚洲精品一二三四区| 一区二区三区四区在线播放| 亚洲美女区一区| 偷拍与自拍一区| 久久国产精品色婷婷| 国产成人精品亚洲午夜麻豆| 99国内精品久久| 欧美视频在线观看一区| 欧美日韩不卡一区| 日韩网站在线看片你懂的| 精品国产凹凸成av人网站| 久久精品视频网| 136国产福利精品导航| 亚洲免费看黄网站| 日韩高清欧美激情| 国产盗摄一区二区三区| 国产成人av在线影院| 91免费看片在线观看| 欧美人体做爰大胆视频| 精品国产髙清在线看国产毛片| 9191精品国产综合久久久久久 | 欧美日韩三级在线| 欧美一区二区三区公司| 国产亚洲精品免费| 亚洲精品五月天| 免费观看成人鲁鲁鲁鲁鲁视频| 国产一区二区视频在线| 一道本成人在线| 欧美成人一区二区三区在线观看 | 欧美大尺度电影在线| 国产精品视频第一区| 午夜影院久久久| 风间由美一区二区三区在线观看 | 2欧美一区二区三区在线观看视频| 国产三级一区二区| 亚洲一区在线看| 国产99精品国产| 欧美理论片在线| 亚洲欧洲一区二区在线播放| 青青草伊人久久| 色婷婷综合久久久中文一区二区| 日韩亚洲欧美高清| 亚洲欧美在线视频观看| 美女国产一区二区三区| www.久久久久久久久| 精品国产电影一区二区| 亚洲成人你懂的| jlzzjlzz国产精品久久| 欧美精品一区二区三区蜜桃视频 | 亚洲最大成人综合| 国产一区二区按摩在线观看| 欧美日产在线观看| 18涩涩午夜精品.www| 国产激情一区二区三区| 欧美刺激脚交jootjob| 亚洲成人免费在线观看| 色婷婷综合久色| 成人欧美一区二区三区白人| 国产九色sp调教91| 精品国产免费人成在线观看| 日韩电影在线观看一区| 欧美日韩精品免费观看视频| 成人欧美一区二区三区白人| 国产91对白在线观看九色| 欧美videofree性高清杂交| 天堂av在线一区| 7777精品伊人久久久大香线蕉超级流畅| 国产精品国产三级国产普通话蜜臀 | 亚洲国产视频一区二区| 99riav一区二区三区| 国产人成一区二区三区影院| 精品中文字幕一区二区| 欧美二区三区的天堂| 日本中文在线一区| 欧美一区二区三区爱爱| 免费在线观看不卡| 日韩一区二区电影| 国产在线精品一区二区不卡了 | 美女性感视频久久|