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

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

?? 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品99国产精品日本| 男人的j进女人的j一区| 日韩欧美中文一区二区| 成人精品视频.| 免费观看日韩电影| 一区二区久久久久久| 国产人成亚洲第一网站在线播放 | 午夜国产精品影院在线观看| 国产亲近乱来精品视频| 91麻豆精品91久久久久久清纯 | 色久综合一二码| 国产盗摄视频一区二区三区| 日韩高清一级片| 亚洲国产wwwccc36天堂| 国产精品久久久久精k8| 国产丝袜欧美中文另类| 欧美一级二级三级乱码| 欧美性大战久久久久久久蜜臀| 成人一区二区三区中文字幕| 国产一区二区三区四| 日韩成人午夜精品| 亚洲午夜电影在线| 一区二区三区四区精品在线视频| 国产欧美一区二区三区鸳鸯浴| 欧美不卡一区二区三区| 91精品国产麻豆| 欧美日韩国产免费| 欧美在线观看视频一区二区 | 欧美激情在线一区二区| 精品卡一卡二卡三卡四在线| 日韩三级高清在线| 正在播放亚洲一区| 欧美肥妇bbw| 欧美日韩一区二区在线观看| 在线免费观看成人短视频| 色屁屁一区二区| 色婷婷香蕉在线一区二区| 一本色道a无线码一区v| 色偷偷久久人人79超碰人人澡| 成人97人人超碰人人99| 白白色 亚洲乱淫| 成人av网在线| 91在线免费播放| 91久久国产最好的精华液| 91高清视频免费看| 欧美日韩一区二区三区高清| 精品视频999| 3d动漫精品啪啪1区2区免费| 欧美一区二区在线免费播放| 欧美一区二区在线看| 精品国产乱码久久久久久1区2区| 欧美大片免费久久精品三p| 精品国产髙清在线看国产毛片| 日韩欧美aaaaaa| 国产欧美一二三区| 亚洲男同性恋视频| 亚洲大片免费看| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久国产视频网| 成人在线一区二区三区| 色婷婷av一区二区| 91精品国产一区二区人妖| 久久欧美一区二区| 国产精品亲子乱子伦xxxx裸| 伊人婷婷欧美激情| 日本成人超碰在线观看| 国产成人免费高清| 欧美亚洲一区二区三区四区| 91精品国产黑色紧身裤美女| 久久久久久免费网| 一级日本不卡的影视| 蜜桃视频免费观看一区| 成人精品一区二区三区四区| 欧美三级乱人伦电影| 久久久久久免费网| 亚洲r级在线视频| 国产成人自拍在线| 欧美视频中文字幕| 国产亚洲午夜高清国产拍精品| 亚洲欧美视频在线观看视频| 天天色图综合网| 丁香另类激情小说| 欧美日韩国产不卡| 国产女人18毛片水真多成人如厕| 亚洲综合视频在线| 国产成人在线免费观看| 欧美撒尿777hd撒尿| 久久久精品影视| 婷婷六月综合网| 91在线一区二区三区| 亚洲精品一线二线三线| 亚洲午夜一区二区三区| 国产精品自拍一区| 欧美日本韩国一区| 国产精品嫩草99a| 麻豆成人免费电影| 欧美中文字幕一区| 国产精品萝li| 久久99国产精品免费| 91无套直看片红桃| 久久久久综合网| 蜜臀av性久久久久蜜臀aⅴ流畅| 色综合亚洲欧洲| 欧美经典一区二区三区| 麻豆一区二区三区| 在线免费一区三区| 日韩理论在线观看| 国产成人亚洲综合a∨婷婷图片| 555www色欧美视频| 亚洲午夜激情网站| av不卡免费在线观看| 精品区一区二区| 日产精品久久久久久久性色| 日本大香伊一区二区三区| 国产精品久久久久一区| 国产麻豆视频一区| 精品国产乱码久久久久久图片| 日韩高清不卡一区二区| 欧美日韩成人在线| 亚洲国产视频一区二区| 一本大道久久a久久综合| 亚洲国产激情av| 风间由美性色一区二区三区| 久久新电视剧免费观看| 久久国产麻豆精品| 欧美一区二区三区四区高清| 性做久久久久久免费观看| 欧美丝袜丝交足nylons图片| 亚洲一区二区三区四区不卡| 欧洲一区在线电影| 亚洲美女一区二区三区| 99精品偷自拍| 中文字幕永久在线不卡| 成人精品在线视频观看| 国产精品久久久久久久久久免费看| 国产馆精品极品| 国产午夜精品久久久久久久| 国产一区二区网址| 国产亚洲欧美激情| 成人污污视频在线观看| 国产精品私人影院| 色综合久久综合网欧美综合网| 亚洲激情男女视频| 欧美日韩一级大片网址| 婷婷综合五月天| 精品入口麻豆88视频| 国产美女精品在线| 亚洲欧洲色图综合| 欧美在线观看一区二区| 日韩制服丝袜av| 久久午夜国产精品| 粉嫩蜜臀av国产精品网站| 亚洲色图视频免费播放| 欧美精品自拍偷拍| 国内精品久久久久影院色| 国产精品素人视频| 欧美羞羞免费网站| 麻豆国产精品777777在线| 国产三级精品三级| 一本大道久久精品懂色aⅴ| 天堂影院一区二区| 久久无码av三级| 一本色道**综合亚洲精品蜜桃冫| 首页国产丝袜综合| 精品国产3级a| 99久久精品情趣| 午夜一区二区三区视频| 日韩精品中文字幕在线一区| 成人免费av网站| 亚洲va天堂va国产va久| 久久精品视频在线免费观看| 日本精品一级二级| 久久66热re国产| 亚洲美女在线一区| 精品国产网站在线观看| 成人一区二区三区中文字幕| 五月综合激情日本mⅴ| 国产日产欧产精品推荐色| 欧美三区在线观看| 成人午夜精品一区二区三区| 亚洲成av人片在线观看| 国产欧美精品国产国产专区| 欧美美女一区二区在线观看| 成人综合婷婷国产精品久久免费| 亚洲成人一区在线| 中文字幕一区在线观看视频| 日韩欧美综合一区| 91国在线观看| 成人网在线免费视频| 另类中文字幕网| 亚洲国产另类av| 亚洲欧美在线另类| 精品国产精品一区二区夜夜嗨| 欧美在线啊v一区| 国产**成人网毛片九色| 首页国产欧美久久| 亚洲欧美激情小说另类| 精品久久久久久无| 欧美日韩国产影片| 91九色02白丝porn|