//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGraphNode.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TGRAPHNODE_H_ #define _TGRAPHNODE_H_ #ifndef _TWFLAG_H_ #include "TWFlag.h" #endif #ifndef _TTABLE_H_ #include "TTable.h" #endif #ifndef _TGRAPHARC_H_ #include "TGraphArc.h" #endif #ifndef _TPDLIST_H_ #include "TPDList.h" #endif //图节点 class GEOAPI TGraphNode:public TWFlag { public: //删除时自动断开连接 virtual ~TGraphNode(); virtual int CmpNode(const TGraphNode&n) const; //pArc->IsValid()!!! bool AppendArc(TGraphArc*pArc); bool RemoveArc(TGraphArc*pArc); void ClearArc(); //断开连接 void UnConnect(); //最后pNode被ClearArc void Conbine(TGraphNode*pNode); //ARC //是否孤点 bool IsAloneNode() const; //是否端点(只有一条边) bool IsEndNode() const; long GetArcNum() const; TGraphArc* GetArc(long i) const; long FindArc(TGraphArc*pArc) const; //如果只有一条边或未找到pArc返回NULL TGraphArc* FindNextArc(TGraphArc*pArc); //如果只有一条边或未找到pArc返回NULL TGraphArc* FindPreArc(TGraphArc*pArc); void GetArcOut(TTable &lstArc); void GetArcIn(TTable &lstArc); //Compare bool operator==(const TGraphNode&n) const; bool operator!=(const TGraphNode&n) const; bool operator> (const TGraphNode&n) const; bool operator< (const TGraphNode&n) const; protected: //此结点连接的所有边(实质是引用),始终保持有序 TPDList m_allArc; //节点内排序时使用,其它情况为NULL static TGraphNode* s_pStartNode; }; #endif