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

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

?? 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);	/**

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本伦理一区二区| 成人一区在线看| 欧美一区二区黄| 免费成人你懂的| 久久久久久综合| 99久久国产综合精品色伊| 夜夜嗨av一区二区三区网页| 538在线一区二区精品国产| 九九国产精品视频| 国产精品视频第一区| 91视频你懂的| 日韩和欧美一区二区三区| 日韩美一区二区三区| 国产成人福利片| 亚洲精品视频自拍| 91精品国产丝袜白色高跟鞋| 国产在线播放一区| 一区二区三区中文字幕电影| 91精品国产欧美一区二区| 风流少妇一区二区| 亚洲一区二区视频| 久久综合色综合88| 日本电影亚洲天堂一区| 裸体健美xxxx欧美裸体表演| 国产精品婷婷午夜在线观看| 欧美色欧美亚洲另类二区| 九色综合狠狠综合久久| 亚洲欧美偷拍另类a∨色屁股| 欧美三区在线观看| 国产精品一区二区三区99| 一区av在线播放| 精品99999| 精品视频一区三区九区| 国产精品一区二区你懂的| 亚洲成年人网站在线观看| 国产日韩高清在线| 欧美一二三四在线| 97久久人人超碰| 精品一区二区三区免费| 一区二区不卡在线视频 午夜欧美不卡在| 日韩女优av电影| 日本精品免费观看高清观看| 国产一区在线看| 青草国产精品久久久久久| 亚洲男帅同性gay1069| 久久精品夜夜夜夜久久| 7777精品伊人久久久大香线蕉的 | 色综合久久九月婷婷色综合| 美女视频一区二区三区| 一级精品视频在线观看宜春院| 久久久久97国产精华液好用吗 | 91精品国模一区二区三区| 成人国产精品免费观看动漫| 看电视剧不卡顿的网站| 亚洲国产成人精品视频| 亚洲人精品一区| 日本一区二区视频在线观看| 日韩精品一区二区三区中文不卡 | 亚洲1区2区3区视频| 国产精品免费视频网站| 久久久精品tv| 久久精品亚洲精品国产欧美kt∨| 这里只有精品免费| 欧美老人xxxx18| 在线观看免费视频综合| 不卡的电影网站| 国产69精品久久99不卡| 国产精品原创巨作av| 国产一区二区三区四区五区美女 | 成人免费毛片片v| 精品亚洲国内自在自线福利| 免费日韩伦理电影| 日本aⅴ亚洲精品中文乱码| 亚洲1区2区3区视频| 午夜精品久久久久久久99樱桃| 夜色激情一区二区| 一区二区免费看| 亚洲第一在线综合网站| 亚洲国产aⅴ成人精品无吗| 性欧美疯狂xxxxbbbb| 天天综合色天天综合| 日韩在线一区二区| 男女视频一区二区| 国模娜娜一区二区三区| 国产成人午夜电影网| 成人免费av在线| 一本色道综合亚洲| 欧美日韩亚洲综合在线| 日韩一区二区精品葵司在线 | 韩国中文字幕2020精品| 国产成人亚洲精品青草天美| 成人美女在线视频| 色婷婷国产精品| 欧美日韩精品一二三区| 欧美成人精品高清在线播放 | 91精品国产美女浴室洗澡无遮挡| 日韩视频在线你懂得| 欧美激情在线看| 亚洲免费观看视频| 日本午夜一本久久久综合| 国产一区二区久久| 色综合色综合色综合色综合色综合 | 国产精品第四页| 亚洲国产精品影院| 久久精品国产免费看久久精品| 国产精品夜夜嗨| 91麻豆免费视频| 欧美一区二区在线免费播放| 久久精品一级爱片| 亚洲一区二区三区中文字幕| 精品一区二区三区视频| 91女神在线视频| 欧美一区二区三区视频在线观看| 国产三级精品三级在线专区| 亚洲午夜久久久| 国产一二三精品| 色噜噜狠狠色综合欧洲selulu| 日韩精品一区在线观看| 亚洲精品欧美二区三区中文字幕| 青草国产精品久久久久久| 成人动漫中文字幕| 欧美一区二区三区视频| 亚洲视频在线一区二区| 久久精品免费观看| 色婷婷久久久久swag精品| 精品国产123| 亚洲国产综合色| 国产91在线看| 日韩欧美一级特黄在线播放| 亚洲人123区| 粉嫩嫩av羞羞动漫久久久| 欧美一区二区三区系列电影| 亚洲精品久久7777| 高清不卡在线观看av| 91精品免费观看| 亚洲精品五月天| 国产91丝袜在线播放| 精品日本一线二线三线不卡| 亚洲免费观看高清完整版在线 | 91蝌蚪porny成人天涯| 26uuuu精品一区二区| 午夜视频在线观看一区二区三区| 成人一级黄色片| 久久影音资源网| 日本不卡123| 91精品欧美久久久久久动漫| 一区二区三区波多野结衣在线观看| 成人黄色小视频| 国产视频一区二区在线| 国内外成人在线| 精品欧美一区二区在线观看| 亚洲va欧美va国产va天堂影院| 色视频成人在线观看免| 中文字幕亚洲不卡| 成人一区在线观看| 国产日韩精品一区二区三区| 国产精品一区二区黑丝| 久久久久久久久久久电影| 黄色日韩网站视频| 欧美一区二区三区视频| 日韩高清一区在线| 91精品欧美福利在线观看| 日韩中文字幕av电影| 欧美疯狂性受xxxxx喷水图片| 午夜电影久久久| 欧美日韩aaaaaa| 热久久久久久久| 精品乱人伦一区二区三区| 免费观看30秒视频久久| 欧美r级电影在线观看| 狠狠狠色丁香婷婷综合激情| 久久综合五月天婷婷伊人| 国产一区二区精品久久99| 国产精品视频一二三| 波多野结衣中文字幕一区| ...av二区三区久久精品| 91蜜桃视频在线| 亚洲国产成人高清精品| 91麻豆精品国产91久久久使用方法| 日本美女一区二区| 精品免费国产一区二区三区四区| 国产一区二区三区蝌蚪| 国产精品久久久久桃色tv| 一本大道av伊人久久综合| 香蕉成人啪国产精品视频综合网| 欧美久久久久中文字幕| 久久69国产一区二区蜜臀| 欧美激情中文不卡| 在线看国产一区二区| 青青青伊人色综合久久| 久久久99久久| 色素色在线综合| 另类综合日韩欧美亚洲| 国产三级三级三级精品8ⅰ区| 91麻豆文化传媒在线观看| 日韩精品电影一区亚洲| 国产三级精品视频| 欧美性一级生活| 久久99久久精品欧美| 国产精品国产自产拍高清av王其 |