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

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

?? object.h

?? common c++提供socket
?? H
字號:
// 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 object.h * @short Some object manipulation classes for smart pointers, linked lists, * etc. **/#ifndef	CCXX_OBJECT_H_#define	CCXX_OBJECT_H_#ifndef CCXX_MISSING_H_#include <cc++/missing.h>#endif#ifdef	CCXX_NAMESPACESnamespace ost {#endifclass __EXPORT MapObject;/** * A reference countable object.  This is used in association with smart * pointers (RefPointer).   * * @author David Sugar <dyfet@gnutelephony.org> * @short Object managed by smart pointer reference count. */class __EXPORT RefObject{protected:	friend class RefPointer;	unsigned refCount;	/**	 * The constructor simply initializes the count.	 */	inline RefObject()		{refCount = 0;};	/**	 * The destructor is called when the reference count returns	 * to zero.  This is done through a virtual destructor.	 */	virtual ~RefObject();public:	/**	 * The actual object being managed can be returned by this	 * method as a void and then recast to the actual type.  This	 * removes the need to dynamic cast from RefObject and the	 * dependence on rtti this implies.	 *	 * @return underlying object being referenced.	 */	virtual void *getObject(void) = 0;};/** * Pointer to reference counted objects.  This is a non-template form * of a reference count smart pointer, and so uses common code.  This * can be subclassed to return explicit object types. * * @author David Sugar <dyfet@gnutelephony.org> * @short Pointer to reference count managed objects. */class __EXPORT RefPointer{protected:	RefObject *ref;	/**	 * Detach current object, for example, when changing pointer.	 */		void detach(void);	/**	 * Patch point for mutex in derived class.  This may often	 * be a single static mutex shared by a managed type.	 */	virtual void enterLock(void);	/**	 * Patch point for a mutex in derived class.  This may often	 * be a single static mutex shared by a managed type.	 */	virtual void leaveLock(void);public:	/**	 * Create an unattached pointer.	 */	inline RefPointer()		{ref = NULL;};	/**	 * Create a pointer attached to a reference counted object.	 *	 * Object being referenced.	 */	RefPointer(RefObject *obj);		/**	 * A copy constructor.	 *	 * Pointer being copied.	 */	RefPointer(const RefPointer &ptr);	virtual ~RefPointer();	RefPointer& operator=(const RefObject &ref);	inline void *operator*() const		{return getObject();};	inline void *operator->() const		{return getObject();};	void *getObject(void) const;	bool operator!() const;};	/** * Self managed single linked list object chain.  This is used for * accumulating lists by using as a base class for a derived subclass. * * @author David Sugar <dyfet@gnutelephony.org> * @short Accumulating single linked list. */class __EXPORT LinkedSingle{protected:	LinkedSingle *nextObject;	inline LinkedSingle()		{nextObject = NULL;};	virtual ~LinkedSingle();public:	/**	 * Get first linked object in list.  This may be dynamically	 * recast, and may refer to a master static bookmark pointer	 * in a derived class.  Otherwise it simply returns the current	 * object.  In a "free" list, this may not only return the first	 * object, but also set the first to next.	 *	 * @return pointer to first object in list.	 */	virtual LinkedSingle *getFirst(void);		/**	 * Gets the last object in the list.  This normally follows the	 * links to the end.  This is a virtual because derived class	 * may include a static member bookmark for the current end.	 *	 * @return pointer to last object in list.	 */	virtual LinkedSingle *getLast(void);	/**	 * Get next object, for convenience.  Derived class may use	 * this with a dynamic cast.	 *	 * @return next object in list.	 */	inline LinkedSingle *getNext(void)		{return nextObject;};	/**	 * Insert object into chain.  This is a virtual because	 * derived class may choose instead to perform an insert	 * at head or tail, may manage bookmarks, and may add mutex lock.	 *	 * @param object being inserted.	 */	virtual void insert(LinkedSingle& obj);	LinkedSingle &operator+=(LinkedSingle &obj);};/** * Self managed double linked list object chain.  This is used for * accumulating lists by using as a base class for a derived subclass. * * @author David Sugar <dyfet@gnutelephony.org> * @short Accumulating double linked list. */class __EXPORT LinkedDouble{protected:	LinkedDouble *nextObject, *prevObject;	inline LinkedDouble()		{nextObject = prevObject = NULL;};	virtual ~LinkedDouble();	virtual void enterLock(void);	virtual void leaveLock(void);public:	/**	 * Get first linked object in list.  This may be dynamically	 * recast, and may refer to a master static bookmark pointer	 * in a derived class.  Otherwise it follows list to front.	 *	 * @return pointer to first object in list.	 */	virtual LinkedDouble *getFirst(void);		/**	 * Gets the last object in the list.  This normally follows the	 * links to the end.  This is a virtual because derived class	 * may include a static member bookmark for the current end.	 *	 * @return pointer to last object in list.	 */	virtual LinkedDouble *getLast(void);	/**	 * Virtual to get the insert point to use when adding new members.  This	 * may be current, or always head or always tail.  As a virtual, this allows	 * derived class to establish "policy".	 *	 * @return pointer to insertion point in list.	 */	virtual LinkedDouble *getInsert(void);	/**	 * Get next object, for convenience.  Derived class may use	 * this with a dynamic cast.	 *	 * @return next object in list.	 */	inline LinkedDouble *getNext(void)		{return nextObject;};	/**	 * Get prev object in the list.	 *	 * @return pointer to previous object.	 */	inline LinkedDouble *getPrev(void)		{return prevObject;};	/**	 * Insert object into chain.	 *	 * @param object being inserted.	 */	void insert(LinkedDouble& obj);	/**	 * Remove object from chain.	 */	void detach(void);	LinkedDouble &operator+=(LinkedDouble &obj);	LinkedDouble &operator--();};/** * A map table allows for entities to be mapped (hash index) onto it. * Unlike with Assoc, This form of map table also allows objects to be  * removed from the table.  This table also includes a mutex lock for * thread safety.  A free list is also optionally maintained for reusable * maps. * * @author David Sugar <dyfet@gnutelephony.org> * @short Table to hold hash indexed objects. */class __EXPORT MapTable : public Mutex{protected:	friend class MapObject;	unsigned range;	MapObject **map;	void cleanup(void);public:	/**	 * Create a map table with a specified number of slots.	 *	 * @param number of slots.	 */	MapTable(unsigned size);	/**	 * Destroy the table, calls cleanup.	 */	virtual ~MapTable();	/**	 * Get index value from id string.  This function can be changed	 * as needed to provide better collision avoidence for specific	 * tables.	 *	 * @param id string	 * @return index slot in table.	 */	virtual unsigned getIndex(const char *id);	/**	 * Return range of this table.	 *	 * @return table range.	 */	inline unsigned getRange(void)		{return range;};	/**	 * Lookup an object by id key.  It is returned as void * for 	 * easy re-cast.	 *	 * @param key to find.	 * @return pointer to found object or NULL.	 */	void *getObject(const char *id);	/**	 * Map an object to our table.  If it is in another table 	 * already, it is removed there first.	 *	 * @param object to map.	 */	void addObject(MapObject &obj);	/**	 * Get next object from managed free list.  This returns as a	 * void so it can be recast into the actual type being used in	 * derived MapObject's.  A derived version of MapTable may well	 * offer an explicit type version of this.  Some derived	 * MapObject's may override new to use managed list.	 *	 * @return next object on free list.	 */	void *getFree(void);	/**	 * Add an object to the managed free list.  Some MapObject's	 * may override delete operator to detach and do this.	 *	 * @param object to add.	 */	void addFree(MapObject *obj);	/**	 * An operator to map an object to the table.	 *	 * @return table being used.	 * @param object being mapped.	 */	MapTable &operator+=(MapObject &obj);	/**	 * This operator is virtual in case it must also add the object to a	 * managed free list.	 *	 * @return current table.	 * @param object entity to remove.	 */	virtual MapTable &operator-=(MapObject &obj);};/** * The MapObject is a base class which can be used to make a derived * class operate on a MapTable.  Derived classes may override new and  * delete operators to use managed free list from a MapTable. * * @author David Sugar <dyfet@gnutelephony.org> * @short Mappable object. */class __EXPORT MapObject{protected:	friend class MapTable;	MapObject *nextObject;	const char *idObject;	MapTable *table;	/**	 * Remove the object from it's current table.	 */	void detach(void);	/**	 * Save id, mark as not using any table.		 *	 * @param id string for this object.	 */	MapObject(const char *id);}; #ifdef	CCXX_NAMESPACES}#endif#endif/** EMACS ** * Local variables: * mode: c++ * c-basic-offset: 8 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕亚洲一区二区va在线| 五月综合激情日本mⅴ| 色综合久久综合网欧美综合网| 美女视频黄免费的久久 | 伊人色综合久久天天| 综合精品久久久| 亚洲视频1区2区| 一区二区三区四区不卡在线| 亚洲男女毛片无遮挡| 亚洲精品大片www| 亚洲国产精品久久久久秋霞影院 | 高清不卡在线观看av| 成人性视频网站| 91免费看片在线观看| 日本久久电影网| 欧美日韩国产综合视频在线观看| 91精品在线免费| 精品日韩欧美一区二区| 国产日韩欧美精品在线| 1区2区3区国产精品| 亚洲一区二区av在线| 日韩高清一区二区| 国产精品白丝jk黑袜喷水| 成人免费视频播放| 欧美亚洲日本一区| 欧美xxxxx裸体时装秀| 亚洲毛片av在线| 亚洲成人免费av| 精品一二线国产| 成人黄色国产精品网站大全在线免费观看 | 日韩欧美国产成人一区二区| 久久精品欧美日韩精品| 亚洲精品高清在线| 免费成人在线视频观看| 国产一区激情在线| 91原创在线视频| 91精品国产综合久久久久久久久久 | 婷婷综合另类小说色区| 久久精品av麻豆的观看方式| www.亚洲人| 欧美日本国产一区| 中文成人av在线| 午夜视频一区二区| 成人综合在线视频| 欧美日韩一级大片网址| 久久久99免费| 一区二区三区.www| 国产精品一色哟哟哟| 欧美欧美午夜aⅴ在线观看| 欧美精品一区二区三区四区| 亚洲精品中文字幕在线观看| 美女视频免费一区| 色先锋资源久久综合| 久久久久久久久蜜桃| 亚洲国产中文字幕| 成人免费视频视频在线观看免费| 欧美日韩国产一级二级| 中文av一区特黄| 九九在线精品视频| 欧美三电影在线| 日韩一区在线看| 国产福利一区在线观看| 欧美高清www午色夜在线视频| 国产喂奶挤奶一区二区三区| 日产欧产美韩系列久久99| 91麻豆国产福利在线观看| 久久亚洲综合色一区二区三区 | 成人午夜碰碰视频| 精品日韩在线一区| 天天色图综合网| 色偷偷88欧美精品久久久| 国产亚洲精品aa午夜观看| 日本亚洲最大的色成网站www| 一本大道久久a久久精二百| 国产区在线观看成人精品| 蜜桃视频在线观看一区| 欧美色视频一区| 亚洲欧美日韩在线| jiyouzz国产精品久久| 久久精品在线免费观看| 激情欧美一区二区| 日韩视频免费观看高清完整版 | 欧美精品一区二区精品网| 日韩在线一区二区三区| 欧美在线高清视频| 一区二区三区美女| 日本乱码高清不卡字幕| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久国产尿小便嘘嘘尿| 555www色欧美视频| 香蕉久久夜色精品国产使用方法 | 欧美无乱码久久久免费午夜一区 | 日本乱码高清不卡字幕| 亚洲欧美色图小说| 99精品视频在线观看免费| 国产精品视频在线看| 成人中文字幕电影| 欧美极品美女视频| 成人丝袜高跟foot| 国产精品久久久久影院色老大 | 欧美成人精品1314www| 美女视频网站久久| 精品国一区二区三区| 九一九一国产精品| 久久亚洲一区二区三区明星换脸| 激情欧美日韩一区二区| 久久九九久久九九| av在线播放成人| 亚洲精品欧美综合四区| 欧美日韩中文字幕一区二区| 丝袜诱惑制服诱惑色一区在线观看| 欧美日韩aaaaaa| 久久国产精品一区二区| 久久久三级国产网站| 成人午夜免费视频| 一区二区三区在线视频观看| 欧美三级电影在线看| 蜜臀a∨国产成人精品| 久久精品亚洲乱码伦伦中文 | 欧美精品免费视频| 蜜臀99久久精品久久久久久软件| 精品国产亚洲在线| 成人综合在线网站| 一区2区3区在线看| 欧美一区二区三区小说| 国产精品综合视频| 综合久久久久久| 欧美精品三级在线观看| 精品一区二区三区蜜桃| 欧美国产精品一区| 欧洲一区二区三区在线| 麻豆精品一区二区av白丝在线| 精品久久一二三区| caoporm超碰国产精品| 亚洲综合激情另类小说区| 欧美mv日韩mv国产网站| 成人性色生活片| 五月综合激情网| 国产欧美va欧美不卡在线| 日本道色综合久久| 老司机精品视频线观看86| 欧美国产激情一区二区三区蜜月| 在线区一区二视频| 久久99在线观看| 亚洲天堂a在线| 精品国产91乱码一区二区三区| 99re热这里只有精品免费视频| 水野朝阳av一区二区三区| 国产视频一区二区在线观看| 在线观看国产精品网站| 国产一区二区免费视频| 亚洲一级二级在线| 久久精品男人的天堂| 欧美剧情片在线观看| 国产成人精品三级麻豆| 午夜精品免费在线| 国产精品久久久久精k8| 欧美成人官网二区| 色狠狠桃花综合| 国产成人免费视频| 亚洲成人资源在线| 综合欧美一区二区三区| 久久综合久久综合久久| 欧美在线免费视屏| 成人av在线播放网站| 久久精品国产99国产精品| 亚洲午夜三级在线| 中文字幕一区二区三区乱码在线 | 午夜精品福利一区二区三区av| 欧美国产97人人爽人人喊| 日韩视频免费观看高清完整版在线观看 | 久久草av在线| 五月天精品一区二区三区| 亚洲天堂福利av| 国产午夜亚洲精品羞羞网站| 777亚洲妇女| 欧美午夜理伦三级在线观看| 不卡一区二区在线| 国产成人午夜精品5599| 男女男精品视频| 视频一区二区三区中文字幕| 亚洲欧美另类图片小说| 亚洲国产岛国毛片在线| 久久午夜电影网| 精品免费视频一区二区| 欧美精品自拍偷拍| 欧美日韩国产在线播放网站| 91国产福利在线| 在线免费观看日本欧美| 91色porny蝌蚪| 91在线你懂得| av电影在线观看一区| 成年人网站91| 成人h版在线观看| 波多野结衣视频一区| 成人午夜视频免费看| 成人a免费在线看| www.在线欧美| 色哟哟欧美精品| 91国产成人在线|