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:
360
ZCppMain/ZMainAVL.H
Normal file
360
ZCppMain/ZMainAVL.H
Normal file
@ -0,0 +1,360 @@
|
||||
|
||||
|
||||
#ifndef __ZCPPMAIN_ZMAINAVL_H__
|
||||
#define __ZCPPMAIN_ZMAINAVL_H__
|
||||
|
||||
|
||||
#include "ZCppMain/ZMainHead.H"
|
||||
|
||||
|
||||
namespace ZNsMain
|
||||
{
|
||||
|
||||
namespace ZNsEnum
|
||||
{
|
||||
|
||||
enum ZEAVL_INSERT
|
||||
{
|
||||
ZEAVL_INSERT_RIGHT = +1,
|
||||
ZEAVL_INSERT_OK = 0, /* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20>̴<EFBFBD>. */
|
||||
ZEAVL_INSERT_LEFT = -1,
|
||||
ZEAVL_INSERT_NONE = -2 /* <20><><EFBFBD><EFBFBD> <20><> <20><> */
|
||||
};/*
|
||||
enum ZEAVL_INSERT*/
|
||||
|
||||
}/*
|
||||
namespace ZNsEnum*/
|
||||
|
||||
|
||||
namespace ZNsInterface
|
||||
{
|
||||
|
||||
template<typename TypeArg> class ZtCAVL_BASE
|
||||
{
|
||||
protected:
|
||||
|
||||
template<typename TNode> void OnEqual(TypeArg AR_Data, TNode* AP_Node)
|
||||
{
|
||||
}/*
|
||||
template<typename TNode> void OnEqual(TypeArg AR_Data, TNode* AP_Node) */
|
||||
|
||||
template<typename TKey, typename TNode> void OnEqualKey(TKey AR_Key, TNode* AP_Node)
|
||||
{
|
||||
}/*
|
||||
template<typename TKey, typename TNode> void OnEqualKey(TKey AR_Key, TNode* AP_Node) */
|
||||
|
||||
protected:
|
||||
};/*
|
||||
template<typename TypeArg> class ZtCAVL_BASE*/
|
||||
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> <20>Ʒ<EFBFBD> ZtCAVL_NodeBase<> <20><> <20><> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ZtCAVL_BASE<> <20><> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20>μ<EFBFBD><CEBC><EFBFBD> <20>ϳ<EFBFBD> <20>پ<EFBFBD><D9BE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ִ<EFBFBD>. ZtCAVL_BASE<> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
<20>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20><> <20>ְ<EFBFBD> <20><> <20><><EFBFBD>̴<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZtCAVL_BASE<> <20><> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
<20><>, AP_Node->OnEqual() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZtCAVL_NodeBase<> <20><> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20><>
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ZtCAVL_NodeBase<> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><F0BFA1BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. <20><> <20><><EFBFBD><EFBFBD>
|
||||
<20><> <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ߴµ<DFB4>, <20>Ƹ<EFBFBD> ZtCAVL_Multi_BASE<> <20><>
|
||||
ZtCAVL_Multi_NodeBase<> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD> <20><EFBFBD><D7B7><EFBFBD> <20><><EFBFBD>̴<EFBFBD>.
|
||||
|
||||
-- 2012-09-03 19:20:00
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template<typename TNodeArg> class ZtCAVL_NodeBase
|
||||
{
|
||||
protected:
|
||||
|
||||
void OnEqual(TNodeArg AR_Data)
|
||||
{
|
||||
}/*
|
||||
void OnEqual(TNodeArg AR_Data)*/
|
||||
|
||||
template<typename TKey> void OnEqualKey(TKey AR_Key)
|
||||
{
|
||||
}/*
|
||||
template<typename TKey> void OnEqualKey(TKey AR_Key)*/
|
||||
|
||||
protected:
|
||||
};/*
|
||||
template<typename TNodeArg> class ZtCAVL_NodeBase*/
|
||||
|
||||
|
||||
template<typename TypeArg> class ZtCAVL_Multi_BASE
|
||||
{
|
||||
protected:
|
||||
|
||||
template<typename TNode> void OnEqual(TypeArg AR_Data, TNode* AP_Node)
|
||||
{
|
||||
AP_Node->OnEqual(AR_Data);
|
||||
}/*
|
||||
template<typename TNode> void OnEqual(TypeArg AR_Data, TNode* AP_Node) */
|
||||
|
||||
template<typename TKey, typename TNode> void OnEqualKey(TKey AR_Key, TNode* AP_Node)
|
||||
{
|
||||
AP_Node->OnEqualKey(AR_Key);
|
||||
}/*
|
||||
template<typename TKey, typename TNode> void OnEqualKey(TKey AR_Key, TNode* AP_Node) */
|
||||
|
||||
protected:
|
||||
};/*
|
||||
template<typename TypeArg> class ZtCAVL_Multi_BASE*/
|
||||
|
||||
|
||||
/*//////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> ZtCAVL_Multi_NodeBase template <20><> multi set/map <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>,
|
||||
ZtCAVL_Multi_NodeBase::TypeEqual <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>.
|
||||
|
||||
class CTypeMy
|
||||
{
|
||||
public:
|
||||
typedef CLargeAVL<some param> CLargeMap;
|
||||
typedef typename CLargeMap::ZCNode::TypeEqual TypeEqual;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////*/
|
||||
|
||||
template< typename TNodeArg, typename TEqualList
|
||||
>
|
||||
class ZtCAVL_Multi_NodeBase ////////////////////
|
||||
{
|
||||
public :
|
||||
typedef TEqualList TypeEqual;
|
||||
protected:
|
||||
TEqualList mo_EqualList;
|
||||
public :
|
||||
|
||||
void OnEqual(TNodeArg AR_Data)
|
||||
{
|
||||
mo_EqualList.push_back(AR_Data);
|
||||
}/*
|
||||
void OnEqual(TNodeArg AR_Data)*/
|
||||
|
||||
template<typename TKey> void OnEqualKey(TKey AR_Key)
|
||||
{
|
||||
mo_EqualList.push_back(AR_Key);
|
||||
}/*
|
||||
template<typename TKey> void OnEqualKey(TKey AR_Key) */
|
||||
|
||||
const TEqualList& GetCEqualList() const
|
||||
{
|
||||
return mo_EqualList;
|
||||
}/*
|
||||
const TEqualList& GetCEqualList() const*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TNodeArg, typename TEqualList
|
||||
>
|
||||
class ZtCAVL_Multi_NodeBase //////////////////*/
|
||||
|
||||
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> AVL Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>ٷ<EFBFBD><D9B7>
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD><C3B8>̴<EFBFBD>.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template<typename TData> class ZtCAVL_PtrLongData
|
||||
{
|
||||
public :
|
||||
typedef TData* TypeData;
|
||||
protected:
|
||||
TData* mp_CData;
|
||||
public :
|
||||
|
||||
ZtCAVL_PtrLongData()
|
||||
{
|
||||
mp_CData=0;
|
||||
}/*
|
||||
ZtCAVL_PtrLongData()*/
|
||||
|
||||
TData* GetDataPtr() const
|
||||
{
|
||||
return mp_CData;
|
||||
}/*
|
||||
TData* GetDataPtr() const*/
|
||||
|
||||
void SetDataPtr(TData* AP_CData)
|
||||
{
|
||||
mp_CData=AP_CData;
|
||||
}/*
|
||||
void SetDataPtr(TData* AP_CData)*/
|
||||
|
||||
operator ZNsMain::ZTypIntPtr() const
|
||||
{
|
||||
return mp_CData;
|
||||
}/*
|
||||
operator ZNsMain::ZTypIntPtr() const*/
|
||||
|
||||
|
||||
ZtCAVL_PtrLongData& operator=(const ZtCAVL_PtrLongData& rhs)
|
||||
{
|
||||
mp_CData=rhs.mp_CData; return *this;
|
||||
}/*
|
||||
ZtCAVL_PtrLongData& operator=(const ZtCAVL_PtrLongData& rhs)*/
|
||||
|
||||
ZtCAVL_PtrLongData& operator=(const TData* AP_CData)
|
||||
{
|
||||
mp_CData=const_cast<TData*>(AP_CData); return *this;
|
||||
}/*
|
||||
ZtCAVL_PtrLongData& operator=(const TData* AP_CData)*/
|
||||
|
||||
bool operator==(const ZtCAVL_PtrLongData& rhs) const{return mp_CData==rhs.mp_CData;}
|
||||
bool operator> (const ZtCAVL_PtrLongData& rhs) const{return (ZNsMain::ZTypIntPtr)mp_CData > (ZNsMain::ZTypIntPtr)rhs.mp_CData;}
|
||||
bool operator< (const ZtCAVL_PtrLongData& rhs) const{return (ZNsMain::ZTypIntPtr)mp_CData < (ZNsMain::ZTypIntPtr)rhs.mp_CData;}
|
||||
|
||||
bool operator==(const TData* AP_CData) const{return mp_CData==AP_CData;}
|
||||
bool operator> (const TData* AP_CData) const{return (ZNsMain::ZTypIntPtr)mp_CData > (ZNsMain::ZTypIntPtr)AP_CData;}
|
||||
bool operator< (const TData* AP_CData) const{return (ZNsMain::ZTypIntPtr)mp_CData < (ZNsMain::ZTypIntPtr)AP_CData;}
|
||||
|
||||
protected:
|
||||
};/*
|
||||
template<typename TData> class ZtCAVL_PtrLongData*/
|
||||
|
||||
|
||||
/* int, long <20><><EFBFBD><EFBFBD> <20><EFBFBD><F1B1B3BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> primitive Ÿ<><C5B8><EFBFBD>̳<EFBFBD> object <20><>
|
||||
key <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD>쿡, <20>ش<EFBFBD> AVL Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>ٷ<EFBFBD>
|
||||
<20><> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> wrap <20><> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> */
|
||||
|
||||
template< typename TKeyData ,
|
||||
typename TMainData,
|
||||
typename TKeyArg =const TKeyData &,
|
||||
typename TMainArg=const TMainData&
|
||||
>
|
||||
class ZtCAVL_KeyData //////////////////////////
|
||||
{
|
||||
public :
|
||||
typedef TKeyData TypeKey ;
|
||||
typedef TMainData TypeData;
|
||||
protected:
|
||||
TKeyData mo_CKeyData ; mutable
|
||||
TMainData mo_CMainData;
|
||||
public :
|
||||
|
||||
ZtCAVL_KeyData(){}
|
||||
|
||||
ZtCAVL_KeyData(TKeyArg AO_TKeyArg)
|
||||
{
|
||||
mo_CKeyData=AO_TKeyArg;
|
||||
}/*
|
||||
ZtCAVL_KeyData(TKeyArg AO_TKeyArg)*/
|
||||
|
||||
ZtCAVL_KeyData(TKeyArg AO_TKeyArg, TMainArg AO_TMainArg)
|
||||
{
|
||||
mo_CKeyData =AO_TKeyArg ;
|
||||
mo_CMainData=AO_TMainArg;
|
||||
}/*
|
||||
ZtCAVL_KeyData(TKeyArg AO_TKeyArg, TMainArg AO_TMainArg)*/
|
||||
|
||||
TKeyArg GetCKeyData () const{return mo_CKeyData ;}
|
||||
TMainArg GetCMainData () const{return mo_CMainData;}
|
||||
TMainData& GetCMainDataRef() const{return mo_CMainData;}
|
||||
|
||||
void SetCMainData(TMainArg AO_TRealArg) const
|
||||
{
|
||||
mo_CMainData=AO_TRealArg;
|
||||
}/*
|
||||
void SetCMainData(TMainArg AO_TRealArg) const*/
|
||||
|
||||
void SetKeyData(TKeyArg AO_TKeylArg)
|
||||
{
|
||||
mo_CKeyData=AO_TKeylArg;
|
||||
}/*
|
||||
void SetKeyData(TKeyArg AO_TKeylArg)*/
|
||||
|
||||
bool operator==(const ZtCAVL_KeyData& rhs) const{return mo_CKeyData==rhs.mo_CKeyData;}
|
||||
bool operator> (const ZtCAVL_KeyData& rhs) const{return mo_CKeyData> rhs.mo_CKeyData;}
|
||||
bool operator< (const ZtCAVL_KeyData& rhs) const{return mo_CKeyData< rhs.mo_CKeyData;}
|
||||
|
||||
bool operator==(TKeyArg AO_TPrimitive) const{return mo_CKeyData==AO_TPrimitive;}
|
||||
bool operator> (TKeyArg AO_TPrimitive) const{return mo_CKeyData> AO_TPrimitive;}
|
||||
bool operator< (TKeyArg AO_TPrimitive) const{return mo_CKeyData< AO_TPrimitive;}
|
||||
|
||||
ZtCAVL_KeyData& operator=(const ZtCAVL_KeyData& rhs)
|
||||
{
|
||||
if(this==&rhs) return *this;
|
||||
|
||||
mo_CKeyData =rhs.mo_CKeyData ;
|
||||
mo_CMainData=rhs.mo_CMainData; return *this;
|
||||
}/*
|
||||
ZtCAVL_KeyData& operator=(const ZtCAVL_KeyData& rhs)*/
|
||||
|
||||
ZtCAVL_KeyData& operator=(TKeyArg AO_TPrimitive)
|
||||
{
|
||||
mo_CKeyData=AO_TPrimitive; return *this;
|
||||
}/*
|
||||
ZtCAVL_KeyData& operator=(TKeyArg AO_TPrimitive)*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TKeyData ,
|
||||
typename TMainData,
|
||||
typename TKeyArg =const TKeyData &,
|
||||
typename TMainArg=const TMainData&
|
||||
>
|
||||
class ZtCAVL_KeyData ////////////////////////*/
|
||||
|
||||
}/*
|
||||
namespace ZNsInterface*/
|
||||
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
<20><> mulit set <20><><EFBFBD><EFBFBD> Ȱ<><C8B0><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
||||
|
||||
ZNsMain::CLargeAVL ///////////////////////////////////
|
||||
<
|
||||
int,
|
||||
int,
|
||||
ZNsMain::ZNsInterface::ZtCAVL_Multi_BASE<int>,
|
||||
ZNsMain::ZNsInterface::ZtCAVL_Multi_NodeBase<int, ZNsMain::ZtCDoubleList<int> >
|
||||
>
|
||||
VO_CLargeAvl_Multi; //////////////////////////////////
|
||||
|
||||
VO_CLargeAvl_Multi.AddData(1);
|
||||
VO_CLargeAvl_Multi.AddData(2);
|
||||
VO_CLargeAvl_Multi.AddData(2);
|
||||
VO_CLargeAvl_Multi.AddData(2);
|
||||
VO_CLargeAvl_Multi.AddData(2);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
namespace NsType
|
||||
{
|
||||
|
||||
template< typename TStringData, //= ZNsMain::ZtCStringBase<char> ,
|
||||
typename TEnvVar , //= ZNsMain::ZNsCGI::ZNsBase::ZtCEnvVar<TStringData>,
|
||||
typename TEnvVarSet //= ZNsMain::ZtCObjAVL<TEnvVar>
|
||||
>
|
||||
class ZtCTypeEnvVarSet /*############################################################*/
|
||||
{
|
||||
public:
|
||||
typedef TStringData ZCStringData;
|
||||
typedef TEnvVar ZCEnvVar ;
|
||||
typedef TEnvVarSet ZCEnvVarSet ;
|
||||
typedef typename ZCEnvVarSet ::ZCNode ZCEnvVarNode;
|
||||
typedef typename ZCStringData::ZCMainChars ZCMainChars ;
|
||||
typedef typename ZCStringData::TypeChar TypeChar ;
|
||||
typedef typename ZCStringData::TypeLength TypeLength ;
|
||||
public:
|
||||
};/*
|
||||
template< typename TStringData, //= ZNsMain::ZtCStringBase<char> ,
|
||||
typename TEnvVar , //= ZNsMain::ZNsCGI::ZNsBase::ZtCEnvVar<TStringData>,
|
||||
typename TEnvVarSet //= NsCPP::ZtCObjAVL<TEnvVar>
|
||||
>
|
||||
class ZtCTypeEnvVarSet /*############################################################*/
|
||||
|
||||
}/*
|
||||
namespace NsType*/
|
||||
|
||||
}/*
|
||||
namespace ZNsMain */
|
||||
|
||||
|
||||
#endif // __ZCPPMAIN_ZMAINAVL_H__
|
Reference in New Issue
Block a user