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

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

?? parserengine.cpp

?? This software aims to create an applet and panel tools to manage a wireless interface card, such as
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
// ParserEngine.cpp
//
// $Id: //poco/Main/XML/src/ParserEngine.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 "XML/ParserEngine.h"
#include "XML/NamespaceStrategy.h"
#include "XML/XMLException.h"
#include "SAX/EntityResolver.h"
#include "SAX/EntityResolverImpl.h"
#include "SAX/DTDHandler.h"
#include "SAX/DeclHandler.h"
#include "SAX/ContentHandler.h"
#include "SAX/LexicalHandler.h"
#include "SAX/ErrorHandler.h"
#include "SAX/InputSource.h"
#include "SAX/Locator.h"
#include "SAX/LocatorImpl.h"
#include "SAX/SAXException.h"
#include "Foundation/URI.h"
#include <string.h>


using Foundation::URI;
using Foundation::TextEncoding;


XML_BEGIN


class ContextLocator: public Locator
{
public:
	ContextLocator(XML_Parser parser, const XMLString& publicId, const XMLString& systemId):
		_parser(parser),
		_publicId(publicId),
		_systemId(systemId)
	{
	}
		
	~ContextLocator()
	{
	}
		
	XMLString getPublicId() const
	{
		return _publicId;
	}
		
	XMLString getSystemId() const
	{
		return _systemId;
	}

	int getLineNumber() const
	{
		return XML_GetCurrentLineNumber(_parser);
	}
		
	int getColumnNumber() const
	{
		return XML_GetCurrentColumnNumber(_parser);
	}
		
private:
	XML_Parser _parser;
	XMLString  _publicId;
	XMLString  _systemId;
};


const int ParserEngine::PARSE_BUFFER_SIZE = 4096;
const XMLString ParserEngine::EMPTY_STRING;


ParserEngine::ParserEngine():
	_parser(0),
	_pBuffer(0),
	_encodingSpecified(false),
	_expandInternalEntities(true),
	_externalGeneralEntities(false),
	_externalParameterEntities(false),
	_pNamespaceStrategy(new NoNamespacesStrategy()),
	_pEntityResolver(0),
	_pDTDHandler(0),
	_pDeclHandler(0),
	_pContentHandler(0),
	_pLexicalHandler(0),
	_pErrorHandler(0)
{
}


ParserEngine::ParserEngine(const XMLString& encoding):
	_parser(0),
	_pBuffer(0),
	_encodingSpecified(true),
	_encoding(encoding),
	_expandInternalEntities(true),
	_externalGeneralEntities(false),
	_externalParameterEntities(false),
	_pNamespaceStrategy(new NoNamespacesStrategy()),
	_pEntityResolver(0),
	_pDTDHandler(0),
	_pDeclHandler(0),
	_pContentHandler(0),
	_pLexicalHandler(0),
	_pErrorHandler(0)
{
}


ParserEngine::~ParserEngine()
{
	resetContext();
	if (_parser) XML_ParserFree(_parser);
	delete [] _pBuffer;
	delete _pNamespaceStrategy;
}


void ParserEngine::setEncoding(const XMLString& encoding)
{
	_encoding          = encoding;
	_encodingSpecified = true;
}


void ParserEngine::addEncoding(const XMLString& name, TextEncoding* pEncoding)
{
	poco_check_ptr (pEncoding);

	if (_encodings.find(name) == _encodings.end())
		_encodings[name] = pEncoding;
	else
		throw XMLException("Encoding already defined");	
}


void ParserEngine::setNamespaceStrategy(NamespaceStrategy* pStrategy)
{
	poco_check_ptr (pStrategy);
	
	delete _pNamespaceStrategy;
	_pNamespaceStrategy = pStrategy;
}


void ParserEngine::setExpandInternalEntities(bool flag)
{
	_expandInternalEntities = flag;
}


void ParserEngine::setExternalGeneralEntities(bool flag)
{
	_externalGeneralEntities = flag;
}


void ParserEngine::setExternalParameterEntities(bool flag)
{
	_externalParameterEntities = flag;
}


void ParserEngine::setEntityResolver(EntityResolver* pResolver)
{
	_pEntityResolver = pResolver;
}


void ParserEngine::setDTDHandler(DTDHandler* pDTDHandler)
{
	_pDTDHandler = pDTDHandler;
}


void ParserEngine::setDeclHandler(DeclHandler* pDeclHandler)
{
	_pDeclHandler = pDeclHandler;
}


void ParserEngine::setContentHandler(ContentHandler* pContentHandler)
{
	_pContentHandler = pContentHandler;
}


void ParserEngine::setLexicalHandler(LexicalHandler* pLexicalHandler)
{
	_pLexicalHandler = pLexicalHandler;
}


void ParserEngine::setErrorHandler(ErrorHandler* pErrorHandler)
{
	_pErrorHandler = pErrorHandler;
}


void ParserEngine::parse(InputSource* pInputSource)
{
	init();
	resetContext();
	pushContext(_parser, pInputSource);
	if (_pContentHandler) _pContentHandler->setDocumentLocator(this);
	if (_pContentHandler) _pContentHandler->startDocument();
	if (pInputSource->getCharacterStream())
		parseCharInputStream(*pInputSource->getCharacterStream());
	else if (pInputSource->getByteStream())
		parseByteInputStream(*pInputSource->getByteStream());
	else throw XMLException("Input source has no stream");
	if (_pContentHandler) _pContentHandler->endDocument();
	popContext();
}


void ParserEngine::parseByteInputStream(XMLByteInputStream& istr)
{
	istr.read(_pBuffer, PARSE_BUFFER_SIZE);
	int n = istr.gcount();
	while (n > 0)
	{
		if (!XML_Parse(_parser, _pBuffer, n, 0))
			handleError(XML_GetErrorCode(_parser));
		if (istr.good())
		{
			istr.read(_pBuffer, PARSE_BUFFER_SIZE);
			n = istr.gcount();
		}
		else n = 0;
	}
	if (!XML_Parse(_parser, _pBuffer, 0, 1))
		handleError(XML_GetErrorCode(_parser));
}


void ParserEngine::parseCharInputStream(XMLCharInputStream& istr)
{
	istr.read(reinterpret_cast<XMLChar*>(_pBuffer), PARSE_BUFFER_SIZE/sizeof(XMLChar));
	int n = istr.gcount();
	while (n > 0)
	{
		if (!XML_Parse(_parser, _pBuffer, n*sizeof(XMLChar), 0))
			handleError(XML_GetErrorCode(_parser));
		if (istr.good())
		{
			istr.read(reinterpret_cast<XMLChar*>(_pBuffer), PARSE_BUFFER_SIZE/sizeof(XMLChar));
			n = istr.gcount();
		}
		else n = 0;
	}
	if (!XML_Parse(_parser, _pBuffer, 0, 1))
		handleError(XML_GetErrorCode(_parser));
}


void ParserEngine::parseExternal(XML_Parser extParser, InputSource* pInputSource)
{
	pushContext(extParser, pInputSource);
	if (pInputSource->getCharacterStream())
		parseExternalCharInputStream(extParser, *pInputSource->getCharacterStream());
	else if (pInputSource->getByteStream())
		parseExternalByteInputStream(extParser, *pInputSource->getByteStream());
	else throw XMLException("Input source has no stream");
	popContext();
}


void ParserEngine::parseExternalByteInputStream(XML_Parser extParser, XMLByteInputStream& istr)
{
	char *pBuffer = new char[PARSE_BUFFER_SIZE];
	try
	{
		istr.read(pBuffer, PARSE_BUFFER_SIZE);
		int n = istr.gcount();
		while (n > 0)
		{
			if (!XML_Parse(extParser, pBuffer, n, 0))
				handleError(XML_GetErrorCode(extParser));
			if (istr.good())
			{
				istr.read(pBuffer, PARSE_BUFFER_SIZE);
				n = istr.gcount();
			} 
			else n = 0;
		}
		if (!XML_Parse(extParser, pBuffer, 0, 1))
			handleError(XML_GetErrorCode(extParser));
	}
	catch (...)
	{
		delete [] pBuffer;
		throw;
	}
	delete [] pBuffer;
}


void ParserEngine::parseExternalCharInputStream(XML_Parser extParser, XMLCharInputStream& istr)
{
	XMLChar *pBuffer = new XMLChar[PARSE_BUFFER_SIZE/sizeof(XMLChar)];
	try
	{
		istr.read(pBuffer, PARSE_BUFFER_SIZE/sizeof(XMLChar));
		int n = istr.gcount();
		while (n > 0)
		{
			if (!XML_Parse(extParser, reinterpret_cast<char*>(pBuffer), n*sizeof(XMLChar), 0))
				handleError(XML_GetErrorCode(extParser));
			if (istr.good())
			{
				istr.read(pBuffer, PARSE_BUFFER_SIZE/sizeof(XMLChar));
				n = istr.gcount();
			} 
			else n = 0;
		}
		if (!XML_Parse(extParser, reinterpret_cast<char*>(pBuffer), 0, 1))
			handleError(XML_GetErrorCode(extParser));
	}
	catch (...)
	{
		delete [] pBuffer;
		throw;
	}
	delete [] pBuffer;
}


XMLString ParserEngine::getPublicId() const
{
	return locator().getPublicId();
}


XMLString ParserEngine::getSystemId() const
{
	return locator().getSystemId();
}


int ParserEngine::getLineNumber() const
{
	return locator().getLineNumber();
}


int ParserEngine::getColumnNumber() const
{
	return locator().getColumnNumber();
}


const Locator& ParserEngine::locator() const
{
	static LocatorImpl nullLocator;
	if (_context.empty())
		return nullLocator;
	else
		return *_context.back();
}


void ParserEngine::init()
{
	if (_parser)
		XML_ParserFree(_parser);

	if (!_pBuffer)
		_pBuffer  = new char[PARSE_BUFFER_SIZE];

	if (dynamic_cast<NoNamespacePrefixesStrategy*>(_pNamespaceStrategy))
	{
		_parser = XML_ParserCreateNS(_encodingSpecified ? _encoding.c_str() : 0, '\t');
		XML_SetNamespaceDeclHandler(_parser, handleStartNamespaceDecl, handleEndNamespaceDecl);
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产农村妇女精品| 一区二区三区高清| 天堂午夜影视日韩欧美一区二区| 国产91综合网| 国产精品成人免费在线| 91小视频在线观看| 天天综合色天天| 久久综合视频网| 色诱视频网站一区| 日本中文在线一区| 久久久亚洲精华液精华液精华液| 成人精品国产福利| 丝袜亚洲精品中文字幕一区| 久久婷婷国产综合精品青草| 99国产精品99久久久久久| 首页国产欧美日韩丝袜| 国产免费成人在线视频| 欧美日韩一区不卡| 国产99久久久久久免费看农村| 亚洲另类色综合网站| 精品国产精品一区二区夜夜嗨| 成人短视频下载| 卡一卡二国产精品 | 久久一二三国产| 在线观看免费成人| 99国产麻豆精品| 九九精品视频在线看| 亚洲曰韩产成在线| 国产精品乱人伦| 欧美成人伊人久久综合网| 欧美亚洲日本国产| 丁香天五香天堂综合| 激情综合一区二区三区| 成人午夜视频在线观看| 日本人妖一区二区| 一二三区精品福利视频| 国产精品免费久久| 欧美va天堂va视频va在线| 欧美午夜精品久久久久久孕妇 | 国产精品国产三级国产普通话99| www.欧美.com| 日本伊人色综合网| 日韩中文字幕区一区有砖一区| 中文字幕在线观看不卡| 国产日韩三级在线| 久久网站最新地址| 欧美哺乳videos| 91精品免费在线| 精品久久人人做人人爽| 日韩一区二区在线观看视频| 日韩一区二区三区精品视频| 欧美片在线播放| 欧美一区二区三区系列电影| 欧美久久久久久久久| 日韩亚洲欧美中文三级| 91精品国产品国语在线不卡| 欧美一区二区久久久| 91精品久久久久久蜜臀| 欧美一级精品在线| 精品日产卡一卡二卡麻豆| 久久久www免费人成精品| 久久蜜臀中文字幕| 中文在线免费一区三区高中清不卡| 久久精品欧美一区二区三区不卡| 国产欧美精品一区二区色综合| 欧美国产精品中文字幕| 亚洲黄色av一区| 蜜桃视频一区二区三区| 国产·精品毛片| 欧美亚洲国产一区二区三区 | 欧美一级在线观看| 2020国产精品自拍| 日韩美女视频19| 天天综合天天做天天综合| 国产精品一区二区久久不卡| 色婷婷av一区二区三区之一色屋| 7777女厕盗摄久久久| 久久新电视剧免费观看| 一区二区三区精品久久久| 久久精品久久99精品久久| 不卡av电影在线播放| 欧美另类z0zxhd电影| 国产亚洲精品bt天堂精选| 国产欧美精品一区aⅴ影院| 日韩欧美在线1卡| 亚洲另类色综合网站| 国产真实精品久久二三区| 在线免费观看不卡av| 国产午夜亚洲精品理论片色戒| 亚洲一区在线看| 国产成人av电影在线| 欧美一级久久久久久久大片| 亚洲免费色视频| 99精品视频一区| 久久久久亚洲蜜桃| 蜜桃精品视频在线| 欧美视频一区二区三区在线观看| 国产视频一区二区在线观看| 日本欧美久久久久免费播放网| 91丝袜国产在线播放| 国产欧美一区二区精品性色超碰 | 免费在线看成人av| 欧美日韩www| 亚洲国产欧美另类丝袜| 在线观看日韩电影| 一区二区三区国产精品| 91麻豆视频网站| 亚洲婷婷在线视频| 91麻豆高清视频| 亚洲久草在线视频| 一本大道久久精品懂色aⅴ| 国产精品看片你懂得| a美女胸又www黄视频久久| 国产欧美一区二区精品秋霞影院| 国模娜娜一区二区三区| 久久夜色精品国产噜噜av| 激情久久五月天| 国产日韩欧美一区二区三区综合| 激情图片小说一区| 欧美激情一区二区| 91视频在线观看| 亚洲综合精品久久| 欧美一区二区三区不卡| 国产一区二区日韩精品| 中文一区在线播放| 欧美吞精做爰啪啪高潮| 日本成人在线一区| 久久久蜜臀国产一区二区| av在线不卡观看免费观看| 一区二区三区久久久| 5月丁香婷婷综合| 日韩国产欧美一区二区三区| 97精品久久久久中文字幕 | 色视频一区二区| 日韩高清不卡在线| 国产亚洲欧美在线| 在线观看日韩国产| 国产精品羞羞答答xxdd| 亚洲人一二三区| 日韩三级在线免费观看| 国产精品亚洲第一区在线暖暖韩国 | 久久精品国内一区二区三区| 国产精品福利av| 日韩写真欧美这视频| 99久久夜色精品国产网站| 奇米综合一区二区三区精品视频| 国产精品美日韩| 日韩免费性生活视频播放| 99热精品一区二区| 美国毛片一区二区| 亚洲国产精品久久不卡毛片 | 91蝌蚪国产九色| 国内精品视频666| 亚洲成人一区二区| 中文字幕亚洲欧美在线不卡| 日韩美女一区二区三区四区| 91国产丝袜在线播放| 成人深夜视频在线观看| 韩国中文字幕2020精品| 日韩专区一卡二卡| 一区二区在线电影| 亚洲少妇中出一区| 国产精品久久久久久妇女6080| 欧美一卡二卡三卡四卡| 欧美精品在线一区二区三区| 色综合色狠狠综合色| 99精品久久免费看蜜臀剧情介绍| 国产中文字幕一区| 久久99精品国产麻豆婷婷洗澡| 午夜精品免费在线| 图片区小说区区亚洲影院| 亚洲国产综合在线| 亚洲成人av电影| 三级欧美在线一区| 日韩国产精品91| 免费在线观看成人| 韩国一区二区视频| 成人性生交大合| 色综合天天综合网天天狠天天| 成人精品电影在线观看| 成年人网站91| 精品一区二区三区香蕉蜜桃 | 国产精品久久久久一区二区三区| 国产亚洲成aⅴ人片在线观看| 国产精品无遮挡| 亚洲精品ww久久久久久p站| 亚洲成av人片一区二区| 日本欧洲一区二区| 成+人+亚洲+综合天堂| 91久久免费观看| 精品区一区二区| 中文字幕一区二区不卡| 午夜精品久久久久久久99水蜜桃| 麻豆91在线播放免费| 国产mv日韩mv欧美| 在线观看国产日韩| 久久尤物电影视频在线观看| 国产精品第五页| 麻豆精品视频在线| 91麻豆国产自产在线观看|