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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? treewalker.cpp

?? This software aims to create an applet and panel tools to manage a wireless interface card, such as
?? CPP
字號(hào):
//
// TreeWalker.cpp
//
// $Id: //poco/Main/XML/src/TreeWalker.cpp#5 $
//
// Copyright (c) 2004, Guenter Obiltschnig/Applied Informatics.
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
// 
// 3. Redistributions in any form must be accompanied by information on
//    how to obtain complete source code for this software and any
//    accompanying software that uses this software.  The source code
//    must either be included in the distribution or be available for no
//    more than the cost of distribution plus a nominal fee, and must be
//    freely redistributable under reasonable conditions.  For an
//    executable file, complete source code means the source code for all
//    modules it contains.  It does not include source code for modules or
//    files that typically accompany the major components of the operating
//    system on which the executable file runs.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//


#include "DOM/TreeWalker.h"
#include "DOM/Node.h"
#include "DOM/NodeFilter.h"


XML_BEGIN


TreeWalker::TreeWalker(Node* root, unsigned long whatToShow, NodeFilter* pFilter):
	_pRoot(root),
	_whatToShow(whatToShow),
	_pFilter(pFilter),
	_pCurrent(root)
{
}

	
TreeWalker::TreeWalker(const TreeWalker& walker):
	_pRoot(walker._pRoot),
	_whatToShow(walker._whatToShow),
	_pFilter(walker._pFilter),
	_pCurrent(walker._pCurrent)
{
}

	
TreeWalker& TreeWalker::operator = (const TreeWalker& walker)
{
	if (&walker != this)
	{
		_pRoot      = walker._pRoot;
		_whatToShow = walker._whatToShow;
		_pFilter    = walker._pFilter;
		_pCurrent   = walker._pCurrent;
	}
	return *this;
}

	
TreeWalker::~TreeWalker()
{
}


void TreeWalker::setCurrentNode(Node* pNode)
{
	_pCurrent = pNode;
}


Node* TreeWalker::parentNode()
{
	if (!_pCurrent || _pCurrent == _pRoot) return 0;
	
	Node* pParent = _pCurrent->parentNode();
	while (pParent && pParent != _pRoot && accept(pParent) != NodeFilter::FILTER_ACCEPT)
		pParent = pParent->parentNode();
	if (pParent && accept(pParent) == NodeFilter::FILTER_ACCEPT)
		_pCurrent = pParent;
	else
		pParent = 0;
	return pParent;
}


Node* TreeWalker::firstChild()
{
	if (!_pCurrent) return 0;

	Node* pNode = accept(_pCurrent) != NodeFilter::FILTER_REJECT ? _pCurrent->firstChild() : 0;
	while (pNode && accept(pNode) != NodeFilter::FILTER_ACCEPT)
		pNode = pNode->nextSibling();
	if (pNode)
		_pCurrent = pNode;
	return pNode;
}


Node* TreeWalker::lastChild()
{
	if (!_pCurrent) return 0;

	Node* pNode = accept(_pCurrent) != NodeFilter::FILTER_REJECT ? _pCurrent->lastChild() : 0;
	while (pNode && accept(pNode) != NodeFilter::FILTER_ACCEPT)
		pNode = pNode->previousSibling();
	if (pNode)
		_pCurrent = pNode;
	return pNode;
}


Node* TreeWalker::previousSibling()
{
	if (!_pCurrent) return 0;

	Node* pNode = _pCurrent->previousSibling();
	while (pNode && accept(pNode) != NodeFilter::FILTER_ACCEPT)
		pNode = pNode->previousSibling();
	if (pNode)
		_pCurrent = pNode;
	return pNode;
}


Node* TreeWalker::nextSibling()
{
	if (!_pCurrent) return 0;

	Node* pNode = _pCurrent->nextSibling();
	while (pNode && accept(pNode) != NodeFilter::FILTER_ACCEPT)
		pNode = pNode->nextSibling();
	if (pNode)
		_pCurrent = pNode;
	return pNode;
}


Node* TreeWalker::previousNode()
{
	if (!_pCurrent) return 0;
	
	Node* pPrev = previous(_pCurrent);
	while (pPrev && accept(pPrev) != NodeFilter::FILTER_ACCEPT)
		pPrev = previous(pPrev);
	if (pPrev)
		_pCurrent = pPrev;
	return pPrev;
}


Node* TreeWalker::nextNode()
{
	if (!_pCurrent) return 0;

	Node* pNext = next(_pCurrent);
	while (pNext && accept(pNext) != NodeFilter::FILTER_ACCEPT)
		pNext = next(pNext);
	if (pNext)
		_pCurrent = pNext;
	return pNext;
}


int TreeWalker::accept(Node* pNode) const
{
	bool accept = false;
	switch (pNode->nodeType())
	{
	case Node::ELEMENT_NODE: 
		accept = (_whatToShow & NodeFilter::SHOW_ELEMENT) != 0; break;
	case Node::ATTRIBUTE_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_ATTRIBUTE) != 0; break; 
	case Node::TEXT_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_TEXT) != 0; break; 
	case Node::CDATA_SECTION_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_CDATA_SECTION) != 0; break; 
	case Node::ENTITY_REFERENCE_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_ENTITY_REFERENCE) != 0; break; 
	case Node::ENTITY_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_ENTITY) != 0; break; 
	case Node::PROCESSING_INSTRUCTION_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_PROCESSING_INSTRUCTION) != 0; break; 
	case Node::COMMENT_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_COMMENT) != 0; break; 
	case Node::DOCUMENT_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_DOCUMENT) != 0; break; 
	case Node::DOCUMENT_TYPE_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_DOCUMENT_TYPE) != 0; break; 
	case Node::DOCUMENT_FRAGMENT_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_DOCUMENT_FRAGMENT) != 0; break; 
	case Node::NOTATION_NODE:
		accept = (_whatToShow & NodeFilter::SHOW_NOTATION) != 0; break; 
	}
	if (accept && _pFilter)
		return _pFilter->acceptNode(pNode);
	else
		return accept ? NodeFilter::FILTER_ACCEPT : NodeFilter::FILTER_REJECT;
}


Node* TreeWalker::next(Node* pNode) const
{
	Node* pNext = accept(pNode) != NodeFilter::FILTER_REJECT ? pNode->firstChild() : 0;
	if (pNext) return pNext;
	pNext = pNode;
	while (pNext && pNext != _pRoot)
	{
		Node* pSibling = pNext->nextSibling();
		if (pSibling) return pSibling;
		pNext = pNext->parentNode();
	}
	return 0;
}


Node* TreeWalker::previous(Node* pNode) const
{
	if (pNode == _pRoot) return 0;
	Node* pPrev = pNode->previousSibling();
	while (pPrev)
	{
		Node* pLastChild = accept(pPrev) != NodeFilter::FILTER_REJECT ? pPrev->lastChild() : 0;
		if (pLastChild)
			pPrev = pLastChild;
		else
			return pPrev;
	}
	return pNode->parentNode();
}


XML_END

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产网站在线观看| 日韩电影在线一区二区| 热久久久久久久| 欧美色图免费看| 亚洲一级在线观看| 欧美日韩一区小说| 日av在线不卡| 亚洲国产精品99久久久久久久久 | 国产精品天天摸av网| 成人午夜视频在线| 综合久久一区二区三区| 色狠狠桃花综合| 日韩中文字幕亚洲一区二区va在线| 欧美日韩精品综合在线| 国产成人av一区二区三区在线观看| 亚洲444eee在线观看| 国产精品视频一二三| 69堂国产成人免费视频| 粉嫩绯色av一区二区在线观看 | 欧美日韩国产综合久久| 99视频国产精品| 亚洲精品一区在线观看| 成人av动漫网站| 午夜精品在线看| 亚洲视频一二三区| 精品少妇一区二区三区免费观看 | 成人在线一区二区三区| 亚洲高清不卡在线| 欧美经典一区二区三区| 欧美在线免费观看亚洲| 国产传媒欧美日韩成人| 五月天久久比比资源色| 一区在线播放视频| 久久久久久久久蜜桃| 欧美一级电影网站| 日韩一区二区在线观看| 欧美亚洲自拍偷拍| 99久久久精品| 丰满少妇在线播放bd日韩电影| 日韩综合小视频| 一色桃子久久精品亚洲| 国产精品理论片在线观看| 欧美激情一区在线| 日本一二三不卡| 中文字幕一区二区三区色视频| 久久精品日产第一区二区三区高清版| 精品国产污网站| 久久久亚洲精品石原莉奈| 久久综合久久鬼色| 国产亚洲欧美激情| 国产精品国产三级国产普通话99 | 欧美久久久久久久久久| 欧美精品三级在线观看| 欧美一级淫片007| 国产女主播视频一区二区| 国产精品成人在线观看| 亚洲激情校园春色| 久久久99精品久久| 成人av小说网| 91免费看视频| 欧美一区二区久久| 中文字幕欧美日韩一区| 中文字幕中文字幕中文字幕亚洲无线| 亚洲免费观看高清| 日韩精品国产精品| 9人人澡人人爽人人精品| 在线播放/欧美激情| 夜夜精品浪潮av一区二区三区| 美女视频黄免费的久久| 欧美一区欧美二区| 日韩精品一级二级| 欧美一区二区国产| 免费观看一级欧美片| 极品销魂美女一区二区三区| 色综合天天性综合| 亚洲人成电影网站色mp4| 亚洲欧美偷拍另类a∨色屁股| 2024国产精品| 国产色产综合产在线视频| 午夜精品久久久久久久蜜桃app| 不卡视频在线看| 国产日本一区二区| 成人视屏免费看| 国产精品蜜臀av| 99精品欧美一区二区三区综合在线| 精品国产免费一区二区三区香蕉| 久久电影国产免费久久电影| 日韩区在线观看| 国产成人免费在线视频| 久久噜噜亚洲综合| 99久久综合狠狠综合久久| 亚洲一区免费在线观看| 日韩一区二区视频在线观看| 国产麻豆视频一区二区| 经典三级一区二区| 欧美性极品少妇| 狠狠色丁香久久婷婷综合_中| 国产午夜精品久久久久久久| 成人精品鲁一区一区二区| 亚洲在线中文字幕| 国产夜色精品一区二区av| 日本久久一区二区三区| 精品午夜久久福利影院| 一区二区三区在线视频免费| 欧美成人video| 91久久一区二区| 国产精品911| 美国十次综合导航| 亚洲情趣在线观看| 久久视频一区二区| 欧美蜜桃一区二区三区| jlzzjlzz国产精品久久| 视频一区视频二区中文字幕| 一本大道久久a久久精二百| 亚洲五月六月丁香激情| 久久精品国产77777蜜臀| 欧美色图激情小说| 日韩高清在线不卡| 国产偷国产偷精品高清尤物| 97久久超碰国产精品| 亚洲综合丝袜美腿| 久久久www免费人成精品| 91丨porny丨中文| 亚洲激情六月丁香| 精品美女被调教视频大全网站| 成人性生交大片免费| 日韩电影免费在线看| 国产免费观看久久| 欧美一区二区视频网站| 精品一区二区三区在线视频| 成人18视频日本| 成人性生交大片免费看视频在线| 亚洲午夜在线观看视频在线| 欧美一级淫片007| 欧美视频中文字幕| 色综合久久久久综合| 6080午夜不卡| 久久精品一二三| 亚洲一区二区3| 精品午夜一区二区三区在线观看| av动漫一区二区| 这里只有精品免费| 中国色在线观看另类| 综合久久给合久久狠狠狠97色 | 欧美国产一区在线| 一级做a爱片久久| 成人av资源站| 欧美一卡二卡在线| 国产精品国产三级国产aⅴ无密码| 亚洲精品成人精品456| 日本成人中文字幕在线视频| 国产一区福利在线| 欧美日韩久久一区| 中文字幕精品三区| 久久爱www久久做| 欧美天堂亚洲电影院在线播放| 欧美一级爆毛片| 亚洲福中文字幕伊人影院| 国产成人aaa| 欧美v日韩v国产v| 亚洲一区二区三区在线播放| 国产suv精品一区二区6| 日韩欧美一区电影| 亚洲aaa精品| 欧美在线小视频| 一区二区三区自拍| av在线这里只有精品| 国产清纯美女被跳蛋高潮一区二区久久w| 一级特黄大欧美久久久| 91年精品国产| 亚洲人成在线播放网站岛国| 国产成人在线观看| 国产性色一区二区| 久久er99精品| 久久精品一区二区三区不卡| 奇米一区二区三区av| 欧美欧美欧美欧美首页| 日本亚洲免费观看| 欧美va亚洲va在线观看蝴蝶网| 精品一区二区三区在线播放 | 欧美色老头old∨ideo| 亚洲国产综合在线| 欧美精品日韩一区| 久久99精品久久久| 久久久一区二区三区捆绑**| 成人性视频网站| 日韩理论在线观看| 欧美精品一区二区在线播放 | 美女精品一区二区| 国产网红主播福利一区二区| 成人18视频日本| 一二三区精品视频| 欧美主播一区二区三区美女| 亚洲午夜三级在线| 精品成人一区二区三区四区| 成人av网站在线| 日韩av电影免费观看高清完整版| 欧美本精品男人aⅴ天堂| gogo大胆日本视频一区| 亚洲超碰精品一区二区|