亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
青青草国产精品亚洲专区无| 丰满亚洲少妇av| 亚洲天堂成人在线观看| 欧美不卡在线视频| 色哟哟在线观看一区二区三区| 日本伊人色综合网| 亚洲精品国产精华液| 国产欧美视频一区二区三区| 8x8x8国产精品| 色婷婷av一区二区三区大白胸| 国产最新精品免费| 蜜臀精品久久久久久蜜臀| 有码一区二区三区| 国产亚洲欧美一区在线观看| 欧美一区欧美二区| 精品视频色一区| 在线亚洲一区二区| 91.麻豆视频| 国产一区二区三区在线观看免费| 午夜天堂影视香蕉久久| 成人欧美一区二区三区视频网页 | 色综合天天综合色综合av| 国产精华液一区二区三区| 精品在线亚洲视频| 奇米亚洲午夜久久精品| 天天综合色天天| 亚洲国产欧美在线| 亚洲国产日韩a在线播放| 亚洲自拍偷拍网站| 亚洲一区二区中文在线| 亚洲观看高清完整版在线观看| 亚洲日本在线看| 国产精品伦一区二区三级视频| 国产亚洲va综合人人澡精品| 久久综合色8888| 久久婷婷成人综合色| 26uuu精品一区二区三区四区在线| 日韩一区二区在线免费观看| 日韩欧美www| 精品国精品国产尤物美女| 精品动漫一区二区三区在线观看| 日韩视频在线你懂得| 欧美色图12p| 欧美日韩另类一区| 欧美精选一区二区| 国产精品丝袜91| 中文字幕不卡一区| 中文字幕第一区综合| 中文字幕亚洲区| 亚洲国产综合在线| 水蜜桃久久夜色精品一区的特点| 日本va欧美va瓶| 久久超碰97中文字幕| 国产毛片精品视频| 成人国产一区二区三区精品| 色综合久久久久综合体桃花网| 欧美色涩在线第一页| 日韩一级黄色大片| 日本一区二区电影| 亚洲成人av一区二区| 蜜桃av一区二区三区电影| 国产福利一区二区| 色婷婷国产精品综合在线观看| 91.麻豆视频| 国产日韩欧美综合在线| 一区二区免费看| 久久er99热精品一区二区| 国产91精品一区二区麻豆亚洲| 色综合天天视频在线观看| 欧美日韩精品一区二区天天拍小说 | 日本一区二区动态图| 亚洲精品视频在线观看网站| 日韩专区欧美专区| 高清免费成人av| 欧美三级电影网| 久久综合久久综合久久综合| 亚洲欧美日韩一区二区三区在线观看| 天堂久久一区二区三区| 国产在线播放一区二区三区| 91久久一区二区| 精品久久99ma| 亚洲精品高清视频在线观看| 韩日精品视频一区| 色欧美88888久久久久久影院| 精品少妇一区二区| 亚洲免费观看高清完整版在线| 麻豆视频观看网址久久| 色综合久久久久网| 国产丝袜在线精品| 视频一区二区三区中文字幕| 成人美女在线视频| 欧美一区二区黄色| 亚洲主播在线播放| 成人精品免费网站| 精品美女一区二区三区| 亚洲在线一区二区三区| 欧美精品在线一区二区| 中文字幕一区二区三区在线播放 | 国产乱色国产精品免费视频| 欧美视频在线播放| 国产精品伦一区| 激情综合网最新| 69堂国产成人免费视频| 亚洲免费视频成人| 成人av在线资源网站| 久久中文娱乐网| 麻豆精品国产传媒mv男同| 欧美私模裸体表演在线观看| 中文成人综合网| 国产精品自在欧美一区| 日韩欧美高清一区| 视频一区视频二区在线观看| 91小视频免费观看| 中文字幕一区二区在线播放| 国产jizzjizz一区二区| 久久久久久久久久美女| 激情文学综合网| 亚洲精品在线网站| 精品一区二区三区免费观看 | 一级女性全黄久久生活片免费| 成人深夜视频在线观看| 日本一区二区免费在线| 国产精品综合av一区二区国产馆| 精品乱人伦一区二区三区| 久久精品72免费观看| 日韩色视频在线观看| 日本不卡123| 日韩网站在线看片你懂的| 蜜臀av性久久久久蜜臀aⅴ流畅| 制服丝袜中文字幕一区| 日韩国产在线一| 欧美丰满一区二区免费视频| 天天色综合成人网| 日韩午夜激情免费电影| 美女视频黄频大全不卡视频在线播放| 欧美一卡2卡三卡4卡5免费| 日韩黄色小视频| 欧美不卡一二三| 国产一区二区三区视频在线播放 | 日韩成人免费电影| 在线91免费看| 激情久久五月天| 久久久99精品久久| 成人的网站免费观看| 亚洲视频在线观看一区| 欧美性猛片xxxx免费看久爱| 偷拍日韩校园综合在线| 日韩一区二区三区三四区视频在线观看| av中文字幕不卡| 一片黄亚洲嫩模| 日韩一区二区在线看| 国产一区二区中文字幕| 国产精品天美传媒沈樵| 色妞www精品视频| 天堂影院一区二区| 2022国产精品视频| 91老师国产黑色丝袜在线| 亚洲成人www| 久久综合99re88久久爱| av爱爱亚洲一区| 五月婷婷欧美视频| 精品久久久网站| 波多野结衣精品在线| 亚洲一区欧美一区| 精品国产污网站| 91浏览器在线视频| 免费成人av在线| 国产精品国产a级| 91精品久久久久久久99蜜桃| 国产一区二区三区免费观看| 怡红院av一区二区三区| 日韩无一区二区| 91一区二区三区在线观看| 日韩av二区在线播放| 国产精品网站在线播放| 91精品麻豆日日躁夜夜躁| 国产91精品一区二区麻豆网站 | 欧美精品久久99久久在免费线| 久久电影网电视剧免费观看| 亚洲视频一二三| 精品欧美一区二区在线观看 | 91福利在线导航| 激情综合一区二区三区| 亚洲综合在线观看视频| 久久久久一区二区三区四区| 欧美亚洲综合色| 国产不卡在线播放| 美腿丝袜亚洲综合| 成人欧美一区二区三区1314| 精品奇米国产一区二区三区| 在线观看成人小视频| 成人性生交大片免费看视频在线| 丝袜美腿高跟呻吟高潮一区| 国产精品国产a级| 亚洲视频免费在线| 日韩欧美在线观看一区二区三区| 成人av网站免费| 精品一区二区三区视频在线观看 | 99久久夜色精品国产网站| 美女视频一区在线观看|