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

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

?? stream.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* *	HT Editor *	stream.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf (stefan@weyergraf.de) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program 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 General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <cerrno>#include <climits>#include <new>#include <cstring>#include <cstdio>#include <cstdlib>#include <fcntl.h>#include <sys/stat.h>	/* for mode definitions */#include <sys/types.h>	/* for mode definitions */#include <unistd.h>#include "htdebug.h"#include "except.h"#include "snprintf.h"#include "stream.h"#include "strtools.h"#include "tools.h"/* *	Listener */#if 0class Listener: public Object {public:	StreamEventListener *listener;	StreamEvent notify_mask;	Listener(StreamEventListener *l, StreamEvent nmask)	{		listener = l;		notify_mask = nmask;	}/* extends Object */	virtual int compareTo(const Object *obj) const	{		return ((Listener*)obj)->listener == listener ? 0 : 1;	}};#endif/* *	Stream */#define STREAM_COPYBUF_SIZE	(64*1024)Stream::Stream(){	mAccessMode = IOAM_NULL;//	mListeners = NULL;}/*Stream::~Stream(){//	delete mListeners;}*//*void Stream::addEventListener(StreamEventListener *l, StreamEvent mask){	if (!mListeners) mListeners = new Array(true);	*mListeners += new Listener(l, mask);}*/void Stream::checkAccess(IOAccessMode mask){	if ((mAccessMode & mask) != mask) throw IOException(EACCES);}/** *	Copy (whole) stream to another (i.e. copy until EOF) *	@param stream Stream to copy this Stream to *	@returns number of bytes copied */FileOfs Stream::copyAllTo(Stream *stream){	byte *buf = new byte[STREAM_COPYBUF_SIZE];	FileOfs result = 0;	uint r, t;	do {		uint k = STREAM_COPYBUF_SIZE;		r = read(buf, k);		assert(r <= k);		t = stream->write(buf, r);		assert(t <= r);		result += t;		if (t != k) break;	} while (t);	delete[] buf;	return result;}/** *	Copy (partial) stream to another *	@param stream Stream to copy this Stream to *	@param count maximum number of bytes to copy *	@returns number of bytes copied */FileOfs Stream::copyTo(Stream *stream, FileOfs count){	byte *buf = new byte[STREAM_COPYBUF_SIZE];	FileOfs result = 0;	while (count) {		uint k = STREAM_COPYBUF_SIZE;		if (k > count) k = count;		uint r = read(buf, k);		assert(r <= k);		uint t = stream->write(buf, r);		assert(t <= r);		count -= t;		result += t;		if (t != k) break;	}	delete[] buf;	return result;}/** *	Get access-mode */IOAccessMode Stream::getAccessMode() const{	return mAccessMode;}/** *	Get descriptive name */String &Stream::getDesc(String &result) const{	result = "";	return result;}/*void Stream::notifyListeners(StreamEvent event,...){	if (!mListeners) return;	foreach(Listener, l, *mListeners,		if (l->notify_mask & event) {			va_list ap;			va_start(ap, event);			l->listener->handleEvent(event, ap);			va_end(ap);		}	);}*//** *	Set access-mode */int	Stream::setAccessMode(IOAccessMode mode){	mAccessMode = mode;	return 0;}/** *	Set access-mode, throw IOException if unsuccessful */void	Stream::setAccessModex(IOAccessMode mode){	int e = setAccessMode(mode);	if (e) throw IOException(e);}/** *	Read from stream. *	Read up to <i>size</i> bytes from stream into <i>buf</i>. *	If less than <i>size</i> bytes are read, the exact number is *	returned and a (temporary) end-of-file (EOF) is encountered. * *	@param buf pointer to bytes to read *	@param size number of bytes to read *	@returns number of bytes read *	@throws IOException */uint	Stream::read(void *buf, uint size){	return 0;}/** *	Exact read from stream. *	Read exactly <i>size</i> bytes from stream into <i>buf</i>. *	If less than <i>size</i> bytes are read, IOException is thrown. * *	@param buf pointer to bytes to read *	@param size number of bytes to read *	@throws IOException *///#include "snprintf.h" void	Stream::readx(void *buf, uint size){//	File *f = dynamic_cast<File*>(this);//	FileOfs t = f ? f->tell() : 0;	if (read(buf, size) != size) {//		FileOfs sz = f ? f->getSize() : mkfofs(0);//		ht_printf("readx failed, ofs = 0x%qx, size = %d (file size 0x%qx)\n", &t, size, &sz);		throw EOFException();	}	    }/*void Stream::removeEventListener(StreamEventListener *l){	Listener t(l, SEV_NULL);	bool b = (*mListeners -= &t);	assert(b);}*//** *	Write to stream. *	Write up to <i>size</i> bytes from <i>buf</i> into stream. *	If less than <i>size</i> bytes are written, the exact number is *	returned and a (temporary) end-of-file (EOF) is encountered. * *	@param buf pointer to bytes to write *	@param size number of bytes to write *	@returns number of bytes written *	@throws IOException */uint	Stream::write(const void *buf, uint size){	return 0;}/** *	Exact write to stream. *	Write exactly <i>size</i> bytes from <i>buf</i> into stream. *	If less than <i>size</i> bytes are written, IOException is thrown. * *	@param buf pointer to bytes to write *	@param size number of bytes to write *	@throws IOException */void	Stream::writex(const void *buf, uint size){	if (write(buf, size) != size) throw EOFException();}// FIXME: more dynamical solution appreciated#define REASONABLE_STRING_LIMIT	1024 char *Stream::readstrz(){	/* get string size */	char buf[REASONABLE_STRING_LIMIT];	int z = 0;	while (1) {		readx(buf+z, 1);		z++;		if (z >= REASONABLE_STRING_LIMIT) {			z = REASONABLE_STRING_LIMIT;			break;		}		if (buf[z-1] == 0) break;	}	if (!z) return NULL;	char *str = ht_malloc(z);	if (!str) throw std::bad_alloc();	memcpy(str, buf, z-1);	str[z-1] = 0;	return str;}bool Stream::readStringz(String &s){	String r;	try {		while (1) {			char c;			readx(&c, 1);			if (!c) break;			r.appendChar(c);		}		s.grab(r);		return true;	} catch (const EOFException &) {		return false;	}}void Stream::writestrz(const char *str){	if (str) {		writex(str, strlen(str)+1);	} else {		byte n = 0;		writex(&n, 1);	}}char *Stream::readstrp(){	uint8 l;	readx(&l, 1);	char *str = ht_malloc(l+1);	if (!str) throw std::bad_alloc();	try {		readx(str, l);	} catch (...) {		free(str);		throw;	}	str[l] = 0;	return str;}char *Stream::readstrl(){	uint32 l = 0;	for (int i=0; i<4; i++) {		uint8 b;		readx(&b, 1);		l <<= 7;		l |= b & 0x7f;		if (!(b & 0x80)) break;	}	char *str = ht_malloc(l+1);	if (!str) throw std::bad_alloc();		try {		readx(str, l);	} catch (...) {		free(str);		throw;	}	str[l] = 0;	return str;}void Stream::writestrl(const char *str){	uint8 b;	uint32 len = strlen(str);	if (!len) {		b = 0;		writex(&b, 1);		return;	}	int i = 4;	uint32 a = 0xfe000000;	while (!(len & a)) {		a >>= 7;		i--;	}	len <<= (4-i)*7;	while (i--) {		a = i ? 0x80 : 0;		b = ((len & 0xfe000000) >> (3 * 7)) | a;		len <<= 7;		writex(&b, 1);		return;	}}void Stream::writestrp(const char *str){	unsigned char l = str ? strlen(str) : 0;	writex(&l, 1);	writex(str, l);}char *Stream::readstrw(){	short t;	byte lbuf[2];	readx(lbuf, 2);	int l = lbuf[0] | lbuf[1] << 8;	char *a = ht_malloc(l+1);	if (!a) throw std::bad_alloc();	for (int i=0; i < l; i++) {		// FIXME: this looks wrong		readx(&t, 2);		a[i] = (char)t;	}	a[l] = 0;	return a;}void Stream::writestrw(const char *str){	/* FIXME: someone implement me ? */	throw NotImplementedException(HERE);}/* *   StreamLayer */StreamLayer::StreamLayer(Stream *s, bool own) : Stream(){	mStream = s;	mOwnStream = own;}StreamLayer::~StreamLayer(){	if (mOwnStream) delete mStream;}IOAccessMode StreamLayer::getAccessMode() const{	return mStream->getAccessMode();}String &StreamLayer::getDesc(String &result) const{	return mStream->getDesc(result);}int StreamLayer::setAccessMode(IOAccessMode mode){	return mStream->setAccessMode(mode);}uint StreamLayer::read(void *buf, uint size){	return mStream->read(buf, size);}uint StreamLayer::write(const void *buf, uint size){	return mStream->write(buf, size);}Stream *StreamLayer::getLayered() const{	return mStream;}void StreamLayer::setLayered(Stream *newLayered, bool ownNewLayered){	mStream = newLayered;	mOwnStream = ownNewLayered;}/* *	ObjectStream */ObjectStream::ObjectStream(Stream *s, bool own_s) : StreamLayer(s, own_s){}void ObjectStream::putCommentf(const char *comment_format, ...){	char buf[1024];	va_list arg;	va_start(arg, comment_format);	ht_vsnprintf(buf, sizeof buf, comment_format, arg);	va_end(arg);	putComment(buf);}/** *	A object-stream-layer. */ObjectStreamLayer::ObjectStreamLayer(ObjectStream *aObjStream, bool own_ostream): ObjectStream(aObjStream, own_ostream){	mObjStream = aObjStream;}void ObjectStreamLayer::getBinary(void *buf, uint size, const char *desc){	return mObjStream->getBinary(buf, size, desc);}bool ObjectStreamLayer::getBool(const char *desc){	return mObjStream->getBool(desc);}uint64 ObjectStreamLayer::getInt(uint size, const char *desc){	return mObjStream->getInt(size, desc);}Object *ObjectStreamLayer::getObjectInternal(const char *name, ObjectID id){	return mObjStream->getObjectInternal(name, id);}char *ObjectStreamLayer::getString(const char *desc){	return mObjStream->getString(desc);}byte *ObjectStreamLayer::getLenString(int &len, const char *desc){	return mObjStream->getLenString(len, desc);}void ObjectStreamLayer::putBinary(const void *mem, uint size, const char *desc){	return mObjStream->putBinary(mem, size, desc);}void ObjectStreamLayer::putBool(bool b, const char *desc){	return mObjStream->putBool(b, desc);}void ObjectStreamLayer::putComment(const char *comment){	return mObjStream->putComment(comment);}void ObjectStreamLayer::putInt(uint64 i, uint size, const char *desc, uint int_fmt_hint){	return mObjStream->putInt(i, size, desc, int_fmt_hint);}void ObjectStreamLayer::putObject(const Object *object, const char *name, ObjectID id){	return mObjStream->putObject(object, name, id);}void ObjectStreamLayer::putSeparator(){	return mObjStream->putSeparator();}void ObjectStreamLayer::putString(const char *string, const char *desc){	return mObjStream->putString(string, desc);}void ObjectStreamLayer::putLenString(const byte *string, int len, const char *desc){	return mObjStream->putLenString(string, len, desc);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产性天天综合网| 亚洲情趣在线观看| 欧美不卡视频一区| 欧美精品少妇一区二区三区| 91视频国产观看| 91在线国产观看| 99视频精品全部免费在线| 成人自拍视频在线观看| 国产不卡视频一区二区三区| 国产精品自在在线| 国产精品一区二区免费不卡| 国产精品一色哟哟哟| 成人在线视频首页| 成人黄色国产精品网站大全在线免费观看| 国产日本欧洲亚洲| 中文字幕国产一区二区| 国产精品麻豆视频| 一区二区三区日本| 亚洲一区二区欧美| 日本伊人色综合网| 久久99久久久久久久久久久| 国产一区二区三区免费| 成人一区二区三区| 99re成人精品视频| 91免费观看视频在线| 在线欧美日韩精品| 色欧美乱欧美15图片| 91免费视频观看| 欧美另类一区二区三区| 欧美日韩一区二区在线观看 | 欧美激情在线一区二区| 欧美婷婷六月丁香综合色| 欧美伊人精品成人久久综合97| 91美女视频网站| 欧美亚洲动漫精品| 欧美日韩一区二区三区视频| 日韩欧美成人激情| 精品国产乱子伦一区| 国产精品久久久久久久久晋中| 中文字幕一区二区5566日韩| 亚洲在线观看免费视频| 石原莉奈在线亚洲二区| 国产福利精品导航| 91蜜桃传媒精品久久久一区二区| 不卡的av网站| 欧美日韩国产精品成人| 日韩午夜在线观看视频| 中文字幕中文字幕在线一区| 成人欧美一区二区三区| 日韩电影一区二区三区| 国产一级精品在线| 在线观看一区不卡| 精品国一区二区三区| 亚洲欧洲综合另类在线| 亚洲mv大片欧洲mv大片精品| 日本视频中文字幕一区二区三区| 成人污污视频在线观看| 91成人在线免费观看| 久久蜜臀精品av| 有坂深雪av一区二区精品| 国产伦精品一区二区三区在线观看| 国产精品18久久久久久久久久久久 | 欧美一区二区三区不卡| 久久综合九色综合久久久精品综合| 日本一区二区三区dvd视频在线| 亚洲高清久久久| 久久99久久久欧美国产| 欧美日韩一级视频| 久久亚洲春色中文字幕久久久| 一区二区三区免费看视频| 久久99国产精品麻豆| 在线中文字幕一区| xfplay精品久久| 三级久久三级久久久| 成人免费视频视频| 欧美成人三级电影在线| 亚洲欧美激情一区二区| 人妖欧美一区二区| 精品视频在线免费观看| 国产欧美精品国产国产专区| 免费在线观看视频一区| 99久久久无码国产精品| 久久视频一区二区| 亚洲va欧美va天堂v国产综合| av中文字幕不卡| 精品欧美一区二区在线观看| 亚洲福利视频一区二区| 成人福利视频在线| 欧美日韩精品一区二区天天拍小说| 亚洲欧美日韩精品久久久久| 国产综合久久久久久鬼色| 欧美剧情电影在线观看完整版免费励志电影| 日韩欧美国产一区二区在线播放 | 久久久久久久精| 婷婷综合在线观看| 欧美三级电影在线看| 国产欧美精品在线观看| 国产大陆a不卡| 欧美成人激情免费网| 久久国产尿小便嘘嘘| 欧美日韩视频在线观看一区二区三区| 一区二区三区在线免费播放| 国产乱码精品一品二品| 精品国产一区二区三区久久影院| 亚洲国产一区二区在线播放| 久久成人免费日本黄色| 欧美tickling网站挠脚心| 五月综合激情网| 制服丝袜一区二区三区| 亚洲国产综合在线| 91精品国产综合久久国产大片| 亚洲综合色自拍一区| 欧美精品一级二级三级| 午夜婷婷国产麻豆精品| 欧美日韩高清一区| 一区二区三区四区亚洲| 91蜜桃网址入口| 久久久国产精华| 国产酒店精品激情| 国产精品天天看| 国产高清视频一区| 综合网在线视频| 91免费看`日韩一区二区| 亚洲第一狼人社区| 欧美日韩高清一区二区| 极品少妇一区二区三区精品视频| 欧美一激情一区二区三区| 韩国欧美国产1区| 久久先锋影音av| 色综合中文综合网| 国产精品美女一区二区三区| 五月天亚洲婷婷| 精品国产乱码91久久久久久网站| 日韩不卡一区二区三区| 欧美精品一区二区三区四区| 老司机精品视频在线| 亚洲国产精品高清| 成人免费观看视频| 亚洲图片欧美色图| 91精品国产一区二区三区| 国产精品77777| 一区二区中文视频| 欧美精品一二三| 国产一区欧美二区| 亚洲精品免费播放| 欧美日韩国产高清一区二区三区| 国产乱码字幕精品高清av| 欧美国产精品久久| 欧美日韩国产系列| 国产一区二区视频在线播放| 亚洲视频中文字幕| 3d动漫精品啪啪1区2区免费| 国产成人高清视频| 亚洲乱码国产乱码精品精可以看 | 欧美极品另类videosde| 91免费视频网址| 国产一区二区三区四区五区入口 | 亚洲18色成人| 国产无人区一区二区三区| 成人黄色在线视频| 日韩国产成人精品| 国产欧美日产一区| 91精品国产一区二区三区蜜臀| 国产精品一区二区果冻传媒| 亚洲综合清纯丝袜自拍| 欧美v亚洲v综合ⅴ国产v| 色婷婷综合激情| 激情欧美日韩一区二区| 亚洲已满18点击进入久久| 日韩一区二区三区三四区视频在线观看| 成人国产精品免费观看| 石原莉奈在线亚洲三区| 亚洲免费观看高清完整版在线观看 | 一区二区三区高清在线| 久久久久久9999| 欧美色图片你懂的| 成人aaaa免费全部观看| 天天综合网天天综合色| 亚洲人亚洲人成电影网站色| 欧美一区二区三区人| 欧美日韩一区精品| 国产成人精品免费在线| 极品尤物av久久免费看| 亚洲一区在线看| 亚洲欧美偷拍卡通变态| 久久亚洲精品国产精品紫薇| 91精品欧美久久久久久动漫| 不卡的电视剧免费网站有什么| 国产一区91精品张津瑜| 午夜精品一区二区三区电影天堂| 亚洲少妇中出一区| 久久久午夜精品| 精品国产乱码久久久久久牛牛| 91丨porny丨中文| 成人av小说网| 精品亚洲国产成人av制服丝袜| 日本va欧美va精品发布| 一二三区精品视频| 夜夜亚洲天天久久| 国产婷婷一区二区|