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

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

?? tools.cc

?? tools.03b.zip
?? CC
?? 第 1 頁 / 共 2 頁
字號:
// Tools Library//// Copyright (C) 2004  Navel Ltd.//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//// Contact information://  Mailing address://    Marios Hadjieleftheriou//    University of California, Riverside//    Department of Computer Science//    Surge Building, Room 310//    Riverside, CA 92521////  Email://    marioh@cs.ucr.edu#include <Tools.h>#include "ExternalSort.h"const std::string VERSION = "0.3b";const std::string DATE = "06 June 2004";Tools::IndexOutOfBoundsException::IndexOutOfBoundsException(int i){	std::ostringstream s;	s << "Invalid index " << i;	m_error = s.str();}std::string Tools::IndexOutOfBoundsException::what(){	return "IndexOutOfBoundsException: " + m_error;}Tools::IllegalArgumentException::IllegalArgumentException(std::string s) : m_error(s){}std::string Tools::IllegalArgumentException::what(){	return "IllegalArgumentException: " + m_error;}Tools::IllegalStateException::IllegalStateException(std::string s) : m_error(s){}std::string Tools::IllegalStateException::what(){	return "IllegalStateException: " + m_error + "\nPlease contact " + EMAIL;}
Tools::EndOfStreamException::EndOfStreamException(std::string s) : m_error(s){}std::string Tools::EndOfStreamException::what(){	return "EndOfStreamException: " + m_error;}Tools::ResourceLockedException::ResourceLockedException(std::string s) : m_error(s){}std::string Tools::ResourceLockedException::what(){	return "ResourceLockedException: " + m_error;}Tools::InvalidPageException::InvalidPageException(long id){	std::ostringstream s;	s << "Unknown page id " << id;	m_error = s.str();}std::string Tools::InvalidPageException::what(){	return "InvalidPageException: " + m_error;}Tools::NotSupportedException::NotSupportedException(std::string s) : m_error(s){}std::string Tools::NotSupportedException::what(){	return "NotSupportedException: " + m_error;}Tools::ParseErrorException::ParseErrorException(std::string s) : m_error(s){}std::string Tools::ParseErrorException::what(){	return "ParseErrorException: " + m_error;}Tools::Variant::Variant() : m_varType(VT_EMPTY){}unsigned long Tools::PropertySet::getByteArraySize(){	unsigned long size = sizeof(unsigned long);	for (std::map<std::string, Variant>::iterator it = m_propertySet.begin(); it != m_propertySet.end(); it++)	{		switch ((*it).second.m_varType)		{		case VT_LONG:			size += sizeof(long);			break;		case VT_BYTE:			size += sizeof(byte);			break;		case VT_SHORT:			size += sizeof(short);			break;		case VT_FLOAT:			size += sizeof(float);			break;		case VT_DOUBLE:			size += sizeof(double);			break;		case VT_CHAR:			size += sizeof(char);			break;		case VT_USHORT:			size += sizeof(unsigned short);			break;		case VT_ULONG:			size += sizeof(unsigned long);			break;		case VT_INT:			size += sizeof(int);			break;		case VT_UINT:			size += sizeof(unsigned int);			break;		case VT_BOOL:			size += sizeof(byte);			break;		default:			throw NotSupportedException("Cannot serialize a variant of this type.");		}		size += (*it).first.size() + sizeof(unsigned long) + sizeof(VariantType);	}	return size;}unsigned long Tools::PropertySet::loadFromByteArray(byte* const data)
{
	byte* ptr = data;	unsigned long numberOfProperties;	memcpy(&numberOfProperties, ptr, sizeof(unsigned long));	ptr += sizeof(unsigned long);	unsigned long strSize;	char* str;	Variant v;	for (unsigned long cIndex = 0; cIndex < numberOfProperties; cIndex++)	{		memcpy(&strSize, ptr, sizeof(unsigned long));		ptr += sizeof(unsigned long);		str = new char[strSize + 1]; str[strSize] = 0;		memcpy(str, ptr, strSize);		ptr += strSize;		memcpy(&(v.m_varType), ptr, sizeof(VariantType));
		ptr += sizeof(VariantType);		switch (v.m_varType)		{		case VT_LONG:			long l;			memcpy(&l, ptr, sizeof(long));			ptr += sizeof(long);			v.m_val.lVal = l;			break;		case VT_BYTE:			byte b;			memcpy(&b, ptr, sizeof(byte));			ptr += sizeof(byte);			v.m_val.bVal = b;			break;		case VT_SHORT:			short s;			memcpy(&s, ptr, sizeof(short));			ptr += sizeof(short);			v.m_val.iVal = s;			break;		case VT_FLOAT:			float f;			memcpy(&f, ptr, sizeof(float));			ptr += sizeof(float);			v.m_val.fltVal = f;			break;		case VT_DOUBLE:			double d;			memcpy(&d, ptr, sizeof(double));			ptr += sizeof(double);			v.m_val.dblVal = d;			break;		case VT_CHAR:			char c;			memcpy(&c, ptr, sizeof(char));			ptr += sizeof(char);			v.m_val.cVal = c;			break;		case VT_USHORT:			unsigned short us;			memcpy(&us, ptr, sizeof(unsigned short));			ptr += sizeof(unsigned short);			v.m_val.uiVal = us;			break;		case VT_ULONG:			unsigned long ul;			memcpy(&ul, ptr, sizeof(unsigned long));			ptr += sizeof(unsigned long);			v.m_val.ulVal = ul;			break;		case VT_INT:			int i;			memcpy(&i, ptr, sizeof(int));			ptr += sizeof(int);			v.m_val.intVal = i;			break;		case VT_UINT:			unsigned int ui;			memcpy(&ui, ptr, sizeof(unsigned int));			ptr += sizeof(unsigned int);			v.m_val.uintVal = ui;			break;		case VT_BOOL:			byte bl;			memcpy(&bl, ptr, sizeof(byte));			ptr += sizeof(byte);			v.m_val.blVal = static_cast<bool>(bl);			break;		default:			throw NotSupportedException("Cannot serialize a variant of this type.");		}		m_propertySet.insert(std::pair<std::string, Variant>(std::string(str), v));		delete[] str;	}	return getByteArraySize();
}
void Tools::PropertySet::storeToByteArray(unsigned long& len, byte** data)
{	len = getByteArraySize();	*data = new byte[len];	byte* ptr = *data;	unsigned long numberOfProperties = m_propertySet.size();	memcpy(ptr, &numberOfProperties, sizeof(unsigned long));	ptr += sizeof(unsigned long);	for (std::map<std::string, Variant>::iterator it = m_propertySet.begin(); it != m_propertySet.end(); it++)	{		unsigned long strSize = (*it).first.size();		memcpy(ptr, &strSize, sizeof(unsigned long));		ptr += sizeof(unsigned long);		memcpy(ptr, (*it).first.c_str(), strSize);		ptr += strSize;		memcpy(ptr, &((*it).second.m_varType), sizeof(VariantType));		ptr += sizeof(VariantType);		switch ((*it).second.m_varType)		{		case VT_LONG:			memcpy(ptr, &((*it).second.m_val.lVal), sizeof(long));			ptr += sizeof(long);			break;		case VT_BYTE:			memcpy(ptr, &((*it).second.m_val.bVal), sizeof(byte));			ptr += sizeof(byte);			break;		case VT_SHORT:			memcpy(ptr, &((*it).second.m_val.iVal), sizeof(short));			ptr += sizeof(short);			break;		case VT_FLOAT:			memcpy(ptr, &((*it).second.m_val.fltVal), sizeof(float));			ptr += sizeof(float);			break;		case VT_DOUBLE:			memcpy(ptr, &((*it).second.m_val.dblVal), sizeof(double));			ptr += sizeof(double);			break;		case VT_CHAR:			memcpy(ptr, &((*it).second.m_val.cVal), sizeof(char));			ptr += sizeof(char);			break;		case VT_USHORT:			memcpy(ptr, &((*it).second.m_val.uiVal), sizeof(unsigned short));			ptr += sizeof(unsigned short);			break;		case VT_ULONG:			memcpy(ptr, &((*it).second.m_val.ulVal), sizeof(unsigned long));			ptr += sizeof(unsigned long);			break;		case VT_INT:			memcpy(ptr, &((*it).second.m_val.intVal), sizeof(int));			ptr += sizeof(int);			break;		case VT_UINT:			memcpy(ptr, &((*it).second.m_val.uintVal), sizeof(unsigned int));			ptr += sizeof(unsigned int);			break;		case VT_BOOL:			byte bl;			bl = (*it).second.m_val.blVal;			memcpy(ptr, &bl, sizeof(byte));			ptr += sizeof(byte);			break;		default:			throw NotSupportedException("Cannot serialize a variant of this type.");		}	}}
Tools::Variant Tools::PropertySet::getProperty(std::string property){	std::map<std::string, Variant>::iterator it = m_propertySet.find(property);	if (it != m_propertySet.end()) return (*it).second;	else return Variant();}void Tools::PropertySet::setProperty(std::string property, Variant& v){	m_propertySet.insert(std::pair<std::string, Variant>(property, v));}void Tools::PropertySet::removeProperty(std::string property){	std::map<std::string, Variant>::iterator it = m_propertySet.find(property);	if (it != m_propertySet.end()) m_propertySet.erase(it);}Tools::IObjectStream* Tools::externalSort(IObjectStream& source, unsigned long bufferSize)
{
	return new ExternalSort(source, bufferSize);}
Tools::IObjectStream* Tools::externalSort(IObjectStream& source, IObjectComparator& comp, unsigned long bufferSize)
{	return new ExternalSort(source, comp, bufferSize);
}
Tools::Interval::Interval() : m_type(IT_RIGHTOPEN), m_low(0.0), m_high(0.0){}Tools::Interval::Interval(IntervalType t, double l, double h) : m_type(t), m_low(l), m_high(h){	assert(l < h);}Tools::Interval::Interval(double l, double h) : m_type(IT_RIGHTOPEN), m_low(l), m_high(h){	assert(l < h);}Tools::Interval::Interval(const Interval& iv){	m_low = iv.m_low;	m_high = iv.m_high;	m_type = iv.m_type;}Tools::IInterval& Tools::Interval::operator=(const IInterval& iv){	if (this != &iv)	{		m_low = iv.getLowerBound();		m_high = iv.getUpperBound();		m_type = iv.getIntervalType();	}	return *this;}Tools::Interval& Tools::Interval::operator=(const Interval& iv){	*this = *(static_cast<const IInterval*>(&iv));	return *this;}double Tools::Interval::getLowerBound() const{	return m_low;}double Tools::Interval::getUpperBound() const{	return m_high;}void Tools::Interval::setBounds(double l, double h){	assert(l <= h);	m_low = l;	m_high = h;}bool Tools::Interval::intersectsInterval(const IInterval& i) const{	return intersectsInterval(i.getIntervalType(), i.getLowerBound(), i.getUpperBound());}bool Tools::Interval::intersectsInterval(IntervalType type, const double low, const double high) const{	if (m_high < m_low) throw IllegalStateException("intersectsInterval: high boundary is smaller than low boundary.");	if (m_low > high || m_high < low) return false;	if ((m_low > low && m_low < high) || (m_high > low && m_high < high)) return true;	switch (m_type)	{	case IT_CLOSED:		if (m_low == high)		{			if (type == IT_CLOSED || type == IT_LEFTOPEN) return true;			else return false;		}		else if (m_high == low)		{			if (type == IT_CLOSED || type == IT_RIGHTOPEN) return true;			else return false;		}		break;	case IT_OPEN:		if (m_low == high || m_high == low) return false;		break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频一区二区三区| 国产精品电影一区二区三区| 成人美女视频在线看| 日本午夜精品一区二区三区电影| 国产精品嫩草影院com| 91精品国产日韩91久久久久久| 99久久精品国产导航| 国内欧美视频一区二区| 日韩和欧美的一区| 波多野结衣在线一区| 国产一区二区免费看| 日韩av不卡一区二区| 亚洲最大成人综合| 亚洲精品免费一二三区| 自拍偷拍欧美激情| 中文字幕乱码亚洲精品一区| 久久在线免费观看| 久久蜜桃av一区精品变态类天堂| 欧美一区二区免费| 日韩一区二区免费在线电影| 3d动漫精品啪啪| 欧美一卡二卡三卡四卡| 欧美精品xxxxbbbb| 欧美二区三区的天堂| 欧美久久高跟鞋激| 91精品国产综合久久蜜臀| 欧美日韩电影在线| 欧美日韩免费视频| 欧美精品一二三| 5858s免费视频成人| 欧美一卡2卡三卡4卡5免费| 欧美一级欧美三级在线观看| 日韩精品一区二区三区在线播放| 欧美videossexotv100| 久久人人爽人人爽| 亚洲国产精品精华液2区45| 国产欧美日韩不卡| 亚洲三级电影网站| 亚洲国产日韩一级| 日本欧美韩国一区三区| 国内成+人亚洲+欧美+综合在线| 激情综合网最新| 国产 欧美在线| aaa亚洲精品| 欧美美女一区二区三区| 欧美一级国产精品| 久久众筹精品私拍模特| 中文字幕av一区二区三区免费看| 1000部国产精品成人观看| 一区二区三区在线视频观看58| 亚洲高清视频中文字幕| 久久99国产精品免费| 国产成人免费在线视频| 91国产免费看| 欧美大片日本大片免费观看| 日本一区二区三区电影| 亚洲午夜激情网页| 久久99精品久久只有精品| 麻豆91免费看| 成人久久久精品乱码一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美性生交片4| 精品免费日韩av| 亚洲少妇30p| 美日韩一区二区三区| 国产91精品在线观看| 色菇凉天天综合网| 欧美成人a∨高清免费观看| 综合久久综合久久| 蜜臀久久99精品久久久久久9| 高清成人在线观看| 欧美精品久久天天躁| 国产欧美一区二区精品久导航 | 日韩免费在线观看| 日本一区二区三级电影在线观看| 亚洲制服欧美中文字幕中文字幕| 国产一区二区三区四区五区入口 | www.亚洲激情.com| 欧美四级电影在线观看| 久久久精品免费网站| 亚洲精品日日夜夜| 久久精品国产精品亚洲红杏| 狠狠色伊人亚洲综合成人| 欧洲精品一区二区| 欧美国产日韩a欧美在线观看 | 久久精品综合网| 亚洲资源在线观看| 国产福利91精品| 在线电影一区二区三区| 亚洲日本va午夜在线电影| 久久99九九99精品| 欧美日韩国产高清一区二区| 国产精品天天看| 久久99精品久久久久久国产越南| 欧美午夜片在线观看| 国产精品成人一区二区艾草 | 精品在线播放免费| 欧美日韩视频在线观看一区二区三区 | 久久久久久久网| 亚洲精选在线视频| 国产盗摄精品一区二区三区在线| 欧美精品123区| 亚洲黄网站在线观看| 成人国产精品免费观看动漫| 精品久久久久一区二区国产| 三级精品在线观看| 欧美日本一道本| 一区二区三区在线播放| 91免费版pro下载短视频| 亚洲国产成人一区二区三区| 国产精品自拍一区| 精品国产免费人成在线观看| 欧美一区在线视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品亚洲人在线观看| 日韩欧美的一区| 亚洲国产精品一区二区久久恐怖片| 国产精品一卡二| 久久久亚洲精华液精华液精华液 | 中文字幕亚洲电影| 国产在线精品一区二区不卡了 | 国产三级久久久| 国产精品1区2区3区| 久久亚洲免费视频| 久久国产乱子精品免费女| 欧美高清视频www夜色资源网| 亚洲成人免费av| 欧美日韩激情在线| 日韩激情在线观看| 精品国产伦一区二区三区观看体验| 精品一区二区三区蜜桃| 久久综合久久久久88| 国产一区二区按摩在线观看| 久久精品在这里| 久久99精品国产91久久来源| 日韩欧美一级片| 美女视频黄 久久| 日韩女优av电影| 国产一区二区三区免费播放 | 久久亚洲一级片| 国产高清久久久| 中文字幕欧美日本乱码一线二线 | 欧美日韩在线免费视频| 日韩在线一二三区| 欧美大黄免费观看| 国产精品一区二区久久不卡| 国产欧美一区二区在线| 97久久久精品综合88久久| 亚洲综合成人在线视频| 日韩三级视频在线看| 国产一区亚洲一区| 中文字幕va一区二区三区| 色综合激情久久| 美国一区二区三区在线播放| 国产亚洲欧洲一区高清在线观看| 成人免费视频播放| 亚洲国产精品久久人人爱蜜臀| 欧美丰满一区二区免费视频| 国产精品自拍网站| 夜夜爽夜夜爽精品视频| 91精品国产一区二区人妖| 国产成人综合在线播放| 亚洲欧美偷拍三级| 884aa四虎影成人精品一区| 国产麻豆午夜三级精品| 亚洲男同性视频| 日韩欧美成人激情| av高清久久久| 久久国内精品视频| 亚洲欧美一区二区三区国产精品 | 亚洲精品一区在线观看| av综合在线播放| 日韩精品三区四区| 久久精品亚洲精品国产欧美| 91视频观看免费| 久草这里只有精品视频| 国产精品视频九色porn| 欧美日韩和欧美的一区二区| 国产福利一区二区三区视频在线| 亚洲在线视频一区| 国产欧美日韩在线看| 欧美日本乱大交xxxxx| www..com久久爱| 美女视频网站黄色亚洲| 一卡二卡欧美日韩| 久久久久久久久蜜桃| 欧美日本一区二区三区四区| 99久久免费精品| av电影在线观看完整版一区二区| 国产自产视频一区二区三区| 美国精品在线观看| 亚洲国产人成综合网站| 91影院在线免费观看| 国产大陆a不卡| 国产精品亚洲专一区二区三区 | 亚洲一卡二卡三卡四卡五卡| 国产精品久久福利| 久久精品网站免费观看| 久久精品亚洲精品国产欧美| 26uuu成人网一区二区三区|