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

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

?? element.cpp

?? J-Alice是一個用C++實現的Ailcebot的克隆。它可以做為一個mini-http服務器在控制臺或irc聊天。目前
?? CPP
字號:
/**
 * Element - An XML Element
 *
 * @author	Jonathan Roewen
 */
#include "Element.h"
#include "Utils.h"
#include "Match.h"
#include "Memory.h"

#include <iostream>
#include <string.h>

using namespace std;

Element::Element(const string &name = ""):text(""),tname(""),nspace("") {
	if (!name.empty()) {
		setName(name);
	}
	child = next = last = NULL;
}

Element::~Element() {
}

string Element::getTagname() const {
	return tname;
}

string Element::getNamespace() const {
	return nspace;
}

string Element::getText(bool resolve) const {
	if (!resolve) {
		return text;
	} else {
		return resolveEntities(text);
	}
}
//	add bool
string Element::getAttribute(const string &key) const {
	map<string, string>::const_iterator itr = attributes.find(key);
	if (itr == attributes.end()) {
		return "";
	}
	return resolveEntities((*itr).second);
}
//	add bool
string Element::getAttribute(const string &key, Match *m, const string &id) {
	map<string, string>::const_iterator itr = attributes.find(key);
	if (itr == attributes.end()) {
		return "";
	}
	return resolveEntities(parse((*itr).second, m, id));
}

void Element::setName(const string &str) {
	string::size_type ix = str.find(':');
	if (ix != string::npos) {
		setNamespace(str.substr(0, ix));
		setTagname(str.substr(ix + 1));
	} else {
		setTagname(str);
		setNamespace("");
	}
}

void Element::setTagname(const string &str) {
	tname = get_string(str);
}

void Element::setNamespace(const string &str) {
	nspace = get_string(str);
}

void Element::setText(const string &str) {
	text = str;
}

void Element::setAttribute(const string &key, const string &value) {
	attributes[key] = value;
}

bool Element::hasNamespace() const {
	return strlen(nspace)!=0;
}

bool Element::hasAttributes() const {
	return !attributes.empty();
}

bool Element::hasChildren() const {
	return !(child == NULL);
}

PElement Element::getChild() const {
	return child;
}

PElement Element::getChild(const string &tagname) const {
	PElement ch = child;
	while (ch != NULL) {
		if (ch->tname == tagname) {
			return ch;
		}
		ch = ch->next;
	}
	return PElement(NULL);
}

PElement Element::getNextSibling() const {
	return next;
}

void Element::addChild(PElement element) {
	if (child == NULL) {
		child = element;
		last = child;
	} else {
		last->next = element;
		last = last->next;
	}
}

void Element::getChildren(velement *ve) {
	PElement ch = child;
	while (ch != NULL) {
		ve->push_back(ch);
	}
}

void Element::getChildren(const string &tagname, velement *ve) {
	PElement ch = child;
	while (ch != NULL) {
		if (ch->tname == tagname) {
			ve->push_back(ch);
		}
		ch = ch->next;
	}
}

map<string, string> Element::getAttributes() const {
	return attributes;
}

string Element::resolveEntities(const string &input) {
	string output = input;
	int ix = output.find("&");
	int iy = output.find(";", ix);
	
	while (ix != string::npos && iy != string::npos) {
		string head = output.substr(0, ix);
		string tail = output.substr(iy + 1);
		string mid = output.substr(ix, iy + 1 - ix);
		if (mid == "&lt;") {
			output = head + "<" + tail;
			iy -= 3;
		}
		else if (mid == "&gt;") {
			output = head + ">" + tail;
			iy -= 3;
		}
		else if (mid == "&amp;") {
			output = head + "&" + tail;
			iy -= 4;
		}
		else if (mid == "&quot;") {
			output = head + "\"" + tail;
			iy -= 5;
		}
		else if (mid == "&apos;") {
			output = head + "'" + tail;
			iy -= 5;
		}
		else {
			iy = ix + 1;
		}
		ix = output.find("&", iy);
		iy = output.find(";", ix);
	}
	return output;
}

string Element::parse(const string &s, Match *m, const string &id) {
	string result = "";
	int iy = 0;
	for (int ix = 0; ix < s.length(); ++ix) {
		char ch = s[ix];
		if (ch == 's' && ix + 5 < s.length()) {
			if (s.find("star(", ix) == ix) {
				ix += 5;
				string star = s.substr(ix, (iy = s.find(")", ix)) - ix);
				result += toLower(m->getInputStar(atoi(star.c_str())));
				ix = iy;
				continue;
			}
		}
		else if (ch == 't' && ix + 9 < s.length()) {
			if (s.find("thatstar(", ix) == ix) {
				ix += 9;
				string thatstar = s.substr(ix, (iy = s.find(")", ix)) - ix);
				result += toLower(m->getThatStar(atoi(thatstar.c_str())));
				ix = iy;
				continue;
			}
		}
		else if (ch == 't' && ix + 10 < s.length()) {
			if (s.find("topicstar(", ix) == ix) {
				ix += 10;
				string topicstar = s.substr(ix, (iy = s.find(")", ix)) - ix);
				result += toLower(m->getTopicStar(atoi(topicstar.c_str())));
				ix = iy;
				continue;
			}
		}
		else if (ch == 'g' && ix + 4 < s.length()) {
			if (s.find("get(", ix) == ix) {
				ix += 4;
				string get = s.substr(ix, (iy = s.find(")", ix)) - ix);
				result += toLower(Memory::getValue(get, id));
				ix = iy;
				continue;
			}
		}
		result += ch;
	}
	return unslash(result);
}

string Element::unslash(const string &input) {
	string output = "";
	int ix = 0;
	while (ix < input.length()) {
		if (input[ix] == '\\') {
			++ix;
		}
		if (ix >= input.length()) {
			break;
		}
		output += input[ix];
		++ix;
	}
	return output;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费看欧美女人艹b| 日韩精品一区二区三区在线| 久久亚洲捆绑美女| 午夜不卡av免费| 精品剧情在线观看| 一区二区视频在线看| 另类人妖一区二区av| 91精品久久久久久久91蜜桃| 亚洲欧美综合色| 91美女片黄在线观看91美女| 国产精品美日韩| 国产精品夜夜爽| 久久久亚洲精品石原莉奈| 欧洲一区二区av| 另类小说欧美激情| 欧美日韩高清一区| 亚洲精品久久7777| 成人av免费网站| 国产午夜精品久久久久久免费视 | 国产制服丝袜一区| 欧美三级一区二区| 欧洲一区在线电影| 亚洲人成网站影音先锋播放| 成人午夜电影久久影院| 日韩视频国产视频| 日本伊人色综合网| 亚洲另类春色国产| 免费精品视频最新在线| 欧美美女喷水视频| 精品久久久久香蕉网| 日韩高清不卡在线| 欧美日韩不卡一区| 亚洲大片在线观看| 欧美午夜精品电影| 亚洲v精品v日韩v欧美v专区| 色欧美乱欧美15图片| 亚洲免费观看高清完整| 91视频一区二区三区| 亚洲欧洲日韩女同| 91影视在线播放| 一区二区三区免费看视频| 欧美主播一区二区三区美女| 国产伦精品一区二区三区视频青涩| 亚洲制服丝袜av| 久久精品综合网| 日韩亚洲欧美综合| 国产毛片精品一区| 亚洲线精品一区二区三区八戒| 精品国产sm最大网站| 91无套直看片红桃| 久久99久久99精品免视看婷婷| 一区二区三区欧美日| 国产亚洲精品中文字幕| 亚洲精品欧美激情| 天堂在线亚洲视频| 日韩欧美另类在线| 国产成人一区在线| 亚洲天堂福利av| 欧美日韩国产一级| 精品一区二区免费| 中文字幕一区二区三区色视频| 欧美日免费三级在线| 成人午夜精品在线| 国产一区二区三区香蕉| 男女激情视频一区| 午夜国产不卡在线观看视频| 亚洲三级理论片| 国产精品久久久久久久岛一牛影视| 91精品啪在线观看国产60岁| 欧美艳星brazzers| 色妹子一区二区| 欧美日韩另类一区| 色丁香久综合在线久综合在线观看| 国产999精品久久久久久绿帽| 久久精品国产秦先生| 99在线热播精品免费| 国产伦精品一区二区三区在线观看| 老司机精品视频在线| 国产精品综合网| 蜜桃视频一区二区三区在线观看 | 日本一区二区不卡视频| 91精品福利视频| 成人亚洲精品久久久久软件| 国产一区免费电影| 欧美性猛交一区二区三区精品| 国产精品短视频| 中文字幕一区视频| 欧美日高清视频| 国产福利一区二区三区在线视频| 夜夜嗨av一区二区三区网页| 精品久久久久久综合日本欧美 | 一区二区三区在线视频免费 | 成人黄色大片在线观看| 国产精品亚洲一区二区三区妖精| 国产在线播放一区二区三区| 成人激情黄色小说| 国产馆精品极品| 91天堂素人约啪| 不卡视频在线观看| 欧美色图在线观看| 精品国产欧美一区二区| 亚洲一区二区三区四区在线观看| 色狠狠色噜噜噜综合网| 国产久卡久卡久卡久卡视频精品| 日韩写真欧美这视频| 成人开心网精品视频| 一区精品在线播放| 99综合影院在线| 蜜臀av国产精品久久久久| 亚洲人成7777| 久久久久一区二区三区四区| 欧美日韩一区二区在线视频| 成人激情小说乱人伦| 久久国产精品99久久久久久老狼| 亚洲欧美日韩在线| 国产午夜精品久久| 日韩精品一区二区三区中文不卡 | 天天影视色香欲综合网老头| 国产精品久久毛片| 精品国产一二三区| 制服丝袜亚洲色图| 在线免费精品视频| 99国产一区二区三精品乱码| 国产精品一区在线| 久久精品国产99国产精品| 亚洲一区二区影院| 亚洲男女一区二区三区| 国产精品视频一二三区| 久久亚洲精华国产精华液| 666欧美在线视频| 欧美中文字幕久久| 一本一道综合狠狠老| 成人精品国产福利| 国产精品91一区二区| 激情av综合网| 麻豆国产91在线播放| 日本不卡中文字幕| 五月婷婷综合激情| 亚洲第一搞黄网站| 一区二区三区日韩在线观看| 亚洲天堂免费看| 亚洲同性gay激情无套| 自拍视频在线观看一区二区| 国产精品久久免费看| 国产精品少妇自拍| 国产精品久久久久久久午夜片| 日本一区二区视频在线| 91激情五月电影| 午夜av一区二区| 欧美在线小视频| 视频一区在线播放| 51精品秘密在线观看| 另类调教123区 | 日日夜夜一区二区| a级高清视频欧美日韩| 日韩成人精品在线观看| 热久久国产精品| 免费在线视频一区| 成人午夜av在线| 波多野洁衣一区| 色欧美乱欧美15图片| 欧美性受xxxx| 欧美精品久久天天躁| 欧美电视剧在线看免费| www久久精品| 亚洲国产精品成人综合| **欧美大码日韩| 亚洲精品欧美综合四区| 香蕉影视欧美成人| 蜜桃一区二区三区四区| 国产一二精品视频| 成人av午夜影院| 欧美中文字幕一区| 日韩一区二区精品| 久久精品亚洲精品国产欧美| 国产精品久久免费看| 亚洲综合色视频| 美腿丝袜在线亚洲一区| 国产成人av一区二区三区在线观看| 成人的网站免费观看| 欧洲一区二区av| 日韩免费福利电影在线观看| 国产视频一区二区在线观看| 亚洲人成网站影音先锋播放| 日韩精品一二三| 国产在线精品一区二区不卡了| 成人a级免费电影| 91影院在线观看| 国产99精品视频| 久久精品国产在热久久| 国产精品国产自产拍在线| 日韩欧美国产电影| 欧美日韩美女一区二区| 在线观看亚洲专区| 国产不卡视频一区二区三区| 日韩成人精品在线观看| 一区二区免费在线播放| 国产精品久久777777| 亚洲国产精品成人综合色在线婷婷| 日韩一区二区三区电影|