commit 2025-08-16 34:34
git add ZCppMain/ZMainHead.H git add ZCppMain/ZtCArray.H git add ZCppMain/ZtCObjList.H git add ZCppMain/ZMainAVL.H git add ZCppMain/ZMainHeadEx.H git add ZCppMain/ZMainXhtml.H git add ZCppMain/ZtCLoadDataBlock.H git add ZCppMain/ZtCMainChars.H git add ZCppMain/ZtCObjAVL.H git add ZCppMain/ZtCStringEx.H git add ZCppMain/ZtCTreeData.H
This commit is contained in:
993
ZCppMain/ZtCTreeData.H
Normal file
993
ZCppMain/ZtCTreeData.H
Normal file
@ -0,0 +1,993 @@
|
||||
|
||||
|
||||
#ifndef __ZCPPMAIN__ZCTREEDATA_H__
|
||||
#define __ZCPPMAIN__ZCTREEDATA_H__
|
||||
|
||||
|
||||
#include "ZCppMain/ZtCObjList.H"
|
||||
|
||||
|
||||
namespace ZNsMain
|
||||
{
|
||||
|
||||
namespace ZNsView
|
||||
{
|
||||
|
||||
template< typename TypeData, typename TypeSize=int
|
||||
>
|
||||
class ZtCViewTreeData ////////////////////////////
|
||||
{
|
||||
private:
|
||||
|
||||
void ShowDepth(TypeSize AI_Depth)
|
||||
{
|
||||
__for1(TypeSize, i, AI_Depth) cout<<" ";
|
||||
}/*
|
||||
void ShowDepth(TypeSize AI_Depth)*/
|
||||
|
||||
public :
|
||||
|
||||
ZNsMain::ZNsEnum::ZERun OnDataStart(TypeSize AI_Depth)
|
||||
{
|
||||
ShowDepth(AI_Depth); cout<<"<EFBFBD><EFBFBD> OnDataStart:"<<endl;
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}
|
||||
ZNsMain::ZNsEnum::ZERun OnDataBody(TypeData& AR_TypeData, TypeSize AI_Depth, TypeSize AI_Index=0)
|
||||
{
|
||||
ShowDepth(AI_Depth); cout<<" <20><> Index="<<AI_Index<<": "<<AR_TypeData<<endl;
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}
|
||||
ZNsMain::ZNsEnum::ZERun OnDataClose(TypeSize AI_Depth)
|
||||
{
|
||||
ShowDepth(AI_Depth); cout<<"<EFBFBD><EFBFBD> OnDataClose:"<<endl;
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeStart(TypeSize AI_Depth, TypeSize AI_NodeCnt)
|
||||
{
|
||||
if(AI_NodeCnt<1){ return ZNsMain::ZNsEnum::ZERun_OK; }
|
||||
|
||||
ShowDepth(AI_Depth); cout<<"<EFBFBD><EFBFBD> OnSubNodeStart:"<<endl;
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeClose(TypeSize AI_Depth, TypeSize AI_NodeCnt)
|
||||
{
|
||||
if(AI_NodeCnt<1){ return ZNsMain::ZNsEnum::ZERun_OK; }
|
||||
|
||||
ShowDepth(AI_Depth); cout<<"<EFBFBD><EFBFBD> OnSubNodeClose:"<<endl;
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}/*
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeClose(TypeSize AI_Depth, TypeSize AI_NodeCnt)*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TypeData, typename TypeSize=int
|
||||
>
|
||||
class ZtCViewTreeData //////////////////////////*/
|
||||
|
||||
}/*
|
||||
namespace ZNsView*/
|
||||
|
||||
|
||||
namespace ZNsType
|
||||
{
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> class ZtCTypeTreeData <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> <20><><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD> <20><> <20>ٸ<EFBFBD> <20><><EFBFBD>ø<EFBFBD>(list <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD>ø<EFBFBD>)<29><>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>̰<EFBFBD><CCB0><EFBFBD> ZtCTreeData<> <20><><EFBFBD><EFBFBD> Ȱ<><C8B0><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20>Ʒ<EFBFBD>ó<EFBFBD><C3B3>
|
||||
|
||||
typedef typename TTypeTreeData::template ZtCTypeClass<ZCNode1>::TypeData ZCNode1List;
|
||||
typedef typename TTypeTreeData::template ZtCTypeClass<ZCNode2>::TypeData ZCNode2List;
|
||||
|
||||
<20>ټ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
||||
|
||||
-- 2011-11-01 14:39:00
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template<typename TTypeSize=long> class ZtCTypeTreeData
|
||||
{
|
||||
public:
|
||||
typedef TTypeSize TypeSize;
|
||||
public:
|
||||
|
||||
template< typename TType ,
|
||||
typename TTypeArg =const TType& ,
|
||||
typename TTypeAlloc=ZNsMain::ZCAllocator,
|
||||
typename TTypeInit =ZNsMain::ZtCInit<TType>
|
||||
>
|
||||
class ZtCTypeClass /////////////////////////////////
|
||||
{
|
||||
public:
|
||||
typedef TTypeAlloc TypeAlloc;
|
||||
typedef TTypeInit TypeInit ;
|
||||
public:
|
||||
typedef ZNsMain::ZtCObjList
|
||||
<TType, TTypeArg, TTypeAlloc, TTypeInit, TTypeSize>
|
||||
TypeList; /////////////////
|
||||
public:
|
||||
};/*
|
||||
template< typename TType ,
|
||||
typename TTypeArg =const TType& ,
|
||||
typename TTypeAlloc=ZNsMain::ZCAllocator,
|
||||
typename TTypeInit =ZNsMain::ZtCInit<TType>
|
||||
>
|
||||
class ZtCTypeClass ///////////////////////////////*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template<typename TTypeSize=long> class ZtCTypeTreeData*/
|
||||
|
||||
}/*
|
||||
namespace ZNsType*/
|
||||
|
||||
|
||||
template< typename TType ,
|
||||
typename TTypeInit =ZNsMain::ZtCInit<TType>,
|
||||
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
|
||||
>
|
||||
class ZtCTreeData /*###########################################*/
|
||||
{
|
||||
public:
|
||||
class ZCNode1; class ZCNode2; class ZCNodeInfo;
|
||||
public:
|
||||
typedef TType TypeData ;
|
||||
typedef TTypeInit ZCTypeInit ;
|
||||
typedef TTypeTreeData ZCTypeTreeData;
|
||||
public:
|
||||
typedef typename TTypeTreeData::TypeSize TypeSize ;
|
||||
typedef typename TTypeTreeData::template
|
||||
ZtCTypeClass<ZCNode1>::TypeList ZCNode1List ;
|
||||
typedef typename TTypeTreeData::template
|
||||
ZtCTypeClass<ZCNode2>::TypeList ZCNode2List ;
|
||||
public:
|
||||
typedef ZCNode1 ZCNode ;
|
||||
typedef ZCNode1List ZCNodeList ;
|
||||
public:
|
||||
typedef typename ZCNodeList::ZCLink ZCNodeLink;
|
||||
typedef typename ZCNodeList::iterator IterOfNode;
|
||||
public:
|
||||
|
||||
class ZCNode1 : public ZCTypeInit
|
||||
{
|
||||
public :
|
||||
friend class ZCNodeInfo;
|
||||
private:
|
||||
ZCNode* mp_HighNode ;
|
||||
TypeData mo_TypeData ;
|
||||
ZCNode2List mo_CNodeList;
|
||||
public :
|
||||
|
||||
ZCNode1()
|
||||
{
|
||||
mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData);
|
||||
}/*
|
||||
ZCNode1()*/
|
||||
|
||||
~ZCNode1()
|
||||
{
|
||||
mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData);
|
||||
}/*
|
||||
~ZCNode1()*/
|
||||
|
||||
ZCNode* GetHighNodePtr () {return (ZCNode*)mp_HighNode;}
|
||||
const ZCNode* GetHighNodePtr ()const{return (ZCNode*)mp_HighNode;}
|
||||
|
||||
TypeData& GetData () {return mo_TypeData;}
|
||||
const TypeData& GetData ()const{return mo_TypeData;}
|
||||
const ZCNodeList& GetCNodeList()const{return (ZCNodeList&)mo_CNodeList;}
|
||||
|
||||
TypeSize GetNodeCnt(){return mo_CNodeList.size();}
|
||||
|
||||
void DeleteCNodeList(){mo_CNodeList.DeleteAll();}
|
||||
void clear (){mo_CNodeList.DeleteAll();}
|
||||
|
||||
ZCNode& AddSubNode()
|
||||
{
|
||||
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef());
|
||||
|
||||
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
|
||||
}/*
|
||||
ZCNode& AddSubNode()*/
|
||||
|
||||
ZCNodeInfo GetHeadNodeIter()
|
||||
{
|
||||
return ZCNodeInfo((ZCNode*)this, ((ZCNodeList&)mo_CNodeList).GetHeadLinkPtr());
|
||||
}/*
|
||||
ZCNodeInfo GetHeadNodeIter()*/
|
||||
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> TViewClass <20><> interface
|
||||
|
||||
ZNsMain::ZNsEnum::ZERun OnDataBody(TypeData, TypeSize AI_Depth, TypeSize AI_Index=0)
|
||||
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeStart(int AI_Depth, int AI_NodeCnt)
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeClose(int AI_Depth, int AI_NodeCnt)
|
||||
|
||||
-- 2011-10-31 21:53:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
|
||||
( TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0 )
|
||||
/*##############################################################*/
|
||||
{
|
||||
const bool CB_DoStop = ///////////////////////////////
|
||||
(
|
||||
AR_CViewClass.OnDataBody
|
||||
(mo_TypeData, AI_StartDepth, AI_NodeIndex)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
TypeSize VL_NodeCnt= ((ZCNodeList&)mo_CNodeList).size () ;
|
||||
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
||||
|
||||
if ( AR_CViewClass. //////////////////////////////////////
|
||||
OnSubNodeStart(AI_StartDepth, VL_NodeCnt)==
|
||||
ZNsMain::ZNsEnum::ZERun_NO
|
||||
)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; } //////////////////////
|
||||
|
||||
|
||||
++AI_StartDepth;
|
||||
{
|
||||
__for1(TypeSize, i, VL_NodeCnt)
|
||||
{
|
||||
const bool CB_DoStop =
|
||||
(
|
||||
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).
|
||||
IterPreOrder<TViewClass>
|
||||
(AR_CViewClass, AI_StartDepth, i)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
//////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
((ZCNodeList&)mo_CNodeList).MoveNextIter(RR(VO_iter_Node));
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_NodeCnt)*/
|
||||
}
|
||||
--AI_StartDepth;
|
||||
|
||||
const ZNsMain::ZNsEnum::ZERun CE_ERun =
|
||||
AR_CViewClass.OnSubNodeClose(AI_StartDepth, VL_NodeCnt);
|
||||
|
||||
if(CE_ERun==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
return ZNsMain::ZNsEnum::ZERun_NO; /////////////////////
|
||||
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}/*
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
|
||||
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
|
||||
/*##############################################################*/
|
||||
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
|
||||
( TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0 )
|
||||
/*###############################################################*/
|
||||
{
|
||||
TypeSize VL_NodeCnt = ((ZCNodeList&)mo_CNodeList).size () ;
|
||||
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
||||
|
||||
if(AR_CViewClass.OnSubNodeStart
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
|
||||
++AI_StartDepth; /*####################*/
|
||||
{
|
||||
__for1(TypeSize, i, VL_NodeCnt)
|
||||
{
|
||||
const bool CB_DoStop =
|
||||
(
|
||||
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).
|
||||
IterPostOrder<TViewClass>(AR_CViewClass, AI_StartDepth, i)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
//////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
((ZCNodeList&)mo_CNodeList).MoveNextIter(VO_iter_Node);
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_NodeCnt)*/
|
||||
}
|
||||
--AI_StartDepth; /*####################*/
|
||||
|
||||
if(AR_CViewClass.OnSubNodeClose
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
|
||||
const bool CB_DoStop = /////////////////////////
|
||||
(
|
||||
AR_CViewClass.OnDataBody
|
||||
( mo_TypeData, AI_StartDepth, AI_NodeIndex )
|
||||
==ZNsMain::ZNsEnum::ZERun_NO
|
||||
) ;
|
||||
////////////////////////////////////////////////
|
||||
|
||||
if(CB_DoStop)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}/*
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
|
||||
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
|
||||
/*###############################################################*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNode1*/
|
||||
|
||||
class ZCNode2 : public ZCTypeInit
|
||||
{
|
||||
public :
|
||||
friend class ZCNodeInfo;
|
||||
private:
|
||||
ZCNode* mp_HighNode ;
|
||||
TypeData mo_TypeData ;
|
||||
ZCNode1List mo_CNodeList;
|
||||
public :
|
||||
|
||||
ZCNode2()
|
||||
{
|
||||
mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData);
|
||||
}/*
|
||||
ZCNode2()*/
|
||||
~ZCNode2()
|
||||
{
|
||||
mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData);
|
||||
}/*
|
||||
~ZCNode2()*/
|
||||
|
||||
ZCNode* GetHighNodePtr () {return (ZCNode*)mp_HighNode;}
|
||||
const ZCNode* GetHighNodePtr ()const{return (ZCNode*)mp_HighNode;}
|
||||
|
||||
TypeData& GetData () {return mo_TypeData ;}
|
||||
const TypeData& GetData ()const{return mo_TypeData ;}
|
||||
const ZCNodeList& GetCNodeList()const{return (ZCNodeList&)mo_CNodeList;}
|
||||
|
||||
TypeSize GetNodeCnt(){return mo_CNodeList.size();}
|
||||
|
||||
void DeleteCNodeList(){mo_CNodeList.DeleteAll();}
|
||||
void clear (){mo_CNodeList.DeleteAll();}
|
||||
|
||||
ZCNode& AddSubNode()
|
||||
{
|
||||
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef());
|
||||
|
||||
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
|
||||
}/*
|
||||
ZCNode& AddSubNode()*/
|
||||
|
||||
ZCNodeInfo GetHeadNodeIter()
|
||||
{
|
||||
return ZCNodeInfo((ZCNode*)this, ((ZCNodeList&)mo_CNodeList).GetHeadLinkPtr());
|
||||
}/*
|
||||
ZCNodeInfo GetHeadNodeIter()*/
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> ZCNode1 <20><> ZCNode2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9>, ZCNode2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IterPreOrder() <20><> IterPostOrder() <20><>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD>. ZCNode2 <20><> ZCNode1 <20><> <20><><EFBFBD><EFBFBD>ȯ<EFBFBD>Ǿ ZCNode1 <20><> IterPreOrder() <20><> IterPostOrder()
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
|
||||
-- 2011-11-01 10:40:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNode2*/
|
||||
|
||||
class ZCNodeInfo
|
||||
{
|
||||
private:
|
||||
ZCNode* mp_NowNodeWrap;
|
||||
ZCNodeLink* mp_NowNodeLink;
|
||||
public :
|
||||
|
||||
ZCNodeInfo(ZCNode* AP_CNode=0, ZCNodeLink* AP_CNodeLink=0)
|
||||
{
|
||||
mp_NowNodeWrap=AP_CNode; mp_NowNodeLink=AP_CNodeLink;
|
||||
}/*
|
||||
ZCNodeInfo(ZCNode* AP_CNode=0, ZCNodeLink* AP_CNodeLink=0)*/
|
||||
|
||||
ZCNode* GetNowNodeWrap(){return mp_NowNodeWrap;}
|
||||
ZCNodeLink* GetNowNodeLink(){return mp_NowNodeLink;}
|
||||
|
||||
bool DeleteNode()
|
||||
{
|
||||
if(mp_NowNodeWrap==0 || mp_NowNodeLink==0) return false;
|
||||
|
||||
((ZCNodeList&)(mp_NowNodeWrap->mo_CNodeList)).
|
||||
DeleteLink(mp_NowNodeLink);
|
||||
mp_NowNodeLink=0; return true; ///////////////
|
||||
}/*
|
||||
bool DeleteNode()*/
|
||||
|
||||
ZCNodeInfo& operator ++ (int)
|
||||
{mp_NowNodeWrap->mo_CNodeList.MoveNextIter(mp_NowNodeLink); return *this;}
|
||||
|
||||
ZCNode& operator*() {return mp_NowNodeWrap->mo_CNodeList.ItD(mp_NowNodeLink);}
|
||||
const ZCNode& operator*()const{return mp_NowNodeWrap->mo_CNodeList.ItD(mp_NowNodeLink);}
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNodeInfo*/
|
||||
|
||||
|
||||
/*public :*/
|
||||
private:
|
||||
ZCNode mo_RootNode;
|
||||
public :
|
||||
ZCNode& GetRootNode() {return mo_RootNode;}
|
||||
const ZCNode& GetRootNode()const{return mo_RootNode;}
|
||||
|
||||
void DeleteAll(){mo_RootNode.clear();}
|
||||
void clear (){mo_RootNode.clear();}
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> <20><> clear() <20>Լ<EFBFBD><D4BC><EFBFBD> mo_RootNode.clear() <20><> ȣ<><C8A3><EFBFBD>ϰ<EFBFBD> <20>ִµ<D6B4>, <20><><EFBFBD><EFBFBD> mo_RootNode.mo_TypeData
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, mo_TypeData <20><> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD>ϴ<EFBFBD> <20>ڵ尡 <20>ʿ<EFBFBD><CABF><EFBFBD> <20><> <20>ִ<EFBFBD>. <20>̿<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>
|
||||
<20><> CXmlInfo_T<>::clear() <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
-- 2012-10-12 13:20:00
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass)
|
||||
{
|
||||
mo_RootNode.IterPreOrder<TViewClass>(AR_CViewClass, 0, 0);
|
||||
}/*
|
||||
template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass) */
|
||||
|
||||
template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass)
|
||||
{
|
||||
mo_RootNode.IterPostOrder<TViewClass>(AR_CViewClass, 0, 0);
|
||||
}/*
|
||||
template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass) */
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TType ,
|
||||
typename TTypeInit =ZNsMain::ZtCInit<TType>,
|
||||
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
|
||||
>
|
||||
class ZtCTreeData #############################################*/
|
||||
|
||||
|
||||
|
||||
/*///////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> class ZtCTreeData <20><><EFBFBD><EFBFBD> -- 2015-08-14 14:00
|
||||
|
||||
#include <iostream>
|
||||
#include "ZCppMain/ZtCTreeData.H"
|
||||
|
||||
using namespace std ;
|
||||
using namespace ZNsMain;
|
||||
|
||||
typedef ZtCStringBase<char> CStringBase ;
|
||||
typedef ZtCTreeData<CStringBase> CStrTreeData ;
|
||||
typedef CStrTreeData::ZCNode CNodeCStr ;
|
||||
typedef ZNsMain::ZNsView::
|
||||
ZtCViewTreeData<CStringBase> CViewTreeData;
|
||||
|
||||
int main()
|
||||
{
|
||||
CStringBase VO_CStringBase ;
|
||||
CStrTreeData VO_CStrTreeData ;
|
||||
CViewTreeData VO_CViewTreeData;
|
||||
|
||||
CNodeCStr& VO_CNodeCStr1 = VO_CStrTreeData.GetRootNode().AddSubNode();
|
||||
CNodeCStr& VO_CNodeCStr2 = VO_CStrTreeData.GetRootNode().AddSubNode();
|
||||
CNodeCStr& VO_CNodeCStr3 = VO_CStrTreeData.GetRootNode().AddSubNode();
|
||||
|
||||
CNodeCStr& VO_CNodeCStr11 = VO_CNodeCStr1 .AddSubNode();
|
||||
CNodeCStr& VO_CNodeCStr12 = VO_CNodeCStr1 .AddSubNode();
|
||||
|
||||
CNodeCStr& VO_CNodeCStr121= VO_CNodeCStr12.AddSubNode();
|
||||
CNodeCStr& VO_CNodeCStr122= VO_CNodeCStr12.AddSubNode();
|
||||
|
||||
CNodeCStr& VO_CNodeCStr21 = VO_CNodeCStr2 .AddSubNode();
|
||||
CNodeCStr& VO_CNodeCStr22 = VO_CNodeCStr2 .AddSubNode();
|
||||
|
||||
VO_CStrTreeData.GetRootNode().GetData()="## Root Node ##";
|
||||
|
||||
VO_CNodeCStr1 . GetData()="Node1" ;
|
||||
VO_CNodeCStr2 . GetData()="Node2" ;
|
||||
VO_CNodeCStr3 . GetData()="Node3" ;
|
||||
|
||||
VO_CNodeCStr11. GetData()="Node11" ;
|
||||
VO_CNodeCStr12. GetData()="Node12" ;
|
||||
|
||||
VO_CNodeCStr21. GetData()="Node21" ;
|
||||
VO_CNodeCStr22. GetData()="Node22" ;
|
||||
|
||||
VO_CNodeCStr121.GetData()="Node121";
|
||||
VO_CNodeCStr122.GetData()="Node122";
|
||||
|
||||
cout<<"# Pre Order"<<endl;
|
||||
VO_CStrTreeData.IterPreOrder (VO_CViewTreeData);
|
||||
cout<<"# Post Order" <<endl;
|
||||
VO_CStrTreeData.IterPostOrder(VO_CViewTreeData);
|
||||
}
|
||||
|
||||
<20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
# Pre Order
|
||||
<20><> Index=0: ## Root Node ##
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node1
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node11
|
||||
<20><> Index=2: Node12
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node121
|
||||
<20><> Index=2: Node122
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=2: Node2
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node21
|
||||
<20><> Index=2: Node22
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=3: Node3
|
||||
<20><> OnSubNodeClose:
|
||||
# Post Order
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node11
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node121
|
||||
<20><> Index=2: Node122
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=2: Node12
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=1: Node1
|
||||
<20><> OnSubNodeStart:
|
||||
<20><> Index=1: Node21
|
||||
<20><> Index=2: Node22
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=2: Node2
|
||||
<20><> Index=3: Node3
|
||||
<20><> OnSubNodeClose:
|
||||
<20><> Index=0: ## Root Node ##
|
||||
|
||||
///////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
/*///////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> class ZtCTreeData <>::ZCNode1 <20><><EFBFBD><EFBFBD> mo_TypeData <20><> <20>ִٸ<D6B4>,
|
||||
class ZtCTreeDataEx<>::ZCNode1 <20><><EFBFBD><EFBFBD> mo_CDataList <20><> <20>ִ<EFBFBD>.
|
||||
|
||||
///////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
template< typename TType,
|
||||
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
|
||||
>
|
||||
class ZtCTreeDataEx /*#########################################*/
|
||||
{
|
||||
public:
|
||||
typedef TType TypeData ;
|
||||
typedef TTypeTreeData ZCTypeTreeData;
|
||||
public:
|
||||
class ZCNode1; class ZCNode2; class ZCNodeInfo ;
|
||||
public:
|
||||
typedef typename TTypeTreeData::TypeSize TypeSize;
|
||||
public:
|
||||
typedef typename TTypeTreeData::
|
||||
template ZtCTypeClass<TypeData>::TypeList ZCDataList ;
|
||||
typedef typename TTypeTreeData::
|
||||
template ZtCTypeClass<ZCNode1 >::TypeList ZCNode1List;
|
||||
typedef typename TTypeTreeData::
|
||||
template ZtCTypeClass<ZCNode2 >::TypeList ZCNode2List;
|
||||
public:
|
||||
typedef ZCNode1 ZCNode ;
|
||||
typedef ZCNode1List ZCNodeList;
|
||||
typedef typename ZCNodeList::ZCLink ZCNodeLink;
|
||||
typedef typename ZCDataList::ZCLink ZCDataLink;
|
||||
public:
|
||||
typedef typename ZCDataList::iterator IterOfData;
|
||||
typedef typename ZCNodeList::iterator IterOfNode;
|
||||
public:
|
||||
|
||||
class ZCNode1
|
||||
{
|
||||
public :
|
||||
friend class ZCNodeInfo;
|
||||
private:
|
||||
ZCNode* mp_HighNode ;
|
||||
ZCDataList mo_CDataList;
|
||||
ZCNode2List mo_CNodeList;
|
||||
public :
|
||||
|
||||
ZCNode1()
|
||||
{
|
||||
mp_HighNode=0;
|
||||
}/*
|
||||
ZCNode1()*/
|
||||
|
||||
ZCNode* GetHighNodePtr() {return (ZCNode*)mp_HighNode;}
|
||||
const ZCNode* GetHighNodePtr()const{return (ZCNode*)mp_HighNode;}
|
||||
|
||||
ZCDataList& GetZCDataList() {return mo_CDataList;}
|
||||
const ZCDataList& GetZCDataList()const{return mo_CDataList;}
|
||||
const ZCNodeList& GetCNodeList()const{return (ZCNodeList&)mo_CNodeList;}
|
||||
|
||||
TypeSize GetDataCnt(){return mo_CDataList.size();}
|
||||
TypeSize GetNodeCnt(){return mo_CNodeList.size();}
|
||||
|
||||
void DeleteCDataList(){mo_CDataList.DeleteAll();}
|
||||
void DeleteCNodeList(){mo_CNodeList.DeleteAll();}
|
||||
void DeleteAll (){mo_CDataList.DeleteAll(); mo_CNodeList.DeleteAll();}
|
||||
void clear (){DeleteAll();}
|
||||
|
||||
ZCNode& AddSubNode()
|
||||
{
|
||||
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef());
|
||||
|
||||
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
|
||||
}/*
|
||||
ZCNode& AddSubNode()*/
|
||||
|
||||
ZCNodeInfo GetHeadNodeIter()
|
||||
{
|
||||
return ZCNodeInfo((ZCNode*)this, ((ZCNodeList&)mo_CNodeList).GetHeadLinkPtr());
|
||||
}/*
|
||||
ZCNodeInfo GetHeadNodeIter()*/
|
||||
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> TViewClass <20><> interface
|
||||
|
||||
ZNsMain::ZNsEnum::ZERun OnDataStart(int AI_Depth)
|
||||
ZNsMain::ZNsEnum::ZERun OnDataBody(TypeData, TypeSize AI_Depth, TypeSize AI_Index)
|
||||
ZNsMain::ZNsEnum::ZERun OnDataClose(int AI_Depth)
|
||||
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeStart(int AI_Depth, int AI_NodeCnt)
|
||||
ZNsMain::ZNsEnum::ZERun OnSubNodeClose(int AI_Depth, int AI_NodeCnt)
|
||||
|
||||
-- 2011-10-31 21:53:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
|
||||
(
|
||||
TViewClass& AR_CViewClass ,
|
||||
TypeSize AI_StartDepth=0,
|
||||
TypeSize AI_NodeIndex =0
|
||||
)
|
||||
/*##############################################################*/
|
||||
{
|
||||
TypeSize VL_DataCnt= mo_CDataList .size();
|
||||
TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size();
|
||||
|
||||
IterOfData VO_iter_Data( mo_CDataList.begin());
|
||||
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
||||
|
||||
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
{
|
||||
__for1(TypeSize, i, VL_DataCnt)
|
||||
{
|
||||
const bool CB_DoStop =
|
||||
(
|
||||
AR_CViewClass.OnDataBody
|
||||
(
|
||||
mo_CDataList.ItD(VO_iter_Data), AI_StartDepth, AI_NodeIndex
|
||||
)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
//////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
mo_CDataList.MoveNextIter(VO_iter_Data); ///////
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_DataCnt)*/
|
||||
}
|
||||
if(AR_CViewClass.OnDataClose(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
|
||||
|
||||
if(AR_CViewClass.OnSubNodeStart
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
++AI_StartDepth; /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
{
|
||||
__for1(TypeSize, i, VL_NodeCnt)
|
||||
{
|
||||
const bool CB_DoStop = ///////////////////////////////
|
||||
(
|
||||
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).
|
||||
IterPreOrder<TViewClass>
|
||||
(AR_CViewClass, AI_StartDepth. i)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
((ZCNodeList&)mo_CNodeList).MoveNextIter(VO_iter_Node);
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_NodeCnt)*/
|
||||
}
|
||||
--AI_StartDepth; /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
|
||||
|
||||
if(AR_CViewClass.OnSubNodeClose
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
return ZNsMain::ZNsEnum::ZERun_OK; /////////////////////////
|
||||
}/*
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
|
||||
(
|
||||
TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0
|
||||
TypeSize AI_NodeIndex =0
|
||||
) */
|
||||
/*###############################################################*/
|
||||
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
|
||||
(
|
||||
TViewClass& AR_CViewClass ,
|
||||
TypeSize AI_StartDepth=0,
|
||||
TypeSize AI_NodeIndex =0
|
||||
)
|
||||
/*###############################################################*/
|
||||
{
|
||||
TypeSize VL_DataCnt= mo_CDataList. size();
|
||||
TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size();
|
||||
|
||||
IterOfData VO_iter_Data( mo_CDataList. begin());
|
||||
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
||||
|
||||
if(AR_CViewClass.OnSubNodeStart
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
++AI_StartDepth; /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
{
|
||||
__for1(TypeSize, i, VL_NodeCnt)
|
||||
{
|
||||
const bool CB_DoStop = ////////////////////////////////
|
||||
(
|
||||
((ZCNodeList&)mo_CNodeList).
|
||||
ItD(VO_iter_Node).IterPostOrder<TViewClass>
|
||||
(AR_CViewClass, AI_StartDepth, i)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
((ZCNodeList&)mo_CNodeList).MoveNextIter(VO_iter_Node);
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_NodeCnt)*/
|
||||
}
|
||||
--AI_StartDepth; /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
|
||||
|
||||
if(AR_CViewClass.OnSubNodeClose
|
||||
(AI_StartDepth, VL_NodeCnt)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
|
||||
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
{
|
||||
__for1(TypeSize, i, VL_DataCnt)
|
||||
{
|
||||
const bool CB_DoStop = ////////////////////
|
||||
(
|
||||
AR_CViewClass.OnDataBody
|
||||
(
|
||||
mo_CDataList.ItD(VO_iter_Data), AI_StartDepth, AI_NodeIndex
|
||||
)
|
||||
== ZNsMain::ZNsEnum::ZERun_NO
|
||||
);
|
||||
///////////////////////////////////////////
|
||||
|
||||
if(CB_DoStop) return ZNsMain::ZNsEnum::ZERun_NO;
|
||||
|
||||
mo_CDataList.MoveNextIter(VO_iter_Data); ///////////////
|
||||
}/*
|
||||
__for1(TypeSize, i, VL_DataCnt)*/
|
||||
}
|
||||
if(AR_CViewClass.OnDataClose(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return ZNsMain::ZNsEnum::ZERun_NO; }
|
||||
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
|
||||
|
||||
return ZNsMain::ZNsEnum::ZERun_OK;
|
||||
}/*
|
||||
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
|
||||
(
|
||||
TViewClass& AR_CViewClass ,
|
||||
TypeSize AI_StartDepth=0 ,
|
||||
TypeSize AI_NodeIndex =0
|
||||
)
|
||||
#################################################################*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNode1*/
|
||||
|
||||
class ZCNode2
|
||||
{
|
||||
public :
|
||||
friend class ZCNodeInfo;
|
||||
private:
|
||||
ZCNode* mp_HighNode ;
|
||||
ZCDataList mo_CDataList;
|
||||
ZCNode1List mo_CNodeList;
|
||||
public :
|
||||
|
||||
ZCNode2()
|
||||
{
|
||||
mp_HighNode=0;
|
||||
}/*
|
||||
ZCNode2()*/
|
||||
|
||||
ZCNode* GetHighNodePtr() {return (ZCNode*)mp_HighNode;}
|
||||
const ZCNode* GetHighNodePtr()const{return (ZCNode*)mp_HighNode;}
|
||||
|
||||
ZCDataList& GetZCDataList() {return mo_CDataList;}
|
||||
const ZCDataList& GetZCDataList()const{return mo_CDataList;}
|
||||
const ZCNodeList& GetCNodeList ()const{return (ZCNodeList&)mo_CNodeList;}
|
||||
|
||||
TypeSize GetDataCnt(){return mo_CDataList.size();}
|
||||
TypeSize GetNodeCnt(){return mo_CNodeList.size();}
|
||||
|
||||
void DeleteCDataList(){mo_CDataList.DeleteAll();}
|
||||
void DeleteCNodeList(){mo_CNodeList.DeleteAll();}
|
||||
void DeleteAll (){mo_CDataList.DeleteAll(); mo_CNodeList.DeleteAll();}
|
||||
void clear (){DeleteAll();}
|
||||
|
||||
ZCNode& AddSubNode()
|
||||
{
|
||||
ZCNode* VP_CNode=(ZCNode*)&
|
||||
( **mo_CNodeList.AddTailDef() );
|
||||
|
||||
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode;
|
||||
}/*
|
||||
ZCNode& AddSubNode()*/
|
||||
|
||||
ZCNodeInfo GetHeadNodeIter()
|
||||
{
|
||||
return ZCNodeInfo((ZCNode*)this, ((ZCNodeList&)mo_CNodeList).GetHeadLinkPtr());
|
||||
}/*
|
||||
ZCNodeInfo GetHeadNodeIter()*/
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> ZCNode1 <20><> ZCNode2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9>, ZCNode2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IterPreOrder() <20><> IterPostOrder() <20><>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD>. ZCNode2 <20><> ZCNode1 <20><> <20><><EFBFBD><EFBFBD>ȯ<EFBFBD>Ǿ ZCNode1 <20><> IterPreOrder() <20><> IterPostOrder()
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
|
||||
-- 2011-11-01 10:40:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNode2*/
|
||||
|
||||
class ZCNodeInfo
|
||||
{
|
||||
private:
|
||||
ZCNode* mp_NowNodeWrap;
|
||||
ZCNodeLink* mp_NowNodeLink;
|
||||
public :
|
||||
|
||||
ZCNodeInfo(ZCNode* AP_CNode=0,ZCNodeLink* AP_CNodeLink=0)
|
||||
{
|
||||
mp_NowNodeWrap=AP_CNode; mp_NowNodeLink=AP_CNodeLink;
|
||||
}/*
|
||||
ZCNodeInfo(ZCNode* AP_CNode=0,ZCNodeLink* AP_CNodeLink=0)*/
|
||||
|
||||
ZCNode* GetNowNodeWrap(){return mp_NowNodeWrap;}
|
||||
ZCNodeLink* GetNowNodeLink(){return mp_NowNodeLink;}
|
||||
|
||||
bool DeleteNode()
|
||||
{
|
||||
if(mp_NowNodeWrap==0 || mp_NowNodeLink==0) return false;
|
||||
|
||||
((ZCNodeList&)(mp_NowNodeWrap->mo_CNodeList)).
|
||||
DeleteLink(mp_NowNodeLink);
|
||||
mp_NowNodeLink=0; return true; //////////////
|
||||
}/*
|
||||
bool DeleteNode()*/
|
||||
|
||||
ZCNodeInfo& operator++(int)
|
||||
{
|
||||
mp_NowNodeWrap->mo_CNodeList.MoveNextIter(mp_NowNodeLink); return *this;
|
||||
}/*
|
||||
ZCNodeInfo& operator++(int)*/
|
||||
|
||||
ZCNode& operator*() {return mp_NowNodeWrap->mo_CNodeList.ItD(mp_NowNodeLink);}
|
||||
const ZCNode& operator*()const{return mp_NowNodeWrap->mo_CNodeList.ItD(mp_NowNodeLink);}
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNodeInfo
|
||||
|
||||
|
||||
public :*/
|
||||
private:
|
||||
ZCNode mo_RootNode;
|
||||
public:
|
||||
ZCNode& GetRootNode() {return mo_RootNode;}
|
||||
const ZCNode& GetRootNode()const{return mo_RootNode;}
|
||||
|
||||
void DeleteAll(){mo_RootNode.clear();}
|
||||
void clear (){mo_RootNode.clear();}
|
||||
|
||||
template<typename TViewClass> void IterPreOrder (TViewClass AO_CViewClass)
|
||||
{ mo_RootNode.IterPreOrder<TViewClass>(AO_CViewClass, 0); }
|
||||
template<typename TViewClass> void IterPostOrder(TViewClass AO_CViewClass)
|
||||
{ mo_RootNode.IterPostOrder<TViewClass>(AO_CViewClass, 0); }
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TType,
|
||||
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
|
||||
>
|
||||
ZtCTreeDataEx #################################################*/
|
||||
|
||||
}/*
|
||||
namespace ZNsMain*/
|
||||
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CTreeClass.H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD>̴<EFBFBD>. CTreeClass.H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ʈ<><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD>ϴµ<CFB4>,
|
||||
<20>Ʒ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
class CMyNode;
|
||||
{
|
||||
public:
|
||||
TypeData mo_TypeData;
|
||||
ZNsMain::ZtCObjList<CMyNode> mo_NodeList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ.
|
||||
};
|
||||
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>, void* <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>. <20><EFBFBD><D7B7><EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>, <20>Ȱ<EFBFBD><C8B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><> Ŭ<><C5AC><EFBFBD><EFBFBD> ZCNode1, ZCNode2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(!!) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD>.
|
||||
|
||||
Ŭ<><C5AC><EFBFBD><EFBFBD> ZCNode1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZCNode2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>(<28><><EFBFBD><EFBFBD>Ʈ)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD>,
|
||||
Ŭ<><C5AC><EFBFBD><EFBFBD> ZCNode2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZCNode1 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>(<28><><EFBFBD><EFBFBD>Ʈ)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD>.
|
||||
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20>ƴ<EFBFBD><C6B4><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
2011-10-29 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> 7 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ȭȸ<C8AD><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>鼭, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> object
|
||||
<20><><EFBFBD><EFBFBD>, <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> object <20><> instance <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD> <20>ذ<EFBFBD><D8B0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӹ<EFBFBD> <20>ӿ<EFBFBD> <20><EFBFBD><D7B7><EFBFBD><EFBFBD>鼭, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
<20><> <20><>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD> <20>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϾ<C6B4><CFBE><EFBFBD><EFBFBD><EFBFBD> <20>巯<EFBFBD><E5B7AF><EFBFBD><EFBFBD>. <20>Ǹ<EFBFBD><C7B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><> <20><>
|
||||
<20><>, Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20>ȱ<EFBFBD><C8B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20≯<EFBFBD><CCB8><EFBFBD> <20>ٸ<EFBFBD> 2 <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><> <20><> <20>ִٴ<D6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̴<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> CTreeData.H <20>̴<EFBFBD>.
|
||||
|
||||
<20><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>.
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڿ<EFBFBD> <20>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20>ٷ<EFBFBD> <20>տ<EFBFBD> <20><>ŭ <20>ٰ<EFBFBD><D9B0><EFBFBD>
|
||||
<20><>.
|
||||
|
||||
-- 2011-10-31 23:47:00
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD> CTreeClass.H <20><> <20><><EFBFBD>ŵǾ<C5B5><C7BE><EFBFBD>. -- 2013-05-01 17:22:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
#endif // __ZCPPMAIN__ZCTREEDATA_H__
|
Reference in New Issue
Block a user