commit 2025-08-31 01:34 refine class ZtCMoveObj in ZCppMain/ZtCStringEx.H
This commit is contained in:
@ -15,13 +15,13 @@ namespace ZNsMain
|
||||
■ 이 AVL tree 는 각 노드가 트리 구조를 이루며, 동시에 이중 원형 연결리스트를 이루고 있다.
|
||||
자료를 기본적으로 오름차순 정렬한다.
|
||||
|
||||
■ Type 자료형에는 <,>,== 연산이 가능해야 한다.
|
||||
■ TType 자료형에는 <,>,== 연산이 가능해야 한다.
|
||||
|
||||
■ 어떤 클래스에 비교연산자를 정의할 때 bool operator>(const CStringHash& rhs) const 와 같
|
||||
이 하면 인수에도 const, 멤버함수에도 const 를 잊지 말 것.
|
||||
|
||||
■ 접미어 Key 가 붙어있는 멤버 함수는 Type 보다는 크기가 작은 어떤 자료형이다. 삽입, 삭제
|
||||
시에 메모리를 절약하기 위해서 사용한다. Type 자료형과 Key 자료형 사이에는 <,>,==,= 의 연
|
||||
■ 접미어 Key 가 붙어있는 멤버 함수는 TType 보다는 크기가 작은 어떤 자료형이다. 삽입, 삭제
|
||||
시에 메모리를 절약하기 위해서 사용한다. TType 자료형과 Key 자료형 사이에는 <,>,==,= 의 연
|
||||
산이 가능해야 한다.
|
||||
|
||||
■ multi set 으로 활용하는 코드는 MainAVL.H 파일의 주석에 예시하였다. typename TNodeBase 를
|
||||
@ -30,19 +30,19 @@ namespace ZNsMain
|
||||
/////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
template< typename Type ,
|
||||
typename TTypArg =const Type& ,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =ZNsMain::ZTypLong ,
|
||||
typename TCompare =ZNsMain::ZNsFunc::ZtCCompare<TTypArg, TTypArg, false>,
|
||||
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, true >
|
||||
template< typename TType ,
|
||||
typename TTypArg =const TType& ,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =ZNsMain::ZTypLong ,
|
||||
typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, false> ,
|
||||
typename TMoveObj =ZNsMain::ZtCMoveObj<TType , TTypArg, true >
|
||||
>
|
||||
class ZtCObjAVL : public TTypBase ///////////////////////////////////////////////////////
|
||||
{
|
||||
public:
|
||||
typedef Type TypeData ;
|
||||
typedef TType TypeData ;
|
||||
typedef TTypArg TypeArg ;
|
||||
typedef TTypBase TypeBase ;
|
||||
typedef TNodeBase TypeNodeBase;
|
||||
@ -64,7 +64,7 @@ namespace ZNsMain
|
||||
ZCNode* mp_RighNode; /* 오른쪽 노드 */
|
||||
ZCNode* mp_HighNode; /* 상위 노드 */
|
||||
|
||||
Type mo_Type ;
|
||||
TType mo_Data ;
|
||||
int mi_Balance ;
|
||||
|
||||
/* 오른쪽 노드에 삽입될 때마다 mi_Balance 는 1 씩 증가하고
|
||||
@ -224,15 +224,16 @@ namespace ZNsMain
|
||||
}/*
|
||||
bool IsFullNode() const*/
|
||||
|
||||
TTypArg GetData() const
|
||||
typename ZtCRef<TTypArg>::TypeConst GetData() const
|
||||
{
|
||||
return mo_Type;
|
||||
return mo_Data;
|
||||
}/*
|
||||
TTypArg GetData() const*/
|
||||
typename ZtCRef<TTypArg>::TypeConst GetData() const*/
|
||||
|
||||
bool operator==(TTypArg AR_Type) const{return mo_Type==AR_Type;}
|
||||
bool operator> (TTypArg AR_Type) const{return mo_Type> AR_Type;}
|
||||
bool operator< (TTypArg AR_Type) const{return mo_Type< AR_Type;}
|
||||
|
||||
bool operator==(TTypArg AR_Type) const{return mo_Data==AR_Type;}
|
||||
bool operator> (TTypArg AR_Type) const{return mo_Data> AR_Type;}
|
||||
bool operator< (TTypArg AR_Type) const{return mo_Data< AR_Type;}
|
||||
|
||||
template<typename TFunctor> static void IterInOrder (ZCNode* AP_Node, TFunctor AO_Functor)
|
||||
{
|
||||
@ -240,7 +241,7 @@ namespace ZNsMain
|
||||
{
|
||||
ZCNode::template IterInOrder<TFunctor>(AP_Node->mp_LeftNode, AO_Functor);
|
||||
{
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Type);
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Data);
|
||||
}
|
||||
ZCNode::template IterInOrder<TFunctor>(AP_Node->mp_RighNode, AO_Functor);
|
||||
}/*
|
||||
@ -252,7 +253,7 @@ namespace ZNsMain
|
||||
{
|
||||
if(AP_Node!=0)
|
||||
{
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Type);
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Data);
|
||||
|
||||
ZCNode::template IterPreOrder<TFunctor>(AP_Node->mp_LeftNode, AO_Functor);
|
||||
ZCNode::template IterPreOrder<TFunctor>(AP_Node->mp_RighNode, AO_Functor);
|
||||
@ -268,7 +269,7 @@ namespace ZNsMain
|
||||
ZCNode::template IterPostOrder<TFunctor>(AP_Node->mp_LeftNode, AO_Functor);
|
||||
ZCNode::template IterPostOrder<TFunctor>(AP_Node->mp_RighNode, AO_Functor);
|
||||
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Type);
|
||||
ZNsMain::ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(AP_Node->mo_Data);
|
||||
}/*
|
||||
if(AP_Node!=0)*/
|
||||
}/*
|
||||
@ -285,7 +286,7 @@ namespace ZNsMain
|
||||
(AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj);
|
||||
{
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Type, AR_HelpObj);
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Data, AR_HelpObj);
|
||||
}
|
||||
ZCNode::template IterInOrder<TFunctor, THelpObj>
|
||||
(AP_Node->mp_RighNode, AO_Functor, AR_HelpObj);
|
||||
@ -303,7 +304,7 @@ namespace ZNsMain
|
||||
if(AP_Node!=0)
|
||||
{
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Type, AR_HelpObj);
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Data, AR_HelpObj);
|
||||
|
||||
ZCNode::template IterPreOrder
|
||||
<TFunctor, THelpObj>(AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj);
|
||||
@ -328,7 +329,7 @@ namespace ZNsMain
|
||||
( AP_Node->mp_RighNode, AO_Functor, AR_HelpObj );
|
||||
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Type, AR_HelpObj);
|
||||
GetObjRef(AO_Functor)(AP_Node->mo_Data, AR_HelpObj);
|
||||
}/*
|
||||
if(AP_Node!=0)*/
|
||||
}/*
|
||||
@ -838,9 +839,9 @@ namespace ZNsMain
|
||||
ZCNode* VP_Temp=rhs.mp_HeadNode ;
|
||||
ZCNode* VP_Tail=rhs.mp_HeadNode->mp_PrevNode;
|
||||
|
||||
do /**/
|
||||
do //////
|
||||
{
|
||||
AddData(VP_Temp->mo_Type);
|
||||
AddData(VP_Temp->mo_Data);
|
||||
|
||||
if(VP_Temp==VP_Tail) return;
|
||||
|
||||
@ -861,7 +862,7 @@ namespace ZNsMain
|
||||
|
||||
do //////
|
||||
{
|
||||
AddData(VP_Temp->mo_Type);
|
||||
AddData(VP_Temp->mo_Data);
|
||||
|
||||
if(VP_Temp==VP_Tail) return *this;
|
||||
|
||||
@ -986,7 +987,7 @@ namespace ZNsMain
|
||||
|
||||
do /**/
|
||||
{
|
||||
DeleteData(VP_Temp->mo_Type);
|
||||
DeleteData(VP_Temp->mo_Data);
|
||||
|
||||
if(VP_Temp==VP_Tail) return *this;
|
||||
|
||||
@ -1060,11 +1061,11 @@ namespace ZNsMain
|
||||
|
||||
do /*#####*/
|
||||
{
|
||||
/* 아래 줄에서 VP_Temp->mo_Type 을 받는 인수는
|
||||
복사로 받거나 const Type& 으로 받아야 한다. */
|
||||
/* 아래 줄에서 VP_Temp->mo_Data 을 받는 인수는
|
||||
복사로 받거나 const TType& 으로 받아야 한다. */
|
||||
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Type);
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Data);
|
||||
|
||||
if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
|
||||
}
|
||||
@ -1082,11 +1083,11 @@ namespace ZNsMain
|
||||
|
||||
do /*#####*/
|
||||
{
|
||||
/* 아래 줄에서 VP_Temp->mo_Type 을 받는 인수는
|
||||
복사로 받거나 const Type& 으로 받아야 한다. */
|
||||
/* 아래 줄에서 VP_Temp->mo_Data 을 받는 인수는
|
||||
복사로 받거나 const TType& 으로 받아야 한다. */
|
||||
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Type, AO_HelpType) ;
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Data, AO_HelpType) ;
|
||||
|
||||
if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
|
||||
}
|
||||
@ -1106,7 +1107,7 @@ namespace ZNsMain
|
||||
do /*#####*/
|
||||
{
|
||||
ZNsMain::ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Type, AR_HelpType) ;
|
||||
GetObjRef(AO_Functor)(VP_Temp->mo_Data, AR_HelpType) ;
|
||||
|
||||
if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
|
||||
}
|
||||
@ -1143,12 +1144,21 @@ namespace ZNsMain
|
||||
{
|
||||
if(mp_RootNode==0)
|
||||
{
|
||||
mp_RootNode=new ZCNode ;
|
||||
mp_HeadNode=mp_RootNode ;
|
||||
ZCNode::MakeRing(mp_HeadNode, mp_HeadNode);
|
||||
mp_RootNode->mo_Type=AR_Type;
|
||||
mp_RootNode = new ZCNode ;
|
||||
mp_HeadNode = mp_RootNode ;
|
||||
|
||||
++ml_NodeSize; return true;
|
||||
ZCNode::MakeRing(mp_HeadNode, mp_HeadNode);
|
||||
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0) /////////////////////
|
||||
{
|
||||
TypeMoveObj::Exec(mp_RootNode->mo_Data, AR_Type);
|
||||
}
|
||||
else ////////////////////////////////////////////////
|
||||
#endif
|
||||
mp_RootNode->mo_Data=AR_Type;
|
||||
|
||||
++ml_NodeSize; return true;
|
||||
}
|
||||
else // mp_RootNode!=0
|
||||
{
|
||||
@ -1168,7 +1178,7 @@ namespace ZNsMain
|
||||
|
||||
ZCNode::MakeRing(mp_HeadNode, mp_HeadNode);
|
||||
|
||||
mp_RootNode->mo_Type=AR_Key; ++ml_NodeSize;
|
||||
mp_RootNode->mo_Data=AR_Key; ++ml_NodeSize;
|
||||
|
||||
return mp_RootNode; /*///////////////////*/
|
||||
}
|
||||
@ -1197,7 +1207,7 @@ namespace ZNsMain
|
||||
|
||||
(void)CutNode(VP_FindNode);
|
||||
|
||||
VP_FindNode->mo_Type=AR_NewType;
|
||||
VP_FindNode->mo_Data=AR_NewType;
|
||||
|
||||
// 같은 값을 가진 노드가 있어서 삽입에 실패했다면, 잘라낸 노드를 지워버린다.
|
||||
|
||||
@ -1228,7 +1238,7 @@ namespace ZNsMain
|
||||
|
||||
(void)CutNode(VP_FindNode);
|
||||
|
||||
VP_FindNode->mo_Type=AR_NewKey;
|
||||
VP_FindNode->mo_Data=AR_NewKey;
|
||||
|
||||
// 같은 키 값을 가진 노드가 있어서 삽입에 실패했다면, 잘라낸 노드를 지워버린다.
|
||||
|
||||
@ -1305,7 +1315,7 @@ namespace ZNsMain
|
||||
ZCNode* FindData(TTypArg AR_Type) const
|
||||
{
|
||||
/* mp_RootNode 부터 하위 노드로 순회하면서
|
||||
mo_Type 를 가지는 노드를 찾는다. */
|
||||
mo_Data 를 가지는 노드를 찾는다. */
|
||||
|
||||
return FindData(AR_Type, mp_RootNode);
|
||||
}/*
|
||||
@ -1315,7 +1325,7 @@ namespace ZNsMain
|
||||
ZCNode* FindData(TTypArg AR_Type, ZCNode* AP_StartNode) const
|
||||
{
|
||||
/* AP_StartNode 부터 하위 노드로 순회하면서
|
||||
mo_Type 를 가지는 노드를 찾는다. */
|
||||
mo_Data 를 가지는 노드를 찾는다. */
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
@ -1335,17 +1345,17 @@ namespace ZNsMain
|
||||
|
||||
while(AP_StartNode!=0)
|
||||
{
|
||||
if(AP_StartNode->mo_Type==AR_Type)
|
||||
if (AP_StartNode->mo_Data == AR_Type)
|
||||
{
|
||||
return AP_StartNode;
|
||||
}
|
||||
else if(AP_StartNode->mo_Type>AR_Type)
|
||||
else if(AP_StartNode->mo_Data > AR_Type)
|
||||
{
|
||||
AP_StartNode=AP_StartNode->mp_LeftNode;
|
||||
AP_StartNode = AP_StartNode->mp_LeftNode;
|
||||
}
|
||||
else
|
||||
{
|
||||
AP_StartNode=AP_StartNode->mp_RighNode;
|
||||
AP_StartNode = AP_StartNode->mp_RighNode;
|
||||
}/*
|
||||
else*/
|
||||
}/*
|
||||
@ -1402,7 +1412,7 @@ namespace ZNsMain
|
||||
■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다.
|
||||
FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가
|
||||
AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기
|
||||
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Type 과 TKey 에 대한 비
|
||||
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Data 과 TKey 에 대한 비
|
||||
교 연산이 정의되어 있어야 한다.
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
@ -1425,9 +1435,9 @@ namespace ZNsMain
|
||||
|
||||
while(AP_StartNode!=0)
|
||||
{
|
||||
if(AP_StartNode->mo_Type==AR_Key) return AP_StartNode;
|
||||
if(AP_StartNode->mo_Data==AR_Key) return AP_StartNode;
|
||||
|
||||
if(AP_StartNode->mo_Type>AR_Key)
|
||||
if(AP_StartNode->mo_Data>AR_Key)
|
||||
AP_StartNode=AP_StartNode->mp_LeftNode;
|
||||
else
|
||||
AP_StartNode=AP_StartNode->mp_RighNode;
|
||||
@ -1449,7 +1459,7 @@ namespace ZNsMain
|
||||
■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다.
|
||||
FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가
|
||||
AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기
|
||||
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Type 과 TKey 에 대한 비
|
||||
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Data 과 TKey 에 대한 비
|
||||
교 연산이 정의되어 있어야 한다.
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
@ -1472,9 +1482,9 @@ namespace ZNsMain
|
||||
|
||||
while(AP_StartNode!=0)
|
||||
{
|
||||
if(AP_StartNode->mo_Type==AR_Key) return AP_StartNode;
|
||||
if(AP_StartNode->mo_Data==AR_Key) return AP_StartNode;
|
||||
|
||||
if(AP_StartNode->mo_Type>AR_Key)
|
||||
if(AP_StartNode->mo_Data>AR_Key)
|
||||
AP_StartNode=AP_StartNode->mp_LeftNode;
|
||||
else
|
||||
AP_StartNode=AP_StartNode->mp_RighNode;
|
||||
@ -1637,7 +1647,7 @@ namespace ZNsMain
|
||||
if(CB_IsLess)*/
|
||||
|
||||
|
||||
// AR_Node.mo_Type>AR_Type)
|
||||
// AR_Node.mo_Data>AR_Type)
|
||||
|
||||
if(AR_Node.mp_LeftNode==0)
|
||||
{
|
||||
@ -1775,7 +1785,7 @@ namespace ZNsMain
|
||||
if(CB_IsLess)*/
|
||||
|
||||
|
||||
// AR_Node.mo_Type>AR_Type
|
||||
// AR_Node.mo_Data>AR_Type
|
||||
|
||||
if(AR_Node.mp_LeftNode==0)
|
||||
{
|
||||
@ -1921,7 +1931,7 @@ namespace ZNsMain
|
||||
if(CB_IsLess)*/
|
||||
|
||||
|
||||
// AR_Node.mo_Type>AR_Type)
|
||||
// AR_Node.mo_Data>AR_Type)
|
||||
|
||||
if(AR_Node.mp_LeftNode==0)
|
||||
{
|
||||
@ -2002,10 +2012,10 @@ namespace ZNsMain
|
||||
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0)
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Type);
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
|
||||
else
|
||||
#endif
|
||||
VP_NewNode->mo_Type=AR_Type;
|
||||
VP_NewNode->mo_Data=AR_Type;
|
||||
|
||||
return JoinBefore(AP_StdNode, VP_NewNode);
|
||||
}/*
|
||||
@ -2016,7 +2026,7 @@ namespace ZNsMain
|
||||
{
|
||||
ZCNode* VP_NewNode = new ZCNode;
|
||||
|
||||
VP_NewNode->mo_Type = AR_Key ;
|
||||
VP_NewNode->mo_Data = AR_Key ;
|
||||
|
||||
return JoinBefore(AP_StdNode, VP_NewNode);
|
||||
}/*
|
||||
@ -2055,10 +2065,10 @@ namespace ZNsMain
|
||||
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0)
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Type);
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
|
||||
else
|
||||
#endif
|
||||
VP_NewNode->mo_Type=AR_Type;
|
||||
VP_NewNode->mo_Data=AR_Type;
|
||||
|
||||
return JoinAfter(AP_StdNode, VP_NewNode);
|
||||
}/*
|
||||
@ -2069,7 +2079,7 @@ namespace ZNsMain
|
||||
{
|
||||
ZCNode* VP_NewNode = new ZCNode;
|
||||
|
||||
VP_NewNode->mo_Type= AR_Key ;
|
||||
VP_NewNode->mo_Data= AR_Key ;
|
||||
|
||||
return JoinAfter(AP_StdNode, VP_NewNode);
|
||||
}/*
|
||||
@ -2356,14 +2366,14 @@ namespace ZNsMain
|
||||
|
||||
private:
|
||||
};/*
|
||||
template< typename Type ,
|
||||
typename TTypArg =const Type& ,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =ZNsMain::ZTypLong ,
|
||||
typename TCompare =ZNsMain::ZNsFunc::ZtCCompare<TTypArg, TTypArg, false>,
|
||||
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, true >
|
||||
template< typename TType ,
|
||||
typename TTypArg =const TType& ,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =ZNsMain::ZTypLong ,
|
||||
typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, false>,
|
||||
typename TMoveObj =ZNsMain::ZtCMoveObj<TType , TTypArg, true >
|
||||
>
|
||||
class ZtCObjAVL /////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@ -2415,28 +2425,28 @@ namespace ZNsMain
|
||||
namespace ZNsTmplParam
|
||||
{
|
||||
|
||||
template< typename Type ,
|
||||
typename TTypArg =const Type& ,
|
||||
typename TCompare =ZNsMain::ZNsFunc ::ZtCCompare<TTypArg, TTypArg, true>,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =long ,
|
||||
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, false>
|
||||
template< typename TType ,
|
||||
typename TTypArg =const TType& ,
|
||||
typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, true>,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg>,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg>,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =long ,
|
||||
typename TMoveObj =ZNsMain::ZtCMoveObj<TType, TTypArg, false>
|
||||
>
|
||||
class ZtCParamObjAVL_Compare //////////////////////////////////////////////////////////
|
||||
{
|
||||
public: typedef ZNsMain::ZtCObjAVL<
|
||||
Type, TTypArg, TTypBase, TNodeBase, TAlloc, TSize, TCompare, TMoveObj> TypeData;
|
||||
TType, TTypArg, TTypBase, TNodeBase, TAlloc, TSize, TCompare, TMoveObj> TypeData;
|
||||
};/*
|
||||
template< typename Type ,
|
||||
typename TTypArg =const Type& ,
|
||||
typename TCompare =ZNsMain::ZNsFunc ::ZtCCompare<TTypArg, TTypArg, true>,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =long ,
|
||||
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, false>
|
||||
template< typename TType ,
|
||||
typename TTypArg =const TType& ,
|
||||
typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, true>,
|
||||
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg>,
|
||||
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg>,
|
||||
typename TAlloc =ZNsMain::ZCAllocator ,
|
||||
typename TSize =long ,
|
||||
typename TMoveObj =ZNsMain::ZtCMoveObj<TType, TTypArg, false>
|
||||
>
|
||||
class ZtCParamObjAVL_Compare ////////////////////////////////////////////////////////*/
|
||||
|
||||
|
Reference in New Issue
Block a user