edit ZMainHead.H a bit

This commit is contained in:
2021-02-25 17:11:44 +09:00
parent bf00a06e24
commit e067b495dc

View File

@ -130,7 +130,7 @@
typedef TString TypeCString; typedef TString TypeCString;
typedef TString TypeString ; typedef TString TypeString ;
2 번 줄 코드가 낳아 보이지 않을까. 2008-11-05 13:42:00 2 번 줄 코드가 낳아 보이지 않을까. 2008-11-05 13:42:00
■ template 함수나 클래스에서 functor 인수는 참조로 선언하지 않는다. 아래 참고, ■ template 함수나 클래스에서 functor 인수는 참조로 선언하지 않는다. 아래 참고,
@ -401,9 +401,8 @@
#if defined(__linux__) #if defined(__linux__)
// 리눅스 Multi Thread Programming 에서 // 리눅스 Multi Thread Programming 에서 ZCObjList 라든가 여러
// CDoubleList 라든가 여러 자료구조에서 쓰는 // 자료구조에서 쓰는 동기화 뮤텍스를 위해 pthread.h 를 포함한다.
// 동기화 뮤텍스를 위해 pthread.h 를 포함한다.
#include <pthread.h> #include <pthread.h>
@ -544,7 +543,7 @@ namespace ZNsMain
#if(0) #if(0)
typedef unsigned wchar_t ZTypUWChar ; typedef unsigned wchar_t ZTypUWCha ;
/* VC++ 2012 에서는 여기서 4076 번 경고가 발생한다. /* VC++ 2012 에서는 여기서 4076 번 경고가 발생한다.
warning C4076: 'unsigned' : can not be used with type 'wchar_t' warning C4076: 'unsigned' : can not be used with type 'wchar_t'
@ -554,55 +553,55 @@ namespace ZNsMain
*/ */
#endif #endif
typedef unsigned int ZTypUInt ; typedef unsigned int ZTypUInt ;
typedef unsigned short ZTypUShort ; typedef unsigned short ZTypUShort ;
typedef unsigned long ZTypULong ; typedef unsigned long ZTypULong ;
typedef unsigned char ZTypIntUChar ; typedef unsigned char ZTypIntUChar ;
typedef unsigned int ZTypIntUInt ; typedef unsigned int ZTypIntUInt ;
typedef unsigned short ZTypIntUShort ; typedef unsigned short ZTypIntUShort ;
typedef unsigned long ZTypIntULong ; typedef unsigned long ZTypIntULong ;
typedef unsigned char ZTypIntUC ; typedef unsigned char ZTypIntUC ;
typedef unsigned int ZTypIntUI ; typedef unsigned int ZTypIntUI ;
typedef unsigned short ZTypIntUS ; typedef unsigned short ZTypIntUS ;
typedef unsigned long ZTypIntUL ; typedef unsigned long ZTypIntUL ;
#if(defined(__CPU_BIT_CNT__) && __CPU_BIT_CNT__>=64) #if(defined(__CPU_BIT_CNT__) && __CPU_BIT_CNT__>=64)
#ifdef _WIN #ifdef _WIN
typedef __int64 ZTypLLength ; // 문자열의 길이를 나타내는 자료형. typedef __int64 ZTypLLength ; // 문자열의 길이를 나타내는 자료형.
// 송수신 버퍼의 크기 자료형으로도 쓰인다. // 송수신 버퍼의 크기 자료형으로도 쓰인다.
#else #else
typedef long ZTypLLength ; typedef long ZTypLLength ;
#endif #endif
#else // !defined(__CPU_BIT_CNT__) || __CPU_BIT_CNT__<64 #else // !defined(__CPU_BIT_CNT__) || __CPU_BIT_CNT__<64
typedef long ZTypLLength ; typedef long ZTypLLength ;
#endif // !defined(__CPU_BIT_CNT__) || __CPU_BIT_CNT__<64 #endif // !defined(__CPU_BIT_CNT__) || __CPU_BIT_CNT__<64
#ifdef _WIN #ifdef _WIN
typedef __int64 ZTypLLengthFile ; // 파일의 크기를 나타내는 자료형. typedef __int64 ZTypLLengthFile; // 파일의 크기를 나타내는 자료형.
#else #else
typedef long ZTypLLengthFile ; // 파일의 크기를 나타내는 자료형. typedef long ZTypLLengthFile; // 파일의 크기를 나타내는 자료형.
#endif #endif
typedef ZTypLLengthFile ZTypLLengthF; typedef ZTypLLengthFile ZTypLLengthF;
#ifdef _WIN #ifdef _WIN
typedef __int64 ZTypLongLong ; typedef __int64 ZTypLongLong ;
typedef unsigned __int64 ZTypULongLong; typedef unsigned __int64 ZTypULongLong;
typedef __int64 ZTypIntLLong ; typedef __int64 ZTypIntLLong ;
typedef unsigned __int64 ZTypIntULLong; typedef unsigned __int64 ZTypIntULLong;
#else #else
typedef long long ZTypLongLong ; typedef long long ZTypLongLong ;
typedef unsigned long long ZTypULongLong; typedef unsigned long long ZTypULongLong;
typedef long long ZTypIntLLong ; typedef long long ZTypIntLLong ;
typedef unsigned long long ZTypIntULLong; typedef unsigned long long ZTypIntULLong;
#endif #endif
typedef ZTypLongLong ZTypLLong ; typedef ZTypLongLong ZTypLLong ;
@ -757,13 +756,13 @@ namespace ZNsMain
가이드라인을 제시하는 역할의 어떤 클래스나 데이타 타입이 올 수 있는데 이런 자료형이 이 가이드라인을 제시하는 역할의 어떤 클래스나 데이타 타입이 올 수 있는데 이런 자료형이 이
이름공간에 온다. 어떤 데이타타입을 주로 typedef 하는 클래스라면 접두어 ZtCType 를 붙인다. 이름공간에 온다. 어떤 데이타타입을 주로 typedef 하는 클래스라면 접두어 ZtCType 를 붙인다.
■ ZtCTypeCRTP_T<> 는 어떤 클래스 템플릿이 CRTP(CURIOUSLY RECURRING TEMPLATE PATTERN) 를 사용 ■ ZtCTypeCRTP<> 는 어떤 클래스 템플릿이 CRTP(CURIOUSLY RECURRING TEMPLATE PATTERN) 를 사용
하는지 아닌지를 알려준다. ZtCTypeCRTP_T<> 을 설계하지 않는다면, 같은 기능을 하기 위해, 클 하는지 아닌지를 알려준다. ZtCTypeCRTP<> 을 설계하지 않는다면, 같은 기능을 하기 위해, 클
래스를 2 개(CRTP 를 사용하는 클래스와, 그렇지 않은 클래스)를 만들어야 했을 것이다. 래스를 2 개(CRTP 를 사용하는 클래스와, 그렇지 않은 클래스)를 만들어야 했을 것이다.
-- 2010-03-12 20:00:00 -- 2010-03-12 20:00:00
■ 또한 이 이름공간에 있는 클래스는 TypeData 라는 자료형을 갖는 것으로 하자. ■ 또한 이 이름 공간에 있는 클래스는 TypeData 라는 자료형을 갖는 것으로 하자.
-- 2011-10-18 21:51:00 -- 2011-10-18 21:51:00
@ -772,17 +771,17 @@ namespace ZNsMain
template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false
> >
class ZtCTypeCRTP_T ////////////////////////////////////////////// class ZtCTypeCRTP ////////////////////////////////////////////////
{ {
public: public:
typedef TTypeChild TypeData; typedef TTypeChild TypeData;
public: public:
enum{EUseCRTP=(int)TTypebUseCRTP}; enum{EUseCRTP=(ZTypIntE)TTypebUseCRTP};
public: public:
};/* };/*
template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false
> >
class ZtCTypeCRTP_T ////////////////////////////////////////////*/ class ZtCTypeCRTP //////////////////////////////////////////////*/
template< typename TTypeChild =ZCEmpty template< typename TTypeChild =ZCEmpty
@ -795,18 +794,18 @@ namespace ZNsMain
typedef TTypeChild TypeData; typedef TTypeChild TypeData;
typedef TTypeBase TypeBase; typedef TTypeBase TypeBase;
public: public:
enum{EUseCRTP=(int)TTypebUseCRTP}; enum{EUseCRTP=(ZTypIntE)TTypebUseCRTP};
public: public:
}; /* }; /*
template< typename TTypeChild =ZCEmpty template< typename TTypeChild =ZCEmpty
, typename TTypeBase =ZCEmpty , typename TTypeBase =ZCEmpty
, bool TTypebUseCRTP=false , bool TTypebUseCRTP=false
> >
class ZtCTypeCRTP_T2 ///////////////////*/ class ZtCTypeCRTP2 /////////////////////*/
/*////////////////////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////////////////////
■ class ZtCTypeCRTP_T2<> 이 왜 필요한지, 그리고 사용례는 CWorkPool.H 의 ■ class ZtCTypeCRTP2<> 이 왜 필요한지, 그리고 사용례는 CWorkPool.H 의
'주석-CCtrlAllocWork::CRTP2'를 참고한다. '주석-CCtrlAllocWork::CRTP2'를 참고한다.
-- 2012-09-20 09:46:00 -- 2012-09-20 09:46:00
@ -816,7 +815,7 @@ namespace ZNsMain
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////// /*/////////////////////////////////////////////////////////////////////////////////////////////////////////////
■ class ZtCTypeCRTP_T<> 이 단점은 상속하지 않은 class 형은 알 수 없는데, 이것을 알아내기 위해 ■ class ZtCTypeCRTP<> 이 단점은 상속하지 않은 class 형은 알 수 없는데, 이것을 알아내기 위해
class ZtCTypeNowCRTP<> class ZtCTypeNowCRTP<>
@ -1200,7 +1199,10 @@ namespace ZNsMain
template< typename Type1 , typename Type2=void, template< typename Type1 , typename Type2=void,
typename Type3=void, typename Type4=void, typename Type5=void, typename Type6=void, typename Type7=void, typename Type8=void, typename Type9=void, typename Type10=void, typename Type11=void typename Type3=void, typename Type4=void,
typename Type5=void, typename Type6=void,
typename Type7=void, typename Type8=void,
typename Type9=void, typename Type10=void, typename Type11=void
> >
struct ZtStTuple ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{ {
@ -1210,7 +1212,10 @@ namespace ZNsMain
ZtStTuple(Type1 _T1):_1(_T1){} ZtStTuple(Type1 _T1):_1(_T1){}
};/* };/*
template< typename Type1 , typename Type2=void, template< typename Type1 , typename Type2=void,
typename Type3=void, typename Type4=void, typename Type5=void, typename Type6=void, typename Type7=void, typename Type8=void, typename Type9=void, typename Type10=void, typename Type11 typename Type3=void, typename Type4=void,
typename Type5=void, typename Type6=void,
typename Type7=void, typename Type8=void,
typename Type9=void, typename Type10=void, typename Type11=void
> >
struct ZtStTuple ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ struct ZtStTuple ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/