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

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

?? stream.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 3 頁
字號:
/* *	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);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷久久综合九色综合伊人色| 精品少妇一区二区三区| 欧美天堂一区二区三区| av一本久道久久综合久久鬼色| 国产不卡视频一区二区三区| 99精品在线免费| 91精品久久久久久久99蜜桃| 久久影院视频免费| 亚洲精品视频自拍| 日韩一区二区不卡| 综合久久久久久久| 成人av电影在线网| 欧美日韩情趣电影| 91在线视频免费观看| 91久久精品一区二区三| 成人亚洲精品久久久久软件| av电影天堂一区二区在线观看| 欧美久久久久久久久| 欧美日韩国产大片| 亚洲欧美一区二区三区国产精品 | 国产精品18久久久久久久久久久久| av网站一区二区三区| 欧美一区二区三区色| 一区二区三区四区亚洲| 精品一区二区三区在线播放 | 91精选在线观看| 亚洲一区自拍偷拍| 成人网在线免费视频| 中文字幕一区二区三区在线不卡 | 丁香亚洲综合激情啪啪综合| 精品视频资源站| 亚洲一区二区视频在线| www.亚洲人| 国产日韩欧美在线一区| 亚洲国产成人av| 97精品国产露脸对白| 欧美一区二区三区电影| 亚洲国产日韩精品| 欧美sm美女调教| 日韩影院免费视频| 91国偷自产一区二区三区观看| 国产网红主播福利一区二区| 麻豆91免费观看| 91麻豆精品国产91久久久资源速度| 亚洲欧美综合色| 97国产一区二区| 国产精品水嫩水嫩| 成人免费看片app下载| 久久精品一二三| 成人激情免费视频| 国产网红主播福利一区二区| 久久国产乱子精品免费女| 欧美精品第1页| 丝袜美腿亚洲综合| 日韩一区二区在线播放| 日韩综合一区二区| 91精品国产综合久久精品性色| 亚洲一卡二卡三卡四卡| 成人高清免费观看| 精品乱人伦一区二区三区| 亚洲最新视频在线观看| 一本大道久久a久久精品综合| 国产精品伦一区二区三级视频| 91精品国产综合久久久久久| 亚洲国产精品久久久男人的天堂 | 首页国产欧美久久| 欧美肥妇bbw| 另类成人小视频在线| 精品国产乱码久久久久久1区2区| 久久精品国产精品青草| 欧美精品一区二区高清在线观看| av在线不卡免费看| 亚洲二区在线视频| 天天综合色天天| 26uuu亚洲综合色欧美| 国产91露脸合集magnet| 午夜精品久久久久久久久久久| 日韩三级精品电影久久久| 成人激情小说网站| 亚洲成人精品在线观看| 欧美日韩一区二区不卡| 国产精品一区二区果冻传媒| 国产精品免费人成网站| 欧美日韩视频在线观看一区二区三区 | 国产精品一区二区视频| 国产精品夫妻自拍| 亚洲精品一区二区三区福利| 国产成人免费高清| 亚洲男人天堂av| 欧美激情中文不卡| 欧美精三区欧美精三区| 99久久综合色| 捆绑调教美女网站视频一区| 中文字幕佐山爱一区二区免费| 日韩午夜av一区| 成人小视频在线| 欧美久久久一区| 国产成人啪免费观看软件| 麻豆一区二区在线| 亚洲一区二区视频在线观看| 国产精品国产三级国产三级人妇| 欧美丰满嫩嫩电影| 欧美日韩国产三级| 色综合色综合色综合色综合色综合| 日韩经典中文字幕一区| 一区二区久久久久久| 精品国产伦一区二区三区观看方式 | 欧美视频在线观看一区| 国产成人福利片| 理论电影国产精品| 香蕉加勒比综合久久| 中文字幕一区免费在线观看 | 91精品国产综合久久婷婷香蕉 | 久久精品一区二区三区不卡牛牛| 欧美美女一区二区三区| 日本精品视频一区二区| 成人一区二区三区中文字幕| 免费美女久久99| 天堂精品中文字幕在线| 自拍偷自拍亚洲精品播放| 久久久久久99久久久精品网站| 欧美一区二区三区在线看| 色拍拍在线精品视频8848| 欧美一级黄色片| 欧美片在线播放| 欧美日韩一区高清| 色婷婷综合久久久久中文一区二区| 国产精品一区二区你懂的| 亚洲乱码一区二区三区在线观看| 国产精品美女久久久久久| 日韩精品一区二区三区在线播放| 26uuu欧美| 国产亚洲综合性久久久影院| 91麻豆精品久久久久蜜臀| 精品国产免费一区二区三区香蕉| 欧美一级夜夜爽| 久久久久一区二区三区四区| 亚洲女同一区二区| 日韩精品亚洲一区| 日日夜夜一区二区| 国产suv精品一区二区6| 丁香婷婷综合五月| 国产曰批免费观看久久久| 国产福利91精品一区二区三区| 国产丶欧美丶日本不卡视频| 97久久人人超碰| 欧美午夜精品久久久久久孕妇| 欧美大片一区二区| 久久久电影一区二区三区| 亚洲精品日韩综合观看成人91| 亚洲一区二区三区四区在线观看 | 日韩免费高清电影| 久久久亚洲精品石原莉奈| 中文字幕精品三区| 国产精品国产三级国产| 一区二区三区四区av| 久久99精品久久久久久国产越南| 丁香婷婷综合色啪| 日韩一级视频免费观看在线| 精品国产成人系列| 亚洲少妇屁股交4| 亚洲国产精品自拍| 国产乱码精品一区二区三区av| 色播五月激情综合网| 欧美成va人片在线观看| 亚洲欧美一区二区久久| 免费在线观看一区二区三区| 成人av手机在线观看| 欧美日韩视频在线第一区| 久久久久久久久久久久电影| 久久久久久久久久久电影| 日韩电影一区二区三区四区| 免费人成网站在线观看欧美高清| 精久久久久久久久久久| 青椒成人免费视频| 99re亚洲国产精品| 久久午夜色播影院免费高清| 欧美二区三区的天堂| 精品日韩av一区二区| 亚洲国产精品天堂| 欧美精品日韩一区| 国产精品伦理在线| 国内成人免费视频| 欧美成人免费网站| 婷婷综合五月天| 成人av在线网| 欧美激情自拍偷拍| 国产精品影视网| 天天综合天天做天天综合| 国产一区二区福利| 国产大片一区二区| 欧美日韩亚洲综合一区| 日本一区二区三级电影在线观看| 亚洲在线视频一区| heyzo一本久久综合| 色哟哟日韩精品| 91精选在线观看| 一二三区精品视频| 国产成人一级电影| 欧美一区二区视频观看视频|