Files
envi-code/SourceCode/Code2026/tg_shs/inc/subgeo/TGraph.h
T
2026-09-28 15:28:50 +08:00

81 lines
1.7 KiB
C++

//-----------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TGraph.h
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
// = Description: 类的声明
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#ifndef _TGRAPH_H_
#define _TGRAPH_H_
#ifndef _TGRAPHNODE_H_
#include "TGraphNode.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 TGraph
{
public:
~TGraph();
//node
long GetNodeNum()const;
TGraphNode* operator[](long i);
long Find(const TGraphNode&n);
//如果已经存在自动删除pNode,返回索引
long operator<<(TGraphNode* pNode);
void DelNode(long i);
//修改后必须调用,调整位置使内部表保持有序。
long CheckNode(long i,TTable<TGraphArc*> *pLstArcFree);
//pLstArcFree放置与i节点连接但不属于本图的边,需要由所属图执行CheckArc();
long CheckNode(TGraphNode*pNode,TTable<TGraphArc*> *pLstArcFree=NULL);
//arc
long GetArcNum()const;
TGraphArc* operator()(long i);
long Find(const TGraphArc&a);
//如果已经存在自动删除pArc;pArc->IsValid()!!!
long operator<<(TGraphArc* pArc);
void DelArc(long i);
//修改后必须调用,调整位置使内部表保持有序
long CheckArc(long i);
long CheckArc(TGraphArc*pArc);
//Create
//pArc->m_pNode0,pArc->m_pNode1必须是临时new的,如果在图中已经存在,被自动delete!
//自动创建边和节点
long Create(TGraphArc *pArc);
//Clear
void UnConnect();
void Clear();
void ClearArc();
void ClearNode();
protected:
TPDListEx<TGraphNode> m_allNode;//始终保持有序
TPDListEx<TGraphArc> m_allArc; //始终保持有序
};
#endif