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

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

?? file.h

?? common c++提供socket
?? H
?? 第 1 頁 / 共 2 頁
字號:
// Copyright (C) 1999-2005 Open Source Telecom Corporation.//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// As a special exception, you may use this file as part of a free software// library without restriction.  Specifically, if other files instantiate// templates or use macros or inline functions from this file, or you compile// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by// the GNU General Public License.  This exception does not however    // invalidate any other reasons why the executable file might be covered by// the GNU General Public License.    //// This exception applies only to the code released under the name GNU// Common C++.  If you copy code from other releases into a copy of GNU// Common C++, as the General Public License permits, the exception does// not apply to the code that you add in this way.  To avoid misleading// anyone as to the status of such modified files, you must delete// this exception notice from them.//// If you write modifications of your own for GNU Common C++, it is your choice// whether to permit this exception to apply to your modifications.// If you do not wish that, delete this exception notice.///** * @file file.h * @short Files and dynamic loader services. **/#ifndef	CCXX_FILE_H_#define	CCXX_FILE_H_#ifndef CCXX_CONFIG_H_#include <cc++/config.h>#endif#ifndef CCXX_MISSING_H_#include <cc++/missing.h>#endif#ifndef	CCXX_THREAD_H_#include <cc++/thread.h>#endif#ifndef	CCXX_EXCEPTION_H_#include <cc++/exception.h>#endif#ifndef WIN32# ifdef __BORLANDC__#  include <stdio.h>#  include <sys/types.h># else#  include <cstdio># endif# include <dirent.h># include <sys/stat.h># include <sys/mman.h>#else# if __BORLANDC__ >= 0x0560#  include <dirent.h>#  include <sys/stat.h># else#  include <direct.h># endif#endif#ifdef	HAVE_SHL_LOAD#include <dl.h>#endif#ifdef  HAVE_MACH_DYLD#include <mach-o/dyld.h>#endif#ifdef	CCXX_NAMESPACESnamespace ost {#endiftypedef	unsigned long pos_t;#ifndef WIN32// use a define so that if the sys/types.h header already defines caddr_t// as it may on BSD systems, we do not break it by redefining again.#undef  caddr_t#define	caddr_t	char *typedef size_t ccxx_size_t;#else#if	!defined(__BORLANDC__) || __BORLANDC__ >= 0x0560typedef LONG off_t;#endiftypedef void* caddr_t;typedef DWORD ccxx_size_t;#endif#ifndef	PATH_MAX#define	PATH_MAX	256#endif#ifndef	NAME_MAX#define	NAME_MAX	64#endifclass __EXPORT File{public:	enum Error	{		errSuccess = 0,		errNotOpened,		errMapFailed,		errInitFailed,		errOpenDenied,		errOpenFailed,		errOpenInUse,		errReadInterrupted,		errReadIncomplete,		errReadFailure,		errWriteInterrupted,		errWriteIncomplete,		errWriteFailure,		errLockFailure,		errExtended	};	typedef enum Error Error;	enum Access	{#ifndef WIN32		accessReadOnly = O_RDONLY,		accessWriteOnly= O_WRONLY,		accessReadWrite = O_RDWR#else		accessReadOnly = GENERIC_READ,		accessWriteOnly = GENERIC_WRITE,		accessReadWrite = GENERIC_READ | GENERIC_WRITE#endif	};	typedef enum Access Access;protected:	typedef struct _fcb	{		struct _fcb *next;		caddr_t address;		ccxx_size_t len;		off_t pos;		bool locked;	} fcb_t;public:#ifdef	WIN32	enum Open	{		openReadOnly, // = FILE_OPEN_READONLY,		openWriteOnly, // = FILE_OPEN_WRITEONLY,		openReadWrite, // = FILE_OPEN_READWRITE,		openAppend, // = FILE_OPEN_APPEND,		openTruncate // = FILE_OPEN_TRUNCATE	};	#else	enum Open	{		openReadOnly = O_RDONLY,		openWriteOnly = O_WRONLY,		openReadWrite = O_RDWR,		openAppend = O_WRONLY | O_APPEND,#ifdef	O_SYNC		openSync = O_RDWR | O_SYNC,#else		openSync = O_RDWR,#endif		openTruncate = O_RDWR | O_TRUNC	};	typedef enum Open Open;/* to be used in future */#ifndef	S_IRUSR#define	S_IRUSR	0400#define	S_IWUSR 0200#define	S_IRGRP 0040#define	S_IWGRP 0020#define	S_IROTH 0004#define	S_IWOTH	0002#endif#endif // !WIN32#ifndef WIN32	enum Attr	{		attrInvalid = 0,		attrPrivate = S_IRUSR | S_IWUSR,		attrGroup = attrPrivate | S_IRGRP | S_IWGRP,		attrPublic = attrGroup | S_IROTH | S_IWOTH	};	#else // defined WIN32	enum Attr {		attrInvalid=0,		attrPrivate,		attrGroup,		attrPublic	};#endif // !WIN32	typedef enum Attr Attr;#ifdef	WIN32	enum Complete	{		completionImmediate, // = FILE_COMPLETION_IMMEDIATE,		completionDelayed, // = FILE_COMPLETION_DELAYED,		completionDeferred // = FILE_COMPLETION_DEFERRED	};	enum Mapping	{		mappedRead,		mappedWrite,		mappedReadWrite	};#else	enum Mapping	{		mappedRead = accessReadOnly,		mappedWrite = accessWriteOnly,		mappedReadWrite = accessReadWrite	};	enum Complete	{		completionImmediate,		completionDelayed,		completionDeferred	};#endif	typedef enum Complete Complete;	typedef enum Mapping Mapping;public:	static const char *getExtension(const char *path);	static const char *getFilename(const char *path);	static char *getFilename(const char *path, char *buffer, size_t size = NAME_MAX);	static char *getDirname(const char *path, char *buffer, size_t size = PATH_MAX);	static char *getRealpath(const char *path, char *buffer, size_t size = PATH_MAX);};/** * A low level portable directory class.  Used to support ccstd Directory * container.  This provides a basic mechanism for allocating and * accessing file entries. * * @author David Sugar <dyfet@ostel.com> * @short low level directory access class. */class __EXPORT Dir : public File{private:#ifndef WIN32	DIR *dir;#ifdef	HAVE_READDIR_R	struct dirent *save;	char save_space[sizeof(struct dirent) + PATH_MAX + 1];#endif	struct dirent *entry;#else	HANDLE hDir;	WIN32_FIND_DATA data, fdata;	char *name;#endifpublic:	Dir(const char *name = NULL);	static bool create(const char *path, Attr attr = attrGroup);	static bool remove(const char *path);	static bool setPrefix(const char *path);	static bool getPrefix(char *path, size_t size = PATH_MAX);	void open(const char *name);	void close(void);	virtual ~Dir();	const char *getName(void);	const char *operator++()		{return getName();};	const char *operator++(int)		{return getName();};	const char *operator*();	bool rewind(void);	bool operator!()#ifndef WIN32		{return !dir;};#else		{return hDir != INVALID_HANDLE_VALUE;};#endif	bool isValid(void);};/** * A generic class to walk a hierarchical directory structure.   * * @author David Sugar <dyfet@ostel.com> * @short Directory tree walking. */class __EXPORT	DirTree {private:	char path[PATH_MAX + 1];	Dir *dir;	unsigned max, current, prefixpos;protected:	/**	 * Virtual method to filter results.  Virtual override methods	 * should call baseclass method to assure . and .. names are	 * stripped out.	 *	 * @return true if current filename is accepted.	 * @param file path to examine	 * @param ino info of type, date, etc.	 */	virtual bool filter(const char *file, struct stat *ino);public:	/**	 * Construct a directory tree walk starting at the specified	 * prefix.  A maximum subdirectory depth is also specified.	 *	 * @param prefix to start walk.	 * @param maxdepth subdirectory depth to examine.	 */	DirTree(const char *prefix, unsigned maxdepth);	/**	 * Construct an un-opened directory tree of a known maximum depth	 *	 * @param maxdepth subdirectory subdirectory depth. 	 */	DirTree(unsigned maxdepth);	virtual ~DirTree();	/**	 * Open a directory tree path.	 *	 * @param prefix directory path to open.	 */	void open(const char *prefix);	/**	 * Close the directory path.	 */	void close(void);	/**	 * Extract the next full pathname from the directory walk.	 * When returning directories, a '/' is appended.  The	 * returned string is a buffer of MAX_PATH size.	 *	 * @return path of next subdirectory entry or NULL.	 */	char *getPath(void);	/**	 * This is used to step through the filter virtual for an	 * entire subtree, and is used for cases where a derived	 * DirTree class performs it's primary operations through	 * filter rather than externally by calling getPath().	 *	 * @return number of files and directories examined.	 * @param prefix directory path to examine.	 */	unsigned perform(const char *prefix);};/** * The purpose of this class is to define a base class for low level * random file access that is portable between Win32 and Posix systems. * This class is a foundation both for optimized thread shared and * traditional locked file access that is commonly used to build * database services, rather than the standard C++ streaming file classes. * * @author David Sugar <dyfet@ostel.com> * @short Portable random disk file access. */class __EXPORT RandomFile : protected Mutex, public File{private:	Error errid;	char *errstr;protected:#ifndef WIN32	int fd;	// FIXME: WIN32 as no access member	Access access;#else	HANDLE fd;#endif	char *pathname;	struct	{		unsigned count : 16;		bool thrown : 1;		bool initial : 1;#ifndef WIN32		bool immediate : 1;#endif		bool temp : 1;	} flags;	/**	 * Create an unopened random access file.	 */	RandomFile(const char *name = NULL);	/**	 * Default copy constructor.	 */	RandomFile(const RandomFile &rf);	/**	 * Post an error event.	 *	 * @return error code.	 * @param errid error code.	 * @param errstr error message string.	 */	Error error(Error errid, char *errstr = NULL);	/**	 * Post an extended string error message.	 *	 * @return errExtended.	 * @param err error string.	 */	inline Error error(char *err)		{return error(errExtended, err);};	/**	 * Used to enable or disable throwing of exceptions on	 * errors.	 *	 * @param enable true if errors will be thrown.	 */	inline void setError(bool enable)		{flags.thrown = !enable;};#ifndef WIN32	/**	 * Used to set file completion modes.	 *	 * @return errSuccess if okay.	 * @param mode completion mode.	 * @todo implement in win32	 */	Error setCompletion(Complete mode);#endif	/**	 * Used to set the temporary attribute for the file.  Temporary	 * files are automatically deleted when closed.	 *	 * @param enable true for marking as temporary.	 */	inline void setTemporary(bool enable)		{flags.temp = enable;};	/**	 * This method is used to initialize a newly created file as	 * indicated by the "initial" flag.  This method also returns	 * the file access permissions that should be associated with	 * the file.  This method should never be called directly, but	 * is instead used to impliment the "Initial" method.  Typically	 * one would use this to build an empty database shell when a	 * previously empty database file is created.	 *	 * @return access, or attrInvalid if should be removed.	 */	virtual Attr initialize(void);	/**	 * Close the file.	 */	void final(void);public:	/**	 * Destroy a random access file or it's derived class.	 */	virtual ~RandomFile();	/**	 * This method should be called right after a RandomFile derived	 * object has been created.  This method will invoke initialize	 * if the object is newly created, and set file access permissions	 * appropriately.	 *	 * @return true if file had to be initialized.	 */	bool initial(void);	/**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品对白交换视频| 亚洲免费视频成人| 欧美日韩成人综合天天影院| 成人黄色小视频| 日韩国产精品久久久久久亚洲| 国产免费观看久久| 久久久91精品国产一区二区精品| 欧美日韩国产综合草草| 一本大道久久a久久综合| 大白屁股一区二区视频| 国产一区二区在线观看视频| 日韩电影免费在线看| 亚洲午夜一区二区| 亚洲一线二线三线久久久| 亚洲欧美日韩精品久久久久| 国产日韩欧美精品一区| 久久精品人人做人人爽人人| 欧美精品一区男女天堂| 久久色成人在线| 国产欧美一区二区精品性色超碰| 欧美精品一区二区不卡| 久久久久久麻豆| 久久久精品黄色| 中文字幕亚洲在| 一区二区三区欧美久久| 亚洲一级在线观看| 卡一卡二国产精品| 国产伦精品一区二区三区免费迷| 国产.欧美.日韩| 91黄色在线观看| 7777女厕盗摄久久久| 久久夜色精品国产噜噜av| 国产精品伦一区二区三级视频| 中文字幕在线一区免费| 亚洲第一主播视频| 国产宾馆实践打屁股91| 色噜噜狠狠成人网p站| 欧美一区二区三区免费观看视频 | 一区二区三区加勒比av| 久久精品99国产精品| 99久久精品国产导航| 日韩午夜小视频| 一区二区三区中文字幕| 激情综合网激情| 在线视频中文字幕一区二区| 久久九九全国免费| 久久国产精品99久久久久久老狼| a4yy欧美一区二区三区| 欧美一二区视频| 亚洲无线码一区二区三区| 国产成人激情av| 精品久久人人做人人爰| 亚洲成人综合网站| 欧美日韩一区国产| 亚洲天堂av老司机| 丁香一区二区三区| 日韩三级中文字幕| 视频一区二区三区中文字幕| 99精品在线免费| 国产精品你懂的| 99这里只有精品| 中文字幕免费观看一区| 国产精品1区2区| 国产亚洲精品bt天堂精选| 国产老妇另类xxxxx| 久久久www成人免费毛片麻豆 | 免费在线观看成人| 精品国产免费人成在线观看| 五月天欧美精品| 欧美一二三四区在线| 美女在线一区二区| 欧美大片在线观看一区二区| 男女男精品网站| 久久久99久久精品欧美| 成人白浆超碰人人人人| ㊣最新国产の精品bt伙计久久| 99久免费精品视频在线观看| 一区二区三区不卡在线观看| 精品视频免费在线| 久久成人精品无人区| 国产亚洲人成网站| 欧美中文字幕亚洲一区二区va在线| 亚洲一级电影视频| 久久亚洲免费视频| 91丨porny丨在线| 天天影视色香欲综合网老头| 精品国产1区二区| 91浏览器打开| 国内不卡的二区三区中文字幕| 国产精品网站在线观看| 在线电影欧美成精品| 成人亚洲一区二区一| 日韩高清一区在线| 亚洲另类在线一区| 久久久久99精品一区| 欧美日韩aaaaa| 91污片在线观看| 精品无码三级在线观看视频| 亚洲精品美腿丝袜| 日本一区二区三区dvd视频在线| 精品视频资源站| 色婷婷av久久久久久久| 国产一区二区三区蝌蚪| 亚洲电影在线免费观看| 亚洲欧美综合色| 国产免费观看久久| 久久嫩草精品久久久久| 4438x亚洲最大成人网| 91在线视频免费91| 99riav一区二区三区| www.综合网.com| 9人人澡人人爽人人精品| 国产一区二区伦理片| 久久97超碰国产精品超碰| 久久国产福利国产秒拍| 蜜桃久久精品一区二区| 美国欧美日韩国产在线播放| 日韩av二区在线播放| 青青草原综合久久大伊人精品优势| 亚洲图片欧美综合| 亚洲成人免费影院| 日韩专区在线视频| 男人的天堂亚洲一区| 久久精品国内一区二区三区| 麻豆久久久久久久| 国产麻豆一精品一av一免费| 成人免费毛片片v| 色综合一区二区| 欧美精品高清视频| 欧美大片拔萝卜| 国产精品久久看| 亚洲女性喷水在线观看一区| 亚洲综合视频在线| 国产伦精品一区二区三区视频青涩| 国产伦精品一区二区三区视频青涩 | 精品91自产拍在线观看一区| 久久久www成人免费毛片麻豆| 亚洲人成在线观看一区二区| 亚洲成va人在线观看| 国产精品一区2区| 色综合久久久久综合| 欧美videossexotv100| 国产精品第一页第二页第三页| 五月婷婷综合网| 国产激情一区二区三区| 国产精品久久久久aaaa| 天天综合天天做天天综合| av在线播放成人| 精品国产乱码久久久久久闺蜜| **欧美大码日韩| 国内久久精品视频| 欧美少妇性性性| 国产精品久久久久国产精品日日| 美洲天堂一区二卡三卡四卡视频 | 欧美精品久久99久久在免费线 | 在线精品视频免费观看| 日本一区二区三区四区在线视频 | 亚洲欧洲成人精品av97| 蜜臀av性久久久久蜜臀av麻豆| 色婷婷国产精品| 中文字幕亚洲成人| 国产露脸91国语对白| 日韩欧美国产系列| 亚洲成人高清在线| 欧美剧情电影在线观看完整版免费励志电影| 欧美国产精品专区| 成人开心网精品视频| 国产日韩三级在线| 国产精品综合一区二区三区| 久久综合久久综合久久综合| 看电视剧不卡顿的网站| 日韩三级视频在线看| 蜜桃视频一区二区三区| 欧美一区二区三区人| 久久精品国产精品亚洲红杏| 欧美成人a∨高清免费观看| 国产在线精品一区二区夜色 | 91久久线看在观草草青青| 一级女性全黄久久生活片免费| 在线影视一区二区三区| 亚洲在线观看免费| 日韩一级完整毛片| 粉嫩aⅴ一区二区三区四区五区| 久久亚洲私人国产精品va媚药| 国产精品99久久久久久久女警| 欧美国产一区二区在线观看| 99视频精品免费视频| 亚洲国产视频在线| 日韩欧美成人一区| 成人激情电影免费在线观看| 一区二区三区资源| 日韩美女一区二区三区四区| 国产91精品精华液一区二区三区| 一区二区三区四区高清精品免费观看| 欧美久久久影院| 成人18视频日本| 久久机这里只有精品| 一区二区欧美精品| 中文字幕高清不卡| 欧美日韩国产一二三|