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

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

?? file.h

?? GNU Common C++ is a very portable and highly optimized class framework for writing C++ applications
?? 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一区二区三区免费野_久草精品视频
一区二区三区加勒比av| 国产精品―色哟哟| 91丨九色丨尤物| 国产一区欧美二区| 经典三级在线一区| 精品一区二区三区免费视频| 免费成人结看片| 免费成人av资源网| 久色婷婷小香蕉久久| 精品一区二区久久| 国产一区视频在线看| 国产精品正在播放| 国产福利91精品一区| 成人免费视频caoporn| 不卡一区二区三区四区| 日本精品视频一区二区三区| 在线亚洲高清视频| 4438x成人网最大色成网站| 日韩一区国产二区欧美三区| 精品国产露脸精彩对白| 亚洲国产精品成人久久综合一区 | 亚洲欧美国产77777| 亚洲欧美日韩精品久久久久| 亚洲第一久久影院| 捆绑紧缚一区二区三区视频| 国产乱人伦偷精品视频免下载| 国产福利精品一区| 色播五月激情综合网| 日韩一区二区电影| 国产精品乱人伦| 亚洲国产cao| 国产一区二区三区精品视频| 99精品国产99久久久久久白柏| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩精品综合在线| 久久久久久亚洲综合影院红桃| 国产精品美女久久久久aⅴ国产馆| 亚洲视频免费在线观看| 三级在线观看一区二区| 成人免费毛片高清视频| 欧美久久久久免费| 精品999久久久| 久久精品亚洲乱码伦伦中文| 亚洲欧美日韩一区二区三区在线观看| 亚洲国产精品精华液网站| 国产精品原创巨作av| 91黄色免费版| 国产偷国产偷精品高清尤物 | 国产精品久久久99| 免费在线观看一区| 91女人视频在线观看| 久久色中文字幕| 五月激情综合网| 日本精品视频一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 午夜视黄欧洲亚洲| 色综合天天性综合| 亚洲国产精品激情在线观看 | 精品国产一区二区三区忘忧草| 亚洲欧美日韩系列| 春色校园综合激情亚洲| 日韩一区二区视频在线观看| 亚洲一区二区av在线| 成人18精品视频| 国产欧美日韩综合| 精品亚洲porn| 日韩欧美电影一区| 日韩激情中文字幕| 欧美日本一区二区| 亚洲一区二区三区在线| 99re这里都是精品| 亚洲成人在线免费| 成人免费视频视频| 久久久亚洲精品一区二区三区| 日韩av不卡在线观看| 欧美美女黄视频| 亚洲动漫第一页| 欧美乱妇15p| 亚洲国产综合色| 欧美日本一区二区在线观看| 亚洲一区电影777| 欧美亚洲国产怡红院影院| 亚洲一区二区三区免费视频| 色综合久久88色综合天天免费| 中文字幕亚洲精品在线观看| 成人黄色综合网站| 亚洲视频一区二区免费在线观看| 成人午夜电影久久影院| 亚洲欧美综合在线精品| av在线不卡网| 一个色妞综合视频在线观看| 欧美在线观看视频在线| 日韩二区三区在线观看| 欧美本精品男人aⅴ天堂| 国产在线精品不卡| 国产精品国产三级国产普通话99 | 欧美中文字幕一二三区视频| 亚洲一区二区三区在线看| 欧美老年两性高潮| 久久成人免费网| 国产精品人成在线观看免费| 91玉足脚交白嫩脚丫在线播放| 亚洲午夜三级在线| 日韩一区二区三区视频在线| 国产盗摄女厕一区二区三区| 亚洲免费视频成人| 欧美一区二区在线观看| 国产成人精品免费一区二区| 亚洲免费成人av| 日韩午夜激情电影| 成人午夜在线免费| 婷婷开心激情综合| 久久久久久电影| 欧美午夜理伦三级在线观看| 久久国产精品一区二区| 国产精品欧美经典| 91超碰这里只有精品国产| 韩国一区二区三区| 亚洲一区二区三区中文字幕在线 | 国产老妇另类xxxxx| 亚洲激情男女视频| 精品国产乱码久久久久久久| 色综合天天综合狠狠| 美女视频网站久久| 日韩成人dvd| 亚洲欧美偷拍卡通变态| 欧美va亚洲va| 欧美午夜影院一区| 成人精品视频一区二区三区尤物| 亚洲成人动漫精品| 亚洲欧美一区二区不卡| 久久香蕉国产线看观看99| 欧美日韩一级二级三级| 欧美日韩国产天堂| 麻豆国产精品一区二区三区 | 欧日韩精品视频| 国产激情91久久精品导航| 亚洲午夜国产一区99re久久| 欧美国产亚洲另类动漫| 51精品秘密在线观看| 一本大道久久a久久精品综合 | 久久毛片高清国产| 欧美一区二区在线观看| 欧美性一级生活| 一本到一区二区三区| 国产成人在线视频播放| 国产资源精品在线观看| 蜜臀av性久久久久av蜜臀妖精 | 91精品国产综合久久精品图片| 99视频一区二区| 99久久精品一区二区| 不卡欧美aaaaa| 国产成人综合精品三级| 久久99精品国产.久久久久久| 免费观看在线色综合| 免费成人深夜小野草| 精品一区二区在线播放| 国产一区在线看| 国产不卡一区视频| 国产成人在线观看免费网站| 国产一区三区三区| 国产98色在线|日韩| 成人国产电影网| 色哟哟欧美精品| 欧美婷婷六月丁香综合色| 欧美三级乱人伦电影| 在线成人小视频| 欧美成人精品二区三区99精品| 精品免费99久久| 国产无一区二区| 亚洲精品视频一区二区| 亚洲一区二区美女| 日日夜夜精品视频天天综合网| 日韩电影免费在线观看网站| 久久精品国产99久久6| 国产精品自拍毛片| 91在线视频官网| 欧美性色欧美a在线播放| 欧美一区二区三区四区五区 | 风间由美一区二区三区在线观看| 国产.欧美.日韩| 色狠狠色狠狠综合| 日韩欧美国产系列| 国产欧美日韩视频在线观看| 亚洲欧洲韩国日本视频| 丝袜诱惑亚洲看片| 国产成人精品在线看| 欧美日韩三级视频| 久久婷婷一区二区三区| 成人欧美一区二区三区黑人麻豆| 婷婷中文字幕综合| 国产suv精品一区二区6| 欧美日韩一区二区三区四区| 欧美精品一区二区三区高清aⅴ | 精品污污网站免费看| 日韩精品最新网址| 亚洲精品成人a在线观看| 激情偷乱视频一区二区三区| 91女神在线视频| 精品欧美久久久|