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

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

?? rtf2htmltree.h

?? 管理項(xiàng)目進(jìn)度工具的原代碼
?? H
字號:
#ifndef _T_TREE_H_INCLUDED
#define _T_TREE_H_INCLUDED

#pragma warning(disable:4100)
#pragma warning(disable:4018)
#pragma warning(disable:4097)
#pragma warning(disable:4786)
#include "vector"
using namespace std;

template <class Type> class Ref;

template <class Type> class Data {
private:
	typedef unsigned long ULONG;
	Data(Type *p=NULL) { if(!p) p=new Type; pData=p; dwRefs=1;};
	ULONG AddRef() { dwRefs++; return dwRefs;};
 	ULONG Release() { 
		dwRefs--; if(dwRefs==0) {delete this;return 0;} return dwRefs;};

// accessors
	Type *operator->() { return pData;};
	operator Type&() { return *pData;};
	Type &get_Data() { return *pData;};
	~Data() { if(pData) delete pData;};
	// op new
	//
	Type *pData;
	ULONG dwRefs;
	friend class Ref<Type>;
};

template <class Type> class Ref {
	typedef Data<Type> DataT;
	
public:
	typedef unsigned long ULONG;
	typedef unsigned long KEY;
	// ctors
	Ref(const Type &t) { pData=new DataT(new Type(t));};
	Ref(Type *p) { if(p) pData=new DataT(p); else pData=NULL;};
	Ref() { pData=new DataT();};
	//Ref(Data<Type> *p) : pData(p) { if(p) p->AddRef();};
	Ref(const Ref<Type> &rhs) { pData=(rhs.pData); if(pData) pData->AddRef();};
	//dtor
	virtual ~Ref() {if(pData) pData->Release();};

	//operators =
	Ref &operator=(const Ref<Type> &rhs) 
	{ Release(); pData=rhs.pData; if(pData) pData->AddRef(); return *this;};
	Ref &operator=(const Type &t) 
	{ Release(); pData=new DataT(new Type(t)); return *this;};
	Ref &operator=(Type *p) 
	{ Release(); if(p) pData=new DataT(p); else pData=NULL; return *this;};
	// operator ==
	bool operator==(const Ref<Type> &rhs) 
	{ return pData==rhs.pData;};
	
	Ref Clone() { if(!pData) return Ref(); return Ref(pData->get_Data());};
	void Release() { if(pData) pData->Release(); pData=NULL;};
	bool IsNull() { return pData==NULL;};

// accessors	
	Type *operator->() {return pData->operator->();};
	Type &get_Data() { return pData->get_Data();};
	operator Type&() { return pData->get_Data();};
	KEY Key() { return ((KEY)pData)+1;};
protected: 
	ULONG GetRefCount() { if(!pData) return 0; return pData->dwRefs;};
	Ref(KEY key) { try{pData=(DataT*)(key-1);if(pData) pData->AddRef();}catch(...){pData=NULL;}};
private:
	Data<Type> *pData;
	friend class Ref<Type>;
// niama new	
};



template <class Type,class DataType2=NodeData<Type> > class Tree;
template <class Type> class NodeData {
private:	
	typedef Ref<NodeData> NodeRef;
	NodeData(const Type &Data) : tData(Data){};
	NodeData(Type *pData) : tData(pData) {};
	NodeData() : Parent((NodeData*)NULL) {};
	virtual ~NodeData() {};
private:
	Ref<Type> tData;
	std::vector<NodeRef> vChilds;
	Ref<NodeData> Parent;
	friend class Tree<Type>;
	friend class Ref<NodeData>;
	friend Data<NodeData>;
};



template <class Type,class DataType2=NodeData<Type> > class Tree : private Ref<DataType2> {
	typedef Ref<DataType2> NodeBase;
public:
	typedef Tree<Type> Node;
//	Node node;
	Node Parent() { if(!NodeBase::get_Data().IsNull()) return NodeBase::get_Data().Parent; return *this;};
	operator Type&() { return (NodeBase::get_Data().tData.get_Data()); };
	Type *operator->() {return &(NodeBase::get_Data().tData.get_Data());};
	__declspec( property( get=get_Data) ) Ref<Type> Data;
	Ref<Type> get_Data() { return NodeBase::get_Data().tData;};

	bool IsLeaf() { return NodeBase::get_Data().vChilds.size()==0;};
	bool IsNode() { return NodeBase::get_Data()vChilds.size()>0;};
	bool IsRoot() { return NodeBase::get_Data().Parent.IsNull();};
	bool operator ==(const Node &rhs) { return *(NodeBase*)this==(NodeBase &)rhs;};

	__declspec( property( get=get_Nodes) ) Node Nodes[];
	Node get_Nodes(int nIndex) { return (Node)NodeBase::get_Data().vChilds[nIndex]; };
	__declspec( property( get=get_Count) ) int Count;
	int get_Count() { return NodeBase::get_Data().vChilds.size();};
	__declspec( property( get=get_Key) ) unsigned long Key;
	unsigned long get_Key() { return NodeBase::Key();};

	Node AddNode(const Type &t) { Node n(t); ((NodeBase &)n).get_Data().Parent=(*this); NodeBase::get_Data().vChilds.push_back(n); return n;};
	void Delete() {
		if(!NodeBase::get_Data().Parent->IsNull()) NodeBase::get_Data().Parent->DeleteNode(*this);
		//Release();
	};
	void DeleteNode(int nIndex) {
		NodeBase::get_Data().vChilds.erase(NodeBase::get_Data().vChilds.begin()+nIndex);
	};
	void DeleteNode(Node &node) {
		vector<NodeBase>::iterator = find(NodeBase::get_Data().vChilds.begin(),NodeBase::get_Data().vChilds.end(),node);
		if(iterator!=NodeBase::get_Data().vChilds.end()) {
			NodeBase::get_Data().vChilds.erase(iterator);
		}
	};
	Tree(const Type &Data) : NodeBase(Data) {};
	Tree(Type *Data) : NodeBase(Data) {};
	Tree() {};
	Tree(const Tree<Type> &rhs) : NodeBase(rhs) {};
	Tree(const NodeBase &rhs) : NodeBase(rhs) {};
	Tree(KEY key) : NodeBase(key) {};
	virtual ~Tree() 
	{	// if RefCount==ChildsCount+1, now is the time for release this (i.e. remove all refs to parent from childs
		ReleaseNode();
	};

private:
	void ReleaseNode() {
		if(NodeBase::IsNull()) return;
		ULONG nRefs=NodeBase::GetRefCount();
		ULONG nChilds=NodeBase::get_Data().vChilds.size();
		if(nRefs==nChilds+1) {
			std::vector<NodeBase> &vChilds=NodeBase::get_Data().vChilds;
			for(ULONG n=0;n<vChilds.size();n++) {
				vChilds[n]->Parent.Release();
				((Node &)vChilds[n]).ReleaseNode();
			}
		}
		Release();
	}
};


#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品1024| 国产成人亚洲综合a∨猫咪| 精品国产3级a| 欧美午夜在线一二页| 韩国午夜理伦三级不卡影院| 亚洲精品中文在线| 国产亚洲美州欧州综合国| 欧美日韩一二三区| 成人黄色电影在线| 国产在线播精品第三| 一区二区日韩电影| 久久嫩草精品久久久精品| 欧美精选一区二区| 欧美亚洲综合久久| av不卡在线观看| 国产精品99久久久久久宅男| 日本欧美在线看| 亚洲午夜三级在线| 亚洲欧美日韩在线播放| 欧美激情在线看| 久久色.com| 日韩欧美激情四射| 欧美福利一区二区| 欧美嫩在线观看| 一本到不卡精品视频在线观看 | 欧美国产日本视频| 欧美mv和日韩mv国产网站| 欧美日韩一区精品| 日本韩国欧美三级| av中文字幕亚洲| 不卡欧美aaaaa| 国产精品 欧美精品| 九九在线精品视频| 久久国产视频网| 蜜桃久久久久久| 毛片基地黄久久久久久天堂| 日韩高清不卡在线| 日韩中文欧美在线| 日韩电影在线看| 美女性感视频久久| 蜜臂av日日欢夜夜爽一区| 日本一区中文字幕 | 成人丝袜高跟foot| 成人精品视频网站| eeuss国产一区二区三区| 99久久99久久精品免费观看| 成人黄色综合网站| 91丨九色丨蝌蚪富婆spa| 99精品黄色片免费大全| 日本电影欧美片| 在线观看日韩精品| 91超碰这里只有精品国产| 欧美夫妻性生活| 欧美成人a∨高清免费观看| 精品国产乱码久久久久久久| 久久久精品人体av艺术| 国产精品天天摸av网| 中文字幕精品三区| 亚洲精品日日夜夜| 香蕉加勒比综合久久| 美女被吸乳得到大胸91| 极品少妇xxxx精品少妇| 国产91精品精华液一区二区三区| 不卡一二三区首页| 欧美日韩免费一区二区三区视频| 在线成人av影院| 欧美亚一区二区| 国产主播一区二区三区| 国产成人精品一区二区三区四区| 成人免费看的视频| 91国偷自产一区二区三区成为亚洲经典 | 色婷婷综合久色| 欧美日韩在线播放三区| 日韩免费高清视频| 亚洲天堂久久久久久久| 五月天亚洲精品| 国模少妇一区二区三区| 色综合久久中文综合久久97| 欧美高清视频一二三区| 国产亚洲欧美色| 亚洲成av人片在线观看| 国产毛片精品视频| 欧美三级午夜理伦三级中视频| 日韩欧美美女一区二区三区| 国产精品护士白丝一区av| 日韩精彩视频在线观看| 成人免费视频app| 欧美久久久影院| 欧美激情在线一区二区| 日韩高清欧美激情| 中文字幕不卡在线观看| 亚洲精品第一国产综合野| 黄色日韩三级电影| 91麻豆精品视频| 精品国产伦一区二区三区观看方式| 亚洲视频综合在线| 久久精品国产澳门| 在线看不卡av| 欧美韩日一区二区三区| 免费在线一区观看| 日本高清成人免费播放| 久久婷婷国产综合精品青草| 亚洲一区二区在线免费看| 国产精一品亚洲二区在线视频| 精品视频在线看| 国产精品区一区二区三区| 蜜臀精品久久久久久蜜臀| 色婷婷激情综合| 久久免费精品国产久精品久久久久| 午夜精品福利久久久| 99久久国产综合精品麻豆| 精品国产乱码久久久久久夜甘婷婷| 一区二区三区四区亚洲| 成人激情文学综合网| 精品欧美黑人一区二区三区| 亚洲超碰97人人做人人爱| 色一区在线观看| 国产精品视频一区二区三区不卡| 久久av资源站| 欧美一区二区三区喷汁尤物| 亚洲另类在线视频| 波多野结衣亚洲| 中文字幕在线不卡视频| 国产**成人网毛片九色| 日本一区二区三区国色天香| 国产美女av一区二区三区| 精品夜夜嗨av一区二区三区| 韩国成人在线视频| 7777精品伊人久久久大香线蕉完整版 | 免费国产亚洲视频| 911国产精品| 国内精品伊人久久久久影院对白| 欧美一区日本一区韩国一区| 日本亚洲欧美天堂免费| 制服丝袜成人动漫| 日韩专区中文字幕一区二区| 欧美日韩久久不卡| 午夜精品影院在线观看| 欧美精品丝袜中出| 日韩av不卡一区二区| 欧美一三区三区四区免费在线看 | 美国精品在线观看| 精品欧美一区二区三区精品久久| 美女被吸乳得到大胸91| 精品少妇一区二区三区免费观看| 毛片av一区二区| 精品国产伦一区二区三区观看体验| 久久99精品久久久久婷婷| 久久久久久久精| av高清久久久| 亚洲人成网站色在线观看| 欧美视频精品在线观看| 99国产精品国产精品毛片| 国产不卡视频一区二区三区| www国产亚洲精品久久麻豆| 国产成人高清视频| 中文字幕亚洲一区二区va在线| jiyouzz国产精品久久| 亚洲精品菠萝久久久久久久| 欧美日韩精品一区二区三区蜜桃| 视频在线观看一区二区三区| 亚洲精品在线观看视频| av中文一区二区三区| 亚洲成人黄色小说| 欧美v国产在线一区二区三区| 国产成人亚洲综合a∨猫咪| 亚洲另类春色国产| 51精品视频一区二区三区| 国产一区二区三区久久久 | 久久久精品国产99久久精品芒果| 成人午夜av在线| 曰韩精品一区二区| 日韩一区二区三区在线视频| 国产69精品久久777的优势| 曰韩精品一区二区| 欧美r级在线观看| 99精品视频一区| 日韩高清一区二区| 中文字幕不卡在线播放| 欧美精品在欧美一区二区少妇| 国产精品中文欧美| 久久99精品久久只有精品| 亚洲va韩国va欧美va| 精品国产麻豆免费人成网站| 91丨porny丨国产| 免播放器亚洲一区| 亚洲欧洲精品一区二区精品久久久 | 色综合中文字幕国产| 亚洲香肠在线观看| 国产人久久人人人人爽| 欧美日本视频在线| 成人自拍视频在线| 蜜桃av一区二区三区| 成人欧美一区二区三区1314| 日韩精品自拍偷拍| 欧美色老头old∨ideo| 丁香六月综合激情| 美女一区二区三区| 亚洲午夜电影网| 亚洲欧美一区二区视频|