Compare commits

537 Commits

Author SHA1 Message Date
/* User with id == 0 is a fake user from git author */ sauron
72cf94128d commit 2025-10-21 21:45 edit a bit ZCppMain/ZMainHead.H 2025-10-21 21:45:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
437b8a2e16 commit 2025-10-21 21:27 edit a bit ZCppMain/ZMainHead.H 2025-10-21 21:28:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dbc483330b commit 2025-10-21 21:06 add ZtCObjtChain<TDataNow, ZCEmpty>::TypeChainLast : ZCppMain/ZMainHead.H 2025-10-21 21:06:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
835f80f179 commit 2025-10-21 19:48 add template<typename TTypeChainNext> typename> typename TTypeChainNext::TypeData& GetData() GetData() : ZCppMain/ZMainHead.H 2025-10-21 19:48:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5cd24d6e94 commit 2025-10-20 20:35 edit a bit ZCppMain/ZtCMainChars.H 2025-10-20 20:35:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3f4e40147b commit 2025-10-20 15:08 edit a bit ZCppMain/ZMainHead.H 2025-10-20 15:08:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f45137e8f3 commit 2025-10-20 13:03 ZtCTypeSelfLink => ZtCTypeDataRiing, add ZtCTypeDataRingS : ZCppMain/ZMainHead.H 2025-10-20 13:03:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
882e4f6278 commit 2025-10-20 11:01 edit a bit ZCppMain/ZMainHead.H 2025-10-20 11:01:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c30a14c0c9 commit 2025-10-20 01:01 edit a bit ZCppMain/ZMainHead.H 2025-10-20 01:01:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cd4ab32709 commit 2025-10-20 00:32 edit a bit ZCppMain/ZMainHead.H 2025-10-20 00:33:12 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1ffbb95e80 commit 2025-10-20 00:08 add ZtCObjtChain::operator()() : ZCppMain/ZMainHead.H 2025-10-20 00:08:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
56960ed38f commit 2025-10-19 19:47 edit a bit ZCppMain/ZMainHead.H 2025-10-19 19:47:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5e34c2f5cc commit 2025-10-19 19:44 edit a bit ZCppMain/ZMainHead.H 2025-10-19 19:44:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f451a6a1e1 commit 2025-10-19 19:13 edit a bit ZCppMain/ZMainHead.H 2025-10-19 19:13:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7ff1933fb0 commit 2025-10-19 19:03 add ZCtDataRing::size_all() : ZCppMain/ZMainHead.H 2025-10-19 19:03:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d360408365 commit 2025-10-19 16:39 edit a bit in ZCppMain/ZMainHead.H 2025-10-19 16:39:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2f8fae30a4 commit 2025-10-19 16:30 edit a bit in ZCppMain/ZMainHead.H 2025-10-19 16:30:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6d4556236e commit 2025-10-19 16:28 add ZCtDataRing::IterHead() & IterTail() etc : ZCppMain/ZMainHead.H 2025-10-19 16:29:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d4614dcb09 commit 2025-10-19 13:13 edit a bit in ZCppMain/ZMainHead.H 2025-10-19 13:14:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ad8e294902 commit 2025-10-19 13:00 add ZCtDataRing in ZCppMain/ZMainHead.H 2025-10-19 13:00:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3e97046031 commit 2025-10-18 21:36 edit a bit ZCppMain/ZMainHead.H 2025-10-18 21:36:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f8b9887734 commit 2025-10-18 21:31 edit a bit ZCppMain/ZMainHead.H 2025-10-18 21:32:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
de6056ab27 commit 2025-10-18 19:06 edit a bit ZCppMain/ZMainHead.H 2025-10-18 19:06:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8266f0a6a3 commit 2025-10-18 19:03 edit a bit ZCppMain/ZMainHead.H 2025-10-18 19:03:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
af8fec15eb commit 2025-10-18 17:32 edit a bit ZCppMain/ZMainHead.H 2025-10-18 17:32:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
756b48ae36 commit 2025-10-18 17:29 edit a bit ZCppMainTest/c++_test_006.cpp 2025-10-18 17:29:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b5f71d95d2 commit 2025-10-18 16:33 add ZtCMiniValChain : ZCppMain/ZMainHead.H 2025-10-18 16:33:51 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ea178aa11a commit 2025-10-18 14:57 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 14:57:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
64630b4abd commit 2025-10-18 12:03 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 12:03:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8eeafdd0d8 commit 2025-10-18 12:02 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 12:02:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9277c95336 commit 2025-10-18 11:58 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 11:59:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ec687cc4e9 commit 2025-10-18 11:40 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 11:40:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d21d5b0263 commit 2025-10-18 11:37 edit a bit ZCppMain/ZtCMainChars.H 2025-10-18 11:37:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e1b7aeed21 commit 2025-10-18 10:56 delete class template in ZNsTmplChain : ZCppMain/ZMainHead.H 2025-10-18 10:56:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0bae715de7 commit 2025-10-18 10:29 edit a bit ZCppMain/ZMainHead.H 2025-10-18 10:29:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
849cab2dbb commit 2025-10-18 10:27 edit a bit ZCppMain/ZMainHead.H 2025-10-18 10:27:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4113a0a6f1 commit 2025-10-18 10:13 ZtCObjtChainEx => ZtCMiniValChain : ZCppMain/ZMainHead.H 2025-10-18 10:13:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e57cce5a28 commit 2025-10-18 02:12 edit a bit ZCppMain/ZMainHead.H 2025-10-18 02:12:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
342dc34096 commit 2025-10-18 01:55 ZtCObjtChain after ZtCObjtChain => ZtCObjtChainEx ZCppMain/ZMainHead.H 2025-10-18 01:55:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1d3ee05571 commit 2025-10-18 00:19 add ZCppMain/ZMainHead.H 2025-10-18 00:19:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
29aa6225b4 commit 2025-10-18 00:09 add ZCppMainTest/c++_test_006.cpp 2025-10-18 00:09:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
31a6d46726 commit 2025-10-18 00:09 add ZtCObjtChain in ZCppMain/ZMainHead.H 2025-10-18 00:09:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bea5561dc4 commit 2025-10-17 21:28 edit a bit ZCppMain/ZMainHead.H 2025-10-17 21:28:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b92b3e2107 commit 2025-10-17 21:23 ZftIterTmplChainTail() => ZftIterTypeChainTail() : ZCppMain/ZMainHead.H 2025-10-17 21:23:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c52ddbed83 commit 2025-10-17 21:06 edit a bit ZCppMain/ZMainHead.H 2025-10-17 21:06:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
58a38e75ab commit 2025-10-17 21:03 edit a bit ZCppMain/ZMainHead.H 2025-10-17 21:03:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e7692ddfd1 commit 2025-10-17 20:54 add class ZtCCheckRef<TType&> : ZCppMain/ZMainHead.H 2025-10-17 20:55:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0e4ae40622 commit 2025-10-17 19:13 add IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp) & IterTail() in ZtCTypeChain : ZCppMain/ZMainHead.H 2025-10-17 19:13:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9c746559f4 commit 2025-10-17 16:45 add ZtCTypeChain::Size() : ZCppMain/ZMainHead.H 2025-10-17 16:45:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
536fec9db0 commit 2025-10-17 13:01 edit a bit ZCppMain/ZMainHead.H 2025-10-17 13:01:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
16bfabc6fe commit 2025-10-17 12:28 edit a bit ZCppMain/ZMainHead.H 2025-10-17 12:28:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5e550363ee commit 2025-10-17 12:26 add ZtCTypeChain in ZCppMain/ZMainHead.H 2025-10-17 12:26:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fcb513d4ac commit 2025-10-17 01:04 edit a bit ZCppMain/ZMainHead.H 2025-10-17 01:04:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b4871d1b07 commit 2025-10-16 23:36 edit a bit ZCppMain/ZMainHead.H 2025-10-16 23:36:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5d337e3356 commit 2025-10-16 23:21 edit a bit ZCppMain/ZMainHead.H 2025-10-16 23:21:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
40debb62a6 commit 2025-10-16 23:16 edit a bit ZCppMain/ZMainHead.H 2025-10-16 23:16:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
70b7d85fac commit 2025-10-16 15:03 edit a bit ZCppMain/ZtCLinkList.H 2025-10-16 15:03:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c96244dd29 commit 2025-10-16 14:38 edit a bit ZCppMain/ZtCLinkList.H 2025-10-16 14:38:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6fe3bbff18 commit 2025-10-16 14:31 edit a bit ZCppMain/ZMainHead.H 2025-10-16 14:31:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a0438aebc6 commit 2025-10-16 14:04 edit a bit ZCppMain/ZMainHead.H 2025-10-16 14:05:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
eb35ccb059 commit 2025-10-16 10:30 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-10-16 10:30:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
84299e59a5 commit 2025-10-16 10:16 add skipping contdition code in list, SendRangeIn() => MoveRangeIn() : ZCppMain/ZtCLinkList.H etc 2025-10-16 10:17:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8cc267707f commit 2025-10-16 02:05 edit a bit ZCppMain/ZtCLinkList.H 2025-10-16 02:06:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4838bb74ef commit 2025-10-16 01:58 add ZtCLinkList::MoveLinkIn() & MoveRangeIn() : ZCppMain/ZtCLinkList.H 2025-10-16 01:58:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
023e1d8a0a commit 2025-10-16 01:04 add ZtCBaseList::MoveLinkIn() & MoveRangeIn() ZCppMain/ZMainHead.H 2025-10-16 01:04:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1e88508936 commit 2025-10-15 18:54 edit a bit ZCppMain/ZMainHead.H 2025-10-15 18:54:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bf3aa88ec1 commit 2025-10-15 18:44 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-10-15 18:45:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
908303d235 commit 2025-10-15 16:26 edit a bit ZCppMain/ZMainHead.H 2025-10-15 16:26:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
82a2c15364 commit 2025-10-15 16:25 edit a bit ZCppMain/ZMainHead.H 2025-10-15 16:25:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2ce107ed19 commit 2025-10-15 16:19 edit a bit ZCppMain/ZMainHead.H 2025-10-15 16:19:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1f05458724 commit 2025-10-15 16:08 edit a bit ZCppMain/ZMainHead.H 2025-10-15 16:08:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d85191b2d0 commit 2025-10-15 15:49 edit a bit ZCppMain/ZtCArray.H 2025-10-15 15:49:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
11acb59e39 commit 2025-10-15 15:46 edit a bit ZCppMain/ZtCSimList.H 2025-10-15 15:46:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3c12d055a2 commit 2025-10-15 15:43 delete GetDataInIter() in ZtCBaseList ZCppMain/ZMainHead.H 2025-10-15 15:43:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3e8cbd319e commit 2025-10-15 15:18 edit a bit ZCppMain/ZtCLinkList.H 2025-10-15 15:18:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
721d26ca5e commit 2025-10-15 14:53 edit a bit ZCppMain/ZtCLinkList.H 2025-10-15 14:53:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2b4596b065 commit 2025-10-15 14:13 TypeDataMaIN => TypeDataCore : ZCppMain/ZtCLinkList.H 2025-10-15 14:13:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0fb0270a53 commit 2025-10-15 13:18 edit a bit ZCppMain/ZtCLinkList.H 2025-10-15 13:18:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4147ea51d6 commit 2025-10-15 13:06 edit a bit ZCppMain/ZtCLinkList.H 2025-10-15 13:06:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a1b89271b7 commit 2025-10-15 12:54 add iterator and func : ZCppMain/ZtCLinkList.H 2025-10-15 12:54:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4c6cde5d59 commit 2025-10-15 10:52 edit a bit ZCppMain/ZMainHead.H 2025-10-15 10:52:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2f364e66a3 commit 2025-10-15 10:10 ZCppMain/ZMainHead.H 2025-10-15 10:00:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
600ac6ef1e commit 2025-10-15 09:49 edit a bit ZCppMain/ZtCSimList.H 2025-10-15 09:50:00 +09:00
/* User with id == 0 is a fake user from git author */ sauron
aa59e460c5 commit 2025-10-15 09:46 edit a bit ZCppMain/ZMainHead.H 2025-10-15 09:46:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4a0a74936b commit 2025-10-15 09:43 edit a bit ZCppMain/ZMainHead.H 2025-10-15 09:43:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d47a651fd4 commit 2025-10-15 07:55 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:55:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
40157d7df2 commit 2025-10-15 07:50 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:51:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dabd772aec commit 2025-10-15 07:46 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:46:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
92a8cb501d commit 2025-10-15 07:32 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:32:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e9944b6e0c commit 2025-10-15 07:18 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:18:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5762ec1cdf commit 2025-10-15 07:17 edit a bit ZCppMain/ZMainHead.H 2025-10-15 07:17:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5c9c870654 commit 2025-10-15 06:56 edit a bit ZCppMain/ZtCArray.H 2025-10-15 06:56:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6a873ea2c9 commit 2025-10-15 06:46 edit a bit ZCppMain/ZMainHead.H 2025-10-15 06:47:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ef441cca37 commit 2025-10-15 06:15 edit a bit ZCppMain/ZMainHead.H 2025-10-15 06:16:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
03556b203c commit 2025-10-14 21:33 edit a bit ZCppMain/ZtCObjList.H 2025-10-14 21:33:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2aab937785 commit 2025-10-14 21:19 _FOR_ITER_EASY_START_R0 => _FOR_ITER_EASY_START0_R : ZCppMain/ZMainHead.H 2025-10-14 21:19:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3e37580b98 commit 2025-10-14 21:11 add _FOR_ITER_EASY_START_R0/_FOR_ITER_EASY_CLOSE_R0 : ZCppMain/ZMainHead.H 2025-10-14 21:11:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b8d5ddb47f commit 2025-10-14 20:48 __for_i => __for_it : ZCppMain/ZMainHead.H 2025-10-14 20:48:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a0d9d31a21 commit 2025-10-14 20:42 edit a bit ZCppMain/ZtCStringEx.H 2025-10-14 20:42:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1774cfda3a commit 2025-10-14 20:23 add ZCppMainTest/ZtCLink_001.cpp 2025-10-14 20:23:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b325c152fd commit 2025-10-14 20:16 typedef const IterEasyID IterEasyIDc => typedef const IterEasy* IterEasyIDc : ZCppMain/ZMainHead.H 2025-10-14 20:16:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
696b5744b1 commit 2025-10-14 17:57 edit a bit ZCppMain/ZtCArray.H etc 2025-10-14 17:57:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7cca0d4d92 commit 2025-10-14 17:36 edit a bit ZCppMain/ZtCArray.H 2025-10-14 17:36:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
391adbaf11 commit 2025-10-14 17:35 edit a bit ZCppMain/ZtCArray.H 2025-10-14 17:35:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
69fb7a8c5c commit 2025-10-14 17:33 edit a bit ZCppMain/ZtCArray.H 2025-10-14 17:33:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d66bdb4cea commit 2025-10-14 17:32 edit a bit ZCppMain/ZtCArray.H 2025-10-14 17:33:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a578e3b244 commit 2025-10-14 17:26 TypeDataC& ItD(IterEasyIDc APPI_IterEasyID) => TypeDataC& ItD(IterEasyIDc& APPI_IterEasyID ) in ZCppMain/ZMainHead.H etc 2025-10-14 17:26:48 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2e0356fe09 commit 2025-10-14 16:56 edit a bit ZCppMain/ZtCArray.H 2025-10-14 16:57:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
342446fdce commit 2025-10-14 16:38 add _FOR_ITER_EASY_START0 와 _FOR_ITER_EASY_CLOSE0 in ZCppMain/ZMainHead.H 2025-10-14 16:38:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
15d8ee63ad commit 2025-10-14 14:53 edit a bit ZCppMain/ZMainHead.H 2025-10-14 14:53:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d73d9e4227 commit 2025-10-14 14:52 edit a bit ZCppMain/ZMainHead.H 2025-10-14 14:52:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3b987e2a6e commit 2025-10-14 10:43 edit a bit ZCppMain/ZMainHead.H 2025-10-14 10:43:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
131e638f8b commit 2025-10-14 10:39 edit a bit ZCppMain/ZMainHead.H 2025-10-14 10:39:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
659b0a19cb commit 2025-10-14 10:19 edit a bit ZCppMain/ZtCArray 2025-10-14 10:19:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c8523687fc commit 2025-10-14 09:39 add end() : ZCppMain/ZtCArray 2025-10-14 09:39:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
65a115ff6f commit 2025-10-14 09:11 ZCNodePointC => ZCNodePointN : ZCppMain/ZMainHead.H etc 2025-10-14 09:12:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4fc794e834 commit 2025-10-14 00:36 edit a bit ZCppMain/ZtCArray.H 2025-10-14 00:36:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
15f24be62d commit 2025-10-14 00:11 edit a bit ZCppMain/ZMainHead.H 2025-10-14 00:11:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5166bbe7cf commit 2025-10-13 23:36 edit a bit ZCppMain/ZMainHead.H 2025-10-13 23:37:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7ba366e151 commit 2025-10-13 22:51 edit a bit ZCppMain/ZMainHead.H 2025-10-13 22:52:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5b692812db commit 2025-10-13 22:41 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 22:42:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b1958e065a commit 2025-10-13 12:33 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 22:33:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6cc8cff669 commit 2025-10-13 19:20 bug fix in ZCNodePoint(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) : ZCppMain/ZtCArray.H 2025-10-13 19:20:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0e25b260de commit 2025-10-13 19:12 mr_CurrList => to first member in ZCNodePoint : ZCppMain/ZMainHead.H 2025-10-13 19:12:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7a3b57f135 commit 2025-10-13 19:00 ZCLinkPoint => ZCNodePoint : ZCppMain/ZtCObjList.H 2025-10-13 19:00:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
388b87377a commit 2025-10-13 18:46 add TypeNode : ZCppMain/ZtCObjList.H 2025-10-13 18:46:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
093eb009d0 commit 2025-10-13 17:58 edit a bit ZCppMain/ZtCSimList.H 2025-10-13 17:58:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
18e0b5d9d4 commit 2025-10-13 17:08 edit a bit ZCppMain/ZtCSimList.H 2025-10-13 17:09:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1bdcf7597b commit 2025-10-13 16:55 edit a bit ZCppMain/ZMainHead.H 2025-10-13 16:55:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bfe282e141 commit 2025-10-13 16:45 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 16:45:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bdc450d1b3 commit 2025-10-13 16:42 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 16:42:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bb547bd4f7 commit 2025-10-13 16:38 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 16:38:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e34ad6cfb1 commit 2025-10-13 16:33 add ZCLinkPoint for iterator ZCppMain/ZtCSimList.H 2025-10-13 16:33:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
df8ffa6024 commit 2025-10-13 14:56 edit a bit ZCppMain/ZMainHead.H 2025-10-13 14:56:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bf32afc1cd commit 2025-10-13 14:10 edit a bit ZCppMain/ZMainHead.H 2025-10-13 14:10:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3deb3d3106 commit 2025-10-13 13:35 edit a bit ZCppMain/ZMainHead.H 2025-10-13 13:36:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
50019e94cd commit 2025-10-13 13:31 add __for_iter & __for_iterc ZCppMain/ZMainHead.H 2025-10-13 13:31:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3629380b37 commit 2025-10-13 12:28 add ZCLinkPointC ZCppMain/ZtCObjList.H 2025-10-13 12:28:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
870b50066d commit 2025-10-13 10:55 add ZCLinkPointEx ZCppMain/ZtCObjList.H 2025-10-13 10:55:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
17e25f8f5d commit 2025-10-13 01:17 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 01:17:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
033dd35cfc commit 2025-10-13 13:08 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 01:08:48 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e0b357be37 commit 2025-10-13 00:27 edit a bit ZCppMain/ZtCObjList.H 2025-10-13 00:27:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0c52cb85af commit 2025-10-12 23:40 edit a bit ZCppMain/ZtCStringStd.H 2025-10-12 23:40:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7b3605a929 commit 2025-10-12 23:29 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 23:29:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fa52fe1027 commit 2025-10-12 23:10 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 23:10:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cdca176fa9 commit 2025-10-12 19:32 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 19:32:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a112a17f0d commit 2025-10-12 19:22 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 19:22:12 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3c1aba34e9 commit 2025-10-12 19:18 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 19:18:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
29156b0dd0 commit 2025-10-12 19:15 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 19:15:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ae76c4626c commit 2025-10-12 19:12 edit a bit ZCppMain/ZMainHead.H 2025-10-12 19:12:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
66bec91d83 commit 2025-10-12 19:10 edit a bit ZCppMain/ZMainHead.H 2025-10-12 19:10:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f8e1e7f062 commit 2025-10-12 19:03 edit a bit ZCppMain/ZtCObjList.H 2025-10-12 19:03:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2c2b664d15 commit 2025-10-12 18:51 add iterator class in ZCppMain/ZtCObjList.H 2025-10-12 18:51:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3259618f1e commit 2025-10-12 08:03 is coding ZtCBaseList::CutLinkRangeIn() in ZCppMain/ZMainHead.H 2025-10-12 12:50:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
73d4d3daaf commit 2025-10-12 08:03 add MoveLinkAfter() etc in ZCppMain/ZtCLinkList.H 2025-10-12 08:03:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8f8ddb9460 commit 2025-10-12 00:58 add ZtCObjList::mp_TailLink : ZCppMain/ZtCObjList.H 2025-10-12 00:58:51 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a46afc5865 commit 2025-10-11 23:03 add ZtCBaseList::AddHeadDef() & AddTailDef() : ZCppMain/ZMainHead.H 2025-10-11 23:03:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
32ae22cc92 commit 2025-10-11 22:33 edit a bit ZCppMainTest/ZtCLinkList_001.cpp 2025-10-11 22:33:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
13b39d7b1b commit 2025-10-11 22:25 add ZtCLinkList::SwapLink() : ZCppMain/ZtCLinkList.H 2025-10-11 22:25:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
10eefea106 commit 2025-10-11 21:59 I64d => lld etc : ZCppMain/ZMainHead.H 2025-10-11 21:59:51 +09:00
/* User with id == 0 is a fake user from git author */ sauron
eb050b2c6c commit 2025-10-11 21:30 add ZtCBaseList::SendRangeIn() etc : ZCppMain/ZMainHead.H 2025-10-11 21:31:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3fbaa2f2a6 commit 2025-10-11 20:43 edit a bit ZCppMain/ZMainHead.H 2025-10-11 20:43:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ce958a5d74 commit 2025-10-11 20:41 add ZtCBaseList::MoveLinkAfter() etc : ZCppMain/ZMainHead.H 2025-10-11 20:41:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3c13880b49 commit 2025-10-11 19:39 edit a bit ZtCBaseList::SwapLink() : ZCppMain/ZMainHead.H 2025-10-11 19:39:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
aa5d67daf4 commit 2025-10-11 19:29 add ZtCBaseList::SwapLink() : ZCppMain/ZMainHead.H 2025-10-11 19:29:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a64b43b1e9 commit 2025-10-11 17:57 add ZtCBaseList::SwapLinkPrev() : ZCppMain/ZMainHead.H 2025-10-11 17:57:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8b226414b5 commit 2025-10-11 17:20 edit a bit ZCppMain/ZMainHead.H 2025-10-11 17:20:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e2ceca2cd8 commit 2025-10-11 17:16 edit a bit ZCppMain/ZMainHead.H 2025-10-11 17:16:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f10ea286c0 commit 2025-10-11 17:04 edit a bit ZCppMain/ZMainHeadEx.H 2025-10-11 17:04:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
15edbd80d8 commit 2025-10-11 16:51 add ZtCBaseList::SwapLinkNext() : ZCppMain/ZMainHead.H 2025-10-11 16:51:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
22f85f03a4 commit 2025-10-11 06:38 edit a bit ZtCCount ZCppMain/ZMainHead.H 2025-10-11 06:39:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
89e67d93e3 commit 2025-10-10 21:45 add ZtCCount ZCppMain/ZMainHead.H 2025-10-10 21:47:00 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e69cc7577f commit 2025-10-10 20:48 add ZCppMain/ZMainEnc.H 2025-10-10 20:48:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
016a45f648 commit 2025-10-10 20:45 edit by g++ option -Wall -Wno-unused-function -Wno-misleading-indentation 2025-10-10 20:45:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
467c46a5c3 commit 2025-10-10 14:58 edit a bit ZCppMainTest/ZtCLinkMoveList_000.cpp 2025-10-10 14:58:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ed5f8509cd commit 2025-10-10 14:54 edit a bit ZCppMainTest/ZtCLinkMoveList_000.cpp 2025-10-10 14:54:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9052a06bd5 commit 2025-10-10 14:49 add ZCLink::TypeLink : ZCppMain/ZMainHead.H 2025-10-10 14:49:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8924a85c85 commit 2025-10-10 14:45 edit a bit : ZCppMain/ZMainHead.H 2025-10-10 14:48:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
93080593d1 commit 2025-10-10 14:24 add TypeData& operator()() in ZtCObjOpt : ZCppMain/ZMainHead.H 2025-10-10 14:24:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5a23263a92 commit 2025-10-10 13:08 edit a bit ZCppMain/ZMainHeadEx.H 2025-10-10 13:09:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d220831b19 commit 2025-10-10 10:17 edit a bit ZCppMain/ZMainHeadEx.H 2025-10-10 10:17:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
787a410814 commit 2025-10-10 10:15 edit a bit ZCppMain/ZMainHeadEx.H 2025-10-10 10:15:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ca72233581 commit 2025-10-10 08:22 edit a bit ZCppMain/ZMainHeadEx.H 2025-10-10 08:22:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
561be0b68e commit 2025-10-10 08:16 edit a bit ZCppMain/ZMainHead.H 2025-10-10 08:16:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6f6fc16383 commit 2025-10-10 07:44 edit a bit ZCppMain/ZMainHead.H 2025-10-10 07:44:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0e3b50de91 commit 2025-10-10 07:21 edit a bit ZCppMain/ZMainHead.H 2025-10-10 07:21:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1cb53c967e commit 2025-10-10 07:03 edit a bit ZCppMain/ZMainHead.H 2025-10-10 07:03:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d988636881 commit 2025-10-10 06:44 edit a bit ZCppMain/ZMainHead.H 2025-10-10 06:44:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
278eeaefcf commit 2025-10-10 06:18 add ZftMakeStr(ARR_SaveCStr, ZTypIntUL AUL_Int) etc : ZCppMain/ZMainHead.H etc 2025-10-10 06:18:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7af3c774e4 commit 2025-10-09 17:32 edit a bit ZCppMain/ZMainHead.H 2025-10-10 05:33:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4d81b7168d commit 2025-10-09 23:07 edit a bit ZCppMain/ZtCStringStd.H 2025-10-09 23:07:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
60f2a25103 commit 2025-10-09 23:0 edit a bit ZCppMain/ZMainHead.H 2025-10-09 23:00:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
24fd8fea92 commit 2025-10-09 22:23 edit a bit ZCppMain/ZtCStringStd.H 2025-10-09 22:24:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7c5b93fa34 commit 2025-10-09 22:11 delete operator()(TypeLength AL_AddSize, TypeCharC* APC_Format, ...) : ZCppMain/ZtCStringEx.H 2025-10-09 22:11:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
30a1dc7ce5 commit 2025-10-09 22:02 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 22:02:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
860d383da6 commit 2025-10-09 21:53 add ZtCBoolStr : ZCppMain/ZMainHead.H 2025-10-09 21:54:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f5957100ea commit 2025-10-09 16:15 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 16:15:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
641ef996f9 commit 2025-10-09 16:12 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 16:12:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9545f7cf86 commit 2025-10-09 16:09 edit a bit ZCppMain/ZMainHead.H 2025-10-09 16:09:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
784f42dd40 commit 2025-10-09 16:06 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 16:07:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a38ad468e3 commit 2025-10-09 15:39 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 15:39:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
074ddf0c31 commit 2025-10-09 15:05 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 15:05:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
665b119c61 commit 2025-10-09 14:42 edit a bit ZCppMain/ZtCLinkList.H 2025-10-09 14:42:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
26b7770b61 commit 2025-10-09 14:31 add size_type in ZtCCharType : ZCppMain/ZtCStringEx.H etc 2025-10-09 14:31:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ab07905f68 commit 2025-10-09 13:41 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 13:41:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
299bbe8c51 commit 2025-10-09 13:35 edit a bit ZCppMain/ZtCStringStd.H 2025-10-09 13:36:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
22ce305df6 commit 2025-10-09 13:30 add ZtCCharType< ZtCStringStd<TTypeBaseStr> > : ZCppMain/ZtCStringStd.H 2025-10-09 13:30:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c31fd0b671 commit 2025-10-09 13:03 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 13:03:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0c0c7a8a0e commit 2025-10-09 12:58 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 12:58:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
eb890e4409 commit 2025-10-09 12:50 edit a bit ZCppMain/ZtCStringStd.H 2025-10-09 12:50:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dd753905c8 commit 2025-10-09 12:44 edit a bit ZCppMain/ZMainHead.H 2025-10-09 12:44:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
22acd30baa commit 2025-10-09 12:43 add ZftTrimDecimalZero() ZCppMain/ZMainHead.H 2025-10-09 12:43:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b58796277d commit 2025-10-09 12:04 edit a bit ZCppMain/ZMainHead.H 2025-10-09 12:04:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
53125f9556 commit 2025-10-09 11:57 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:57:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
51ea4859d8 commit 2025-10-09 11:33 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:34:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
acfcd70fd7 commit 2025-10-09 11:28 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:28:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7331afaa8a commit 2025-10-09 11:26 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:26:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
143cda31c1 commit 2025-10-09 11:18 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:18:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
25abd43d79 commit 2025-10-09 11:12 edit a bit ZCppMain/ZMainHead.H 2025-10-09 11:12:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f32ab7e51b commit 2025-10-09 11:06 edit a bit ZCppMain/ZtCStringEx.H 2025-10-09 11:06:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f3e62b89ae commit 2025-10-09 11:02 edit a bit ZCppMain/ZMainHead.H 2025-10-09 11:02:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9d5af62781 commit 2025-10-09 11:00 int VI_Minus => TypeCharInt VI_Minus in ZCppMain/ZMainHead.H 2025-10-09 11:00:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ce0d364102 commit 2025-10-09 10:41 bug fix about wchar_t in ZCppMain/ZtCStringEx.H and add ZftAtoI(), ZftAotL() etc in ZCppMain/ZMainHead.H 2025-10-09 10:41:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f2a67017c8 commit 2025-10-09 02:24 Invalidate() => Invalid() : ZCppMain/ZtCStringEx.H 2025-10-09 02:24:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5a1dba2a38 commit 2025-10-09 01:41 bug fix of operator()(long), (long long) etc : ZCppMain/ZtCStringStd.H 2025-10-09 01:41:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0100406f3f commit 2025-10-08 23:58 edit a bit ZCppMain/ZtCStringStd.H 2025-10-08 23:56:45 +09:00
/* User with id == 0 is a fake user from git author */ sauron
554455133d commit 2025-10-08 23:54 edit a bit ZCppMain/ZtCStringStd.H 2025-10-08 23:54:12 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0d5e74665b commit 2025-10-08 23:48 ZCppMain/ZCStringStd.H -> ZCppMain/ZtCStringStd.H 2025-10-08 23:48:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
83e5de35bb commit 2025-10-08 23:07 add explicit before ZtCChars(TypeCharC* APC_TypeChar) : ZCppMain/ZMainHead.H 2025-10-08 23:07:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f85f685cdf commit 2025-10-08 23:03 add ZCSngtLogData& operator()(const ZCCharView& AR_View) : ZCppMain/ZMainHead.H 2025-10-08 23:03:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
76d4a4dbe1 commit 2025-10-08 22:56 edit a bit ZCppMain/ZtCStringEx.H 2025-10-08 22:56:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e2f3a662f3 commit 2025-10-08 22:54 edit a bit ZCppMain/ZtCStringEx.H 2025-10-08 22:54:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6974c13d16 commit 2025-10-08 20:43 add ZtCCharType in ZCppMain/ZMainHead.H 2025-10-08 22:43:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
443ebf4fd1 commit 2025-10-08 18:06 add ZftMakeStr(string& ARR_SaveCStr, const ZCCharView& AR_View) in ZCppMain/ZMainHead.H 2025-10-08 18:08:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1b7c4543c8 commit 2025-10-08 17:34 add ZCppMainTest/ZtCStringBase_000.cpp 2025-10-08 17:34:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
174320c264 commit 2025-10-08 10:00 edit a bit ZCppMain/ZMainHead.H 2025-10-08 10:00:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ff8b9667d9 commit 2025-10-08 09:48 add ZtCCharInt in ZCppMain/ZMainHead.H 2025-10-08 09:48:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6a5b24e62c commit 2025-10-08 08:19 edit a bit ZCppMain/ZCStringStd.H 2025-10-08 08:19:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c2e77c293d commit 2025-10-08 07:34 edit a bit ZCppMain/ZCStringStd.H 2025-10-08 07:34:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
aca56895ac commit 2025-10-08 07:31 edit a bit ZCppMain/ZCStringStd.H 2025-10-08 07:31:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
defcee30a4 commit 2025-10-08 07:19 edit a bit ZCppMain/ZtCObjList.H 2025-10-08 07:19:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
71f2c6fd54 commit 2025-10-08 07:14 edit a bit ZCppMain/ZtCLinkList.H 2025-10-08 07:14:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8d7745ac90 commit 2025-10-07 23:54 public ReplaceByPosList() => private ReplaceByPosList() ZCppMain/ZtCStringEx.H 2025-10-07 23:54:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9459bfa707 commit 2025-10-07 23:32 add 'const' after SendFreeOut() ZCppMain/ZtCLinkList.H 2025-10-07 23:32:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
12a482c098 commit 2025-10-07 22:38 edit a bit ZCppMain/ZtCObjList.H 2025-10-07 22:38:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d738a5fc2c commit 2025-10-07 22:34 delete <typedef ZtCArray ZCArray> in ZCppMain/ZtCArray.H 2025-10-07 22:34:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f35984ba84 commit 2025-10-07 22:28 edit a bit ZCppMain/ZtCArray.H 2025-10-07 22:28:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dc84354861 commit 2025-10-07 21:54 edit a bit ZCppMain/ZMainHead.H 2025-10-07 21:54:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
855dc37af1 commit 2025-10-07 21:44 edit a bit ZCppMain/ZMainHead.H 2025-10-07 21:44:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3eec5443ab commit 2025-10-07 21:31 CopyThis() => CopyThis() const : ZCppMain/ZtCLinkList.H 2025-10-07 21:31:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
34b5db2822 commit 2025-10-07 20:53 edit a bit ZCppMain/ZtCLinkList.H 2025-10-07 20:52:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ec4928d67b commit 2025-10-07 19:47 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-10-07 19:47:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5f707743a4 commit 2025-10-07 19:40 add CopyThis() in ZCppMain/ZtCLinkList.H 2025-10-07 19:40:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3db771e9d9 commit 2025-10-07 18:26 add TypeMain in ZCppMain/ZtCLinkList.H 2025-10-07 18:27:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cf870b5c9c commit 2025-10-07 15:50 edit a bit ZCppMain/ZMainHead.H 2025-10-07 15:50:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0aca9256c3 commit 2025-10-07 15:46 edit a bit ZCppMainTest/ZtCLinkMoveList_000.cpp 2025-10-07 15:46:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
59a8cb3708 commit 2025-10-07 15:40 edit a bit ZCppMain/ZtCLinkList.H 2025-10-07 15:40:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
27eb6b19a6 commit 2025-10-07 12:25 edit a bit ZCppMain/ZtCLinkList.H 2025-10-07 12:25:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d2e3ed17e6 commit 2025-10-07 12:10 edit a bit ZCppMain/ZMainHead.H 2025-10-07 12:10:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ec5b42a3b2 commit 2025-10-07 11:39 edit a bit ZCppMain/ZMainHead.H 2025-10-07 11:39:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e37523f671 commit 2025-10-07 11:36 edit a bit ZCppMain/ZMainHead.H 2025-10-07 11:36:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
19477b3c51 commit 2025-10-07 11:35 edit a bit ZCppMain/ZMainHead.H 2025-10-07 11:35:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1d4de6d8a7 commit 2025-10-07 11:29 edit a bit ZCppMain/ZMainHead.H 2025-10-07 11:29:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
027e8a9191 commit 2025-10-07 11:25 edit a bit ZCppMain/ZMainHead.H 2025-10-07 11:25:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7ee84c97aa commit 2025-10-07 11:21 edit a bit ZCppMain/ZtCObjLit.H 2025-10-07 11:22:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
83ad9c6bbf commit 2025-10-07 10:58 edit a bit ZCppMain/ZCProcess.H 2025-10-07 10:58:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
abf5c28c43 commit 2025-10-07 10:33 edit a bit ZCppMain/ZCProcess.H 2025-10-07 10:33:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ca5d86f1c6 commit 2025-10-07 10:22 edit a bit ZCppMain/ZtCLinkList.H 2025-10-07 10:22:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4eb0f8b724 commit 2025-10-07 10:17 edit a bit ZMainHead.H 2025-10-07 10:17:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
557c18cb3f commit 2025-10-07 10:01 add SendRangeOut() : ZCppMain/ZtCLinkList.H & ZtCObjList.H & ZMainHead.H etc 2025-10-07 10:11:48 +09:00
/* User with id == 0 is a fake user from git author */ sauron
138dc8f5ac commit 2025-10-06 23:51 edit a bit ZCppMain/ZtCLinkList.H 2025-10-06 23:51:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
38b7b5d085 commit 2025-10-06 23:46 edit a bit ZCppMain/ZtCLinkList.H 2025-10-06 23:46:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e13d8589f6 commit 2025-10-06 23:29 edit a bit ZCppMain/ZtCLinkList.H 2025-10-06 23:29:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
586c7aee43 commit 2025-10-06 23:26 edit ZCppMain/ZtCSimList.H 2025-10-06 23:26:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cd4e81a89a commit 2025-10-06 22:53 add ZtCLinkMoveList : ZCppMain/ZtCLinkList.H 2025-10-06 22:53:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
998dee68b7 commit 2025-10-06 19:02 edit a bit ZCppMain/ZCProcess.H 2025-10-06 19:02:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f5cc30d65e commit 2025-10-06 15:25 edit a bit ZCppMain/ZtCLinkList.H 2025-10-06 15:25:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
80c7b85ec2 commit 2025-10-06 15:02 add Raw() in ZtCObjOpt : ZCppMain/ZMainHead.H 2025-10-06 15:03:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b5cf36be19 commit 2025-10-06 11:48 add GetLinkOpt() : ZCppMain/ZtCObjList.H 2025-10-06 11:48:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2272742d8f commit 2025-10-06 11:12 add Argument ZCLink* => ZCLink& in SendOutAfter() and SendOutBefore() : ZCppMain/ZtCObjList.H 2025-10-06 11:12:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
afe609c463 commit 2025-10-06 10:50 add SendRangeOutAfter() : ZCppMain/ZtCLinkList.H 2025-10-06 10:50:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b714f5579c commit 2025-10-06 08:36 add GetNextPrevPtr() in ZtCLink : ZCppMain/ZtCLinkList.H 2025-10-06 08:36:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d7ed80d1b0 commit 2025-10-05 22:47 edit SendOutAfter/SendOutBefore : ZCppMain/ZtCLinkList.H 2025-10-05 22:47:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fdd6cdc718 commit 2025-10-05 22:37 add AddHead/AddTail(const ZCLink& AR_CLink) : ZCppMain/ZtCLinkList.H 2025-10-05 22:37:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c1d788a611 commit 2025-10-05 21:55 edit a bit ZtCObjNew : ZCppMain/ZMainHead.H 2025-10-05 21:55:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e1519765ba commit 2025-10-05 21:00 add operator bool() in ZtCObjOpt : ZCppMain/ZMainHead.H 2025-10-05 21:00:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cd42f26bfd commit 2025-10-05 20:29 add ZCppMainTest/ZtCLinkList_000.cpp 2025-10-05 20:29:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8890462b1b commit 2025-10-05 15:31 edit CutLink() argument : ZCppMain/ZtCObjList.H 2025-10-05 15:31:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1cb7045ad8 commit 2025-10-05 14:36 edit ZCppMain/ZtCLinkList.H 2025-10-05 14:36:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8bfa731e4a commit 2025-10-05 12:14 edit GetLinkPtr() : ZCppMain/ZMainHead.H 2025-10-05 12:14:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cb73c93360 commit 2025-10-05 12:02 add SendOutAfter() & SendOutBefore() etc ZCppMain/ZtCObjList.H 2025-10-05 12:02:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bc20d259f5 commit 2025-10-04 23:35 edit a bit ZCppMain/ZtCObjList.H 2025-10-04 23:35:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4c4ca8645e commit 2025-10-04 22:55 is writing ZCppMain/ZtCLinkList.H 2025-10-04 22:55:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
62e33805f0 commit 2025-10-04 21:02 edit a bit ZCppMain/ZCProcess_Linux.H 2025-10-04 21:02:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8b6ea4118f commit 2025-10-04 20:40 replace ZtCMutexCondDataVar with ZtCMutexCondVar : ZCppMain/ZCProcess.H 2025-10-04 20:40:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
939d1cc007 commit 2025-10-04 14:32 edit a bit ZCppMain/ZCProcess.H 2025-10-04 14:32:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
72f23aa514 commit 2025-10-04 14:10 rename GetObjtPtr() => GetUnitPtr() in ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-10-04 14:10:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8fc49ae8d9 commit 2025-10-04 13:38 edit a bit ZCppMain/ZtCObjList.H 2025-10-04 13:38:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6bb20fe2e2 commit 2025-10-04 13:26 edit a bit ZCppMain/ZtCObjList.H 2025-10-04 13:26:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c7d6ecd0c5 commit 2025-10-04 12:28 edit a bit ZCppMain/ZtCObjList.H 2025-10-04 12:31:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
75fa0f9e45 commit 2025-10-04 12:28 edit a bit ZCppMain/ZtCObjList.H 2025-10-04 12:28:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
989273ee18 commit 2025-10-04 12:08 add IterElemLink(TFunctor, TTypeHelp1, TTypeHelp2) : ZCppMain/ZMainHead.H 2025-10-04 12:08:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a721d4465a commit 2025-10-04 10:26 edit a bit ZCppMain/ZtCStringEx.H 2025-10-04 10:26:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fe956958d2 commit 2025-10-04 10:23 edit a bit ZCppMain/ZtCStringEx.H 2025-10-04 10:23:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0fbd22b7b1 commit 2025-10-04 10:04 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-10-04 10:05:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3bfc5f8355 commit 2025-10-04 09:54 IterElemLink() in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-04 09:54:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4543f13d9f commit 2025-10-04 09:18 ZCLink& operator+, - in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-04 09:19:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f24913673b commit 2025-10-04 09:13 ZCLink& operator+, - : ZCppMain/ZtCObjList.H 2025-10-04 09:13:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
90bfd26996 commit 2025-10-04 09:05 add IterElemLink() : ZCppMain/ZtCObjList.H 2025-10-04 09:05:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
933bed0404 commit 2025-10-04 08:36 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-10-04 08:36:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e4b9bfffee commit 2025-10-04 08:35 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-10-04 08:35:16 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8bf6f3447f commit 2025-10-04 00:42 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-10-04 00:42:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d04d601a7c commit 2025-10-04 00:30 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-10-04 00:31:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
96c89eb68c commit 2025-10-03 23:54 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-10-03 23:54:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
66660bfb3c commit 2025-10-03 23:48 add capacity() & size_free() in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-03 23:48:53 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0b9828c06a commit 2025-10-03 19:35 rename mo_Data to mo_DataObjt : ZCppMain/ZMainHead.H 2025-10-03 19:36:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6d623437ff commit 2025-10-03 19:29 rename mo_Data to mo_DataObjt : ZCppMain/ZtCSimList.H 2025-10-03 19:30:00 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4273cea392 commit 2025-10-03 19:24 rename mo_Data to mo_DataObjt : ZCppMain/ZtCObjList.H 2025-10-03 19:24:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3c60af8369 commit 2025-10-03 19:16 edit a bit ZCppMain/ZMainHead.H 2025-10-03 19:16:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
49dfa7570d commit 2025-10-03 19:05 add ZEActRun : ZCppMain/ZMainHead.H 2025-10-03 19:10:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2c713b6ccb commit 2025-10-03 18:44 rename IterEleCutIf() to IterElemCut() : ZCppMain/ZtCSimList.H 2025-10-03 18:45:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
11f79dec3a commit 2025-10-03 17:30 add DeleteHead(TypeSize) & DeleteTail(TypeSize) in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-03 17:30:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fee4f8aee1 commit 2025-10-03 16:01 delete ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-03 16:01:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
97b1280b15 commit 2025-10-03 11:51 add ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-03 11:51:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c0cc5540b5 commit 2025-10-03 04:31 add RecvFreeIn() etc in ZtCBaseList : ZCppMain/ZMainHead.H 2025-10-03 04:31:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b8ae34461b commit 2025-19-29 19:48 rename AddHeadDefault() => AddHeadDef(), AddTailDefault() => AddTailDef() ZCppMain/ZtCObjList.H etc 2025-10-01 19:29:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e075c1c67c commit 2025-09-30 19:37 delete typedef TypeData in ZtCFreeHeapCDL::ZtCBody : ZCppMain/ZtCObjList.H 2025-09-30 19:38:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6e9dffc1f4 commit 2025-09-29 19:48 edit a bit ZCppMain/ZMainHead.H 2025-09-29 19:48:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
92d2763d40 commit 2025-09-29 19:47 bug fix in ZtCBaseList::operator=(const ZtCBaseList& rhs) : ZCppMain/ZMainHead.H 2025-09-29 19:47:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
091f19d93a commit 2025-09-28 22:15 edit a bit ZCppMain/ZMainHead.H 2025-09-28 22:15:56 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c860938de3 commit 2025-09-28 22:09 edit a bit ZCppMain/ZMainHead.H 2025-09-28 22:09:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f8a8c6ce28 commit 2025-09-28 22:00 edit a bit ZCppMain/ZMainHead.H 2025-09-28 22:00:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e5ae0cf091 commit 2025-09-28 21:35 edit a bit ZCppMain/ZMainHead.H 2025-09-28 21:35:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1f10da8473 commit 2025-09-28 21:14 edit a bit ZCppMain/ZMainHead.H 2025-09-28 21:14:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4afd99fce1 commit 2025-09-28 18:14 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-09-28 18:14:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
286259df9d commit 2025-09-28 17:19 add template parameter 'bool TTypebUseCRTP' inZtCTypeNowCRTP : ZCppMain/ZMainHead.H 2025-09-28 17:19:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c617e6ea8a commit 2025-09-28 11:34 edit a bit ZCppMain/ZMainHead.H 2025-09-28 11:35:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
290b72d362 commit 2025-09-28 10:30 edit a bit ZCppMain/ZtCSortObjList.H 2025-09-28 10:30:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ed0ab398db commit 2025-09-28 10:13 edit a bit ZCppMain/ZMainHead.H 2025-09-28 10:13:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cf415becc0 commit 2025-09-28 10:10 template parameter TTypeCRTP in ZtCBaseList : ZCppMain/ZMainHead.H 2025-09-28 10:10:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6c4c4a86e1 commit 2025-09-28 02:42 edit a bit ZCppMain/ZMainHead.H 2025-09-28 02:42:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a8e6127a0f commit 2025-09-28 02:11 edit a bit ZCppMain/ZMainHead.H 2025-09-28 02:11:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
71cefa21c4 commit 2025-09-28 01:08 edit a bit ZCppMain/ZMainHead.H 2025-09-28 01:08:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6e6c59b0cc commit 2025-09-27 19:21 edit a bit ZCppMain/ZtCObjList.H 2025-09-27 19:21:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a542e66922 commit 2025-09-27 18:59 edit a bit ZCppMain/ZtCObjList.H 2025-09-27 18:59:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a12c86d471 commit 2025-09-27 18:38 delete ZtCTypeCheckRef : ZCppMain/ZMainHead.H 2025-09-27 18:39:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2071e21542 commit 2025-09-27 11:14 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H 2025-09-27 11:14:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4485241a49 commit 2025-09-27 10:57 bug fix in DeleteHeap() : ZCppMain/ZtCObjList.H 2025-09-27 10:57:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c613f0df8a commit 2025-09-27 09:19 refine a bit DeleteHeap(TypeSize AI_DelCnt) : ZCppMain/ZtCObjList.H 2025-09-27 09:20:03 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a407d97d70 commit 2025-09-27 08:52 bug fix in DeleteHeap(TypeSize AI_DelCnt) : ZCppMain/ZtCObjList.H 2025-09-27 08:52:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2c553a20e0 commit 2025-09-27 01:02 edit a bit ZCppMain/ZtCObjList.H 2025-09-27 01:02:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9ca7dd3a90 commit 2025-09-27 00:58 add ZtCTypeData< ZtCRef<TType> > and ZtCTypeData< ZtCRef<TType>* > 2025-09-27 00:58:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3cbcc8df6c commit 2025-09-24 17:07 edit a bit ZCppMain/ZCStringStd.H 2025-09-24 15:07:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
59fc4ff1e1 commit 2025-09-24 14:06 edit a bit ZCppMain/ZtCSimList.H 2025-09-24 14:06:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
388e62b7c3 commit 2025-09-24 13:45 delete _CODE_OLD_ codes in ZCppMain/ZtCSimList.H 2025-09-24 13:45:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5e39246c60 commit 2025-09-24 13:37 delete _CODE_OLD_ codes in ZCppMain/ZtCObjList.H 2025-09-24 13:37:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f3b886c8c2 commit 2025-09-24 11:20 add ZtCFreeHeapSngl<>::MakeEqual() in ZCppMain/ZtCObjList.H and ZtCSimList.H 2025-09-24 11:20:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f58ad91530 commit 2025-09-20 18:59 edit a bit ZCppMain/ZCProcess_Win.H 2025-09-20 18:59:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
16e11d9cb7 commit 2025-09-20 18:29 edit a bit ZCppMain/ZtCStringEx.H 2025-09-20 18:29:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
04e2329262 commit 2025-09-20 10:22 edit a bit ZCppMain/ZtCStringEx.H 2025-09-20 10:22:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6238184f8d commit 2025-09-20 10:16 edit member fun of ZCAllocClass ZCppMain/ZMainHead.H 2025-09-20 10:17:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b893f0884e commit 2025-09-20 08:39 edit a bit ZCppMain/ZMainHead.H 2025-09-20 08:39:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
936581e12d commit 2025-09-20 08:37 edit a bit ZCppMainTest/ZtCBaseList_000.cpp 2025-09-20 08:37:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d812f6c40e commit 2025-09-20 08:29 mv ZtCList to ZtCBaseList in ZCppMain/ZMainHead.H 2025-09-20 08:29:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a821ee6cc5 commit 2025-09-20 00:39 delete ZCHeapAllocList in ZCppMain/ZMainHead.H 2025-09-20 00:39:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
500c806dbd commit 2025-09-19 22:55 Optimize Replace() in ZtCStringBase 2025-09-19 22:55:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0ca2981290 commit 2025-09-18 19:56 add 202509181922 code< ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); > in ZCppMain/ZtCSimList.H 2025-09-18 19:56:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fb77b5ef89 commit 2025-09-16 20:38 edit a bit ZCppMain/ZtCObjList.H 2025-09-16 20:36:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c676b9d4f2 commit 2025-09-16 19:57 edit a bit ZCppMainTest/ZtCSimList_000.cpp 2025-09-16 19:57:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4ca3c9a955 commit 2025-09-15 20:44 edit a bit ZCppMain/ZtCSimList.H 2025-09-15 20:44:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b213c85b78 commit 2025-09-15 20:41 edit a bit ZCppMain/ZtCObjList.H 2025-09-15 20:41:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c5a1b1ae94 commit 2025-09-15 20:34 refine ZtCBody::Fetch() in ZCppMain/ZtCObjList.H 2025-09-15 20:35:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8059bfd3a0 commit 2025-09-14 20:24 is testing ZtCBody::Fetch() in ZCppMain/ZtCSimList.H 2025-09-14 20:25:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c87ecc13cd commit 2025-09-14 19:03 is testing ZtCBody::Fetch() in ZCppMain/ZtCObjList.H 2025-09-14 19:04:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a16a71084b commit 2025-09-14 18:37 is testing ZtCBody::Fetch() in ZCppMain/ZtCObjList.H 2025-09-14 18:37:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0bf7d2c290 commit 2025-09-14 13:39 edit a bit ZCppMain/ZtCSimList.H 2025-09-14 13:39:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
63edcfd88e commit 2025-09-14 13:37 edit a bit ZCppMain/ZtCObjList.H 2025-09-14 13:37:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7b9ce2c1fb commit 2025-09-14 12:48 bug fix in ZtCObjList& operator=(const ZtCObjList& rhs) in ZCppMain/ZtCObjList.H 2025-09-14 12:48:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1876bdc2ce commit 2025-09-14 12:37 apply ZNsIFaceEx::ZtCFreeHeapCDL<ZNsConst::CI_ListKind_Double> in ZCppMain/ZtCObjList.H 2025-09-14 12:37:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
82761030c8 commit 2025-09-14 00:42 edit a bit ZCppMain/ZtCObjList.H 2025-09-14 00:42:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
86e1668591 commit 2025-09-14 00:13 edit a bit ZCppMain/ZtCObjList.H 2025-09-14 00:13:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f05b82847e commit 2025-09-14 00:07 edit a bit ZCppMain/ZtCSimList.H 2025-09-14 00:07:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ca20ff4850 commit 2025-09-13 23:44 complete ZtCFreeHeapSngl< ZNsConst::CI_ListKind_Single > in ZCppMain/ZtCSimList.H 2025-09-13 23:44:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
602f35faba commit 2025-09-13 10:46 is coding ZCFreeHeapSngl::ZtCBody in ZCppMain/ZtCSimList.H 2025-09-13 10:47:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1ae5806738 commit 2025-09-12 18:01 edit ZIFreeHeap in ZCppMain/ZMainHead.H 2025-09-12 18:01:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ea970195fb commit 2025-09-12 17:12 edit ZIFreeHeap in ZCppMain/ZMainHead.H 2025-09-12 17:13:00 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2513842f7f commit 2025-09-12 14:54 add ZIFreeHeap in ZCppMain/ZMainHead.H 2025-09-12 14:54:11 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8a770d21ab commit 2025-09-12 11:19 edit a bit ZCppMain/ZtCSimList.H 2025-09-12 11:19:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
74dbcd6482 commit 2025-09-11 14:57 ZtCInit::EUseInit, EUseFini => ZEUseInit, ZEUseFini in ZCppMain/ZMainHead.H 2025-09-11 14:57:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3a41be365a commit 2025-09-11 14:31 edit a bit ZCppMain/ZtCArray.H 2025-09-11 14:31:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
968063376b commit 2025-09-11 14:27 edit a bit ZCppMain/ZtCArray.H 2025-09-11 14:27:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
562381e4c2 commit 2025-09-11 14:17 edit a bit ZCppMain/ZtCObjList.H 2025-09-11 14:17:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4c40e76abd commit 2025-09-11 13:31 edit codes for ZtCList in ZCppMain/ZMainHead.H 2025-09-11 13:31:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0c07b0e497 commit 2025-09-11 12:36 edit codes for ZtCInit<> in ZCppMain/ZtSimList.H etc 2025-09-11 12:37:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5ced8624e6 commit 2025-09-11 00:22 edit a bit ZCppMain/ZtSimList.H 2025-09-11 00:22:42 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a9fbdef1d7 commit 2025-09-10 15:35 edit a bit ZCppMain/ZCProcess_Linux.H 2025-09-10 15:35:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e54bc15c4a commit 2025-09-10 15:27 edit a bit ZCppMain/ZCProcess_Linux.H 2025-09-10 15:27:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b2956aad58 commit 2025-09-09 23:43 edit a bit ZCppMain/ZCProcess_Linux.H 2025-09-09 23:43:54 +09:00
/* User with id == 0 is a fake user from git author */ sauron
707711607d commit 2025-09-09 23:32 edit a bit ZCppMain/ZCProcess_Linux.H 2025-09-09 23:33:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d4c5014bd8 commit 2025-09-09 23:22 edit a bit ZCppMain/ZCProcess_Win.H 2025-09-09 23:22:36 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5440691151 commit 2025-09-09 14:18 add ZCppMainTest/ZtCSimList_000.cpp etc 2025-09-09 14:17:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bf89d8c83e commit 2025-09-09 14:15 add template parameter 'TMoveObj' in ZtCList & ZtCSimList 2025-09-09 14:15:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
004c9a9135 commit 2025-09-09 11:02 add ItHID(), ItNext() etc in ZCppMain/ZtCSimList.H 2025-09-09 11:03:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b994f15dbb commit 2025-09-09 00:30 edit a bit ZCppMain/ZtCSimList.H 2025-09-09 00:31:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3537c0a37d commit 2025-09-09 00:14 edit a bit ZCppMain/ZtCSimList.H 2025-09-09 00:15:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9c39536b4f commit 2025-09-08 09:42 edit a bit ZCppMain/ZMainAVL.H 2025-09-08 09:42:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
39996ce5fa commit 2025-09-07 22:54 add ZtStTuple<> ZftMakeTuple() : ZCppMain/ZMainHeadEx.H 2025-09-07 22:54:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b7ebc664cc commit 2025-09-07 15:16 edit code for _NO_USE_REEDDIR_R_ : ZCppMain/ZMainHeadEx.H 2025-09-07 15:16:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e57424e4e8 commit 2025-09-07 15:03 add _NO_USE_REEDDIR_R_ : ZCppMain/ZMainHeadEx.H 2025-09-07 15:03:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f5f73b0344 commit 2025-09-07 14:35 edit a bit ZCppMainTest/~ 2025-09-07 14:35:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
642385f95f commit 2025-09-07 14:27 edit a bit ZCppMainTest/~ 2025-09-07 14:27:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f050af4718 commit 2025-09-07 12:20 edit a bit ZCppMain/ZMainHead.H 2025-09-07 12:55:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2e5c90155f commit 2025-09-07 12:20 edit a bit ZCppMain/ZMainHead.H 2025-09-07 12:21:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1bb328a4bb commit 2025-09-07 09:58 edit ZCppMainTest/ZftMakeTuple_000.cpp 2025-09-07 00:58:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
154890d939 commit 2025-09-07 00:27 add ZCppMainTest/ZtCThreadEx_002_MutexCond.cpp 2025-09-07 00:57:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
28b6010c51 commit 2025-09-06 09:41 bug fix of ZftMakeTuple() in ZCppMain/ZMainHead.H 2025-09-06 21:41:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
68c00e0569 commit 2025-09-06 01:30 edit a bit ZCppMainTest/ZftMakeTuple_000.cpp 2025-09-06 01:30:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ba43de8a27 commit 2025-09-06 01:27 edit a bit ZCppMain/ZMainHead.H 2025-09-06 01:27:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
049521c7c7 commit 2025-09-05 21:02 edit a bit ZCppMain/ZMainHead.H 2025-09-05 21:02:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8477d1c3b9 commit 2025-09-05 17:34 edit a bit ZCppMain/ZMainHead.H 2025-09-05 17:34:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
de92c3295b commit 2025-09-05 15:05 edit a bit ZftMakeTuple_000.cpp 2025-09-05 15:05:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8533bb0508 commit 2025-09-05 15:00 add ZftMakeTuple() in ZCppMain/ZMainHead.H 2025-09-05 15:01:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bf1d0f2222 commit 2025-09-04 22:55 edit a bit ZCppMainTest/ZtCThreadEx_000.cpp & ZCppMainTest/ZtCThreadEx_001.cpp 2025-09-04 22:55:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
41e78aabc1 commit 2025-09-04 22:02 add ZCppMainTest/ZtCObjList_000.cpp & ZCppMainTest/ZtCThreadEx_001.cpp 2025-09-04 22:02:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b460e66975 commit 2025-09-04 21:44 add ZTycInt, ZTycLong etc in ZCppMain/ZMainHead.H 2025-09-04 21:44:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
cc25902d85 commit 2025-09-04 20:01 edit a bit ZCppMain/ZMainHeadEx.H 2025-09-04 20:01:45 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c6c879dc45 commit 2025-09-04 19:51 add type ZTycInt, ZTycLong etc in ZCppMain/ZMainHead.H 2025-09-04 19:51:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
108a86df10 commit 2025-09-04 16:17 edit a bit ZCppMain/ZCProcess.H 2025-09-04 16:17:51 +09:00
/* User with id == 0 is a fake user from git author */ sauron
59a9e5fd9c commit 2025-09-04 16:15 edit a bit ZCppMain/ZCProcess.H 2025-09-04 16:15:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4cfe8e9d0e commit 2025-09-04 15:29 edit a bit ZCppMain/ZCProcess.H 2025-09-04 15:29:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9f792d27c1 commit 2025-09-04 15:23 edit a bit ZCppMainTest/ZtCThreadEx_000.cpp 2025-09-04 15:23:47 +09:00
/* User with id == 0 is a fake user from git author */ sauron
eb09153a87 commit 2025-09-04 15:07 edit a bit ZCppMain/ZCProcess.H 2025-09-04 15:07:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c98d863715 commit 2025-09-04 14:45 edit a bit ZtCThreadEx : ZCppMain/ZCProcess.H 2025-09-04 14:45:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
103ea42de7 commit 2025-09-04 14:38 edit a bit ZCppMainTest/ZtCThreadEx_000.cpp 2025-09-04 14:38:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7dff03d2bc commit 2025-09-04 14:19 edit a bit ZtCThread : ZCppMain/ZCProcess_Linux.H 2025-09-04 14:19:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
37628f49a4 commit 2025-09-04 14:16 to tuf8 : ZCppMain/ZCProcess.H 2025-09-04 14:16:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c9ae7e236f commit 2025-09-04 14:13 add ZCppMain/ZCProcess.H & ZCppMainTest/ZtCThreadEx_000.cpp 2025-09-04 14:13:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3e11a125df commit 2025-09-04 00:17 edit a bit ZCppMain/ZMainHead.H 2025-09-04 00:17:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7848f3c8bb commit 2025-09-04 00:16 edit a bit ZCppMain/ZMainHead.H 2025-09-04 00:16:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dfaf5a587f commit 2025-09-04 00:12 edit a bit ZCEndian in ZCppMain/ZMainHead.H 2025-09-04 00:12:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d1fa601bb5 commit 2025-09-03 23:59 edit a bit ZCppMain/ZMainHead.H 2025-09-03 23:59:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
37df093b7a commit 2025-09-03 23:57 ZCppMain/ZtCMainChars.H of ZtCMainChars.H => ZtCChars of ZCppMain/ZMainHead.H 2025-09-03 23:57:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6a3b673a19 commit 2025-09-03 13:56 edit ZCChars::Init() in ZCppMain/ZtCMainChars.H 2025-09-03 13:57:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6aa460f380 commit 2025-09-02 22:57 delete c_str_FromEnd(() in ZCppMain/ZCStringStd.H 2025-09-02 22:57:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fd611217e3 commit 2025-09-02 22:53 edit a bit ReadLongFromIndex() in ZCppMain/ZCStringStd.H 2025-09-02 22:53:35 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3392905ff0 commit 2025-09-02 20:49 add operator() in ZCppMain/ZCStringStd.H 2025-09-02 20:49:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6a0fa2fa3b commit 2025-09-02 19:34 edit a bit ZCppMain/ZtCStringEx.H 2025-09-02 19:34:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ffbc7b1777 commit 2025-09-02 17:40 FindPosType() => FindPosByList() ZCppMain/ZtCStringEx.H 2025-09-02 17:40:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c9b5fc5cb6 commit 2025-09-02 17:29 delete static WriteFileRaw() in ZCppMain/ZtCStringEx.H 2025-09-02 17:29:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
d42932deb4 commit 2025-09-02 17:24 delete fun ReadFile~(), SearchFile~() etc in ZCppMain/ZMainHeadEx.H 2025-09-02 17:24:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ab68f32074 commit 2025-09-02 17:06 delete argument AL_AddAllocSize in ZftLoadFile() in ZCppMain/ZMainHeadEx.H 2025-09-02 17:06:26 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7134f0eb67 commit 2025-09-02 16:13 edit a bit ZCppMain/ZtCStringEx.H 2025-09-02 16:13:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2c02d1a70a commit 2025-09-02 15:49 edit a bit ZCppMain/ZtCStringEx.H 2025-09-02 15:49:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
08f059d553 commit 2025-09-02 15:37 edit a bit ZCppMain/ZtCStringEx.H 2025-09-02 15:37:18 +09:00
/* User with id == 0 is a fake user from git author */ sauron
50ec9d656c commit 2025-09-02 15:28 edit MakeSplitInfoList() in ZCppMain/ZtCStringEx.H 2025-09-02 15:28:19 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f52ff234d7 commit 2025-09-02 14:37 refine Replace() in ZCppMain/ZtCStringEx.H 2025-09-02 14:37:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
832cd98558 commit 2025-09-02 14:24 fix bug in Replace() in ZCppMain/ZtCStringEx.H 2025-09-02 14:36:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
af3cf17663 commit 2025-09-02 13:32 refine Replace() in ZCppMain/ZtCStringEx.H 2025-09-02 13:32:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
660a66c58b commit 2025-09-02 12:47 delete template<typename TSearchInfoList> ZCStringBase& ReplaceType in ZCppMain/ZtCStringEx.H 2025-09-02 12:47:46 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7f32a3298a commit 2025-09-02 11:45 add ZtCList::AddHead() ZCppMain/ZMainHead.H 2025-09-02 11:45:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5d24118766 commit 2025-09-01 11:40 edit a bit ZCppMain/ZCStringStd.H 2025-09-02 11:40:31 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a2e2f8ce7b commit 2025-09-01 11:37 add Replace() in ZCppMain/ZCStringStd.H 2025-09-02 11:37:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
50d2fac736 commit 2025-09-01 21:22 add ReplaceToOutByPosList() in ZCppMain/ZCStringStd.H 2025-09-01 21:22:06 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fa658801cf commit 2025-09-01 14:07 is coding ZCppMain/ZCStringStd.H 2025-09-01 14:07:33 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6142ecd2e9 commit 2025-09-01 11:26 add ZtCList in ZCppMain/ZMainHead.H 2025-09-01 11:28:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
94edff9996 commit 2025-09-01 00:43 edit a bit ZCppMain/ZMainHead.H 2025-09-01 00:43:22 +09:00
/* User with id == 0 is a fake user from git author */ sauron
febe6aafd0 commit 2025-09-01 00:27 edit a bit ZCppMain/ZMainHead.H 2025-09-01 00:27:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f689e59b58 commit 2025-08-31 21:40 edit a bit ZCppMain/ZtCStringEx.H 2025-08-31 21:40:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ee9065f37c commit 2025-08-31 21:32 edit a bit ZCppMain/ZtCStringEx.H 2025-08-31 21:32:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
c487215065 commit 2025-08-31 15:39 edit a bit ZCppMain/ZtCObjList.H 2025-08-31 15:39:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b5a6a5c944 commit 2025-08-31 01:34 refine class ZtCMoveObj in ZCppMain/ZtCStringEx.H 2025-08-31 13:35:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a57179f7bb commit 2025-08-30 22:39 add ZftLoadFile in ZCppMain/ZMainHeadEx.H 2025-08-30 22:39:55 +09:00
/* User with id == 0 is a fake user from git author */ sauron
16218f91a0 commit 2025-08-29 10:09 edit a bit FindPosLinear in ZCppMain/ZtCMainChars.H 2025-08-29 10:09:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dcce3e7e31 commit 2025-08-29 10:01 edit a bit FindPosLinear in ZCppMain/ZtCMainChars.H 2025-08-29 10:01:48 +09:00
/* User with id == 0 is a fake user from git author */ sauron
50b3ea97b8 commit 2025-08-29 09:41 edit a bit FindPosLinear in ZCppMain/ZtCMainChars.H 2025-08-29 09:41:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
eb8e057f5c commit 2025-08-29 09:26 edit a bit FindPosReady in ZCppMain/ZtCMainChars.H 2025-08-29 09:26:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
47e6b27b7b commit 2025-08-29 09:05 edit a bit ZCViewLogData in ZCppMain/ZMainHead.H 2025-08-29 09:06:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
7c1b176706 commit 2025-08-29 08:55 add ZCSngtLogData::operator() in ZCppMain/ZMainHead.H 2025-08-29 08:56:00 +09:00
/* User with id == 0 is a fake user from git author */ sauron
178cbca5f5 commit 2025-08-29 02:38 add ZCSngtLogData in ZCppMain/ZMainHead.H 2025-08-29 02:39:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1a006ca46c commit 2025-08-28 23:23 edit a bit ZCppMain/ZtCMainChars.H 2025-08-28 23:23:23 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ca28ee71a4 commit 2025-08-28 23:17 edit a bit ZCppMain/ZtCMainChars.H 2025-08-28 23:17:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ef089d6982 commit 2025-08-28 22:26 replace ZNsInterface with ZNsIFace 2025-08-28 22:26:04 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e1d67b7eb0 commit 2025-08-28 22:06 edit a bit ZCppMain/ZtCStringEx.H 2025-08-28 22:06:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b1eaa036d1 commit 2025-08-28 22:02 edit a bit ZCppMain/ZtCStringEx.H 2025-08-28 22:02:25 +09:00
/* User with id == 0 is a fake user from git author */ sauron
00a1672400 commit 2025-08-28 21:36 edit a bit ZCppMain/ZtCMainChars.H 2025-08-28 21:36:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9216c4dca8 commit 2025-08-28 20:56 edit a bit ZCppMain/ZtCStringEx.H 2025-08-28 20:57:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
23aafc699b commit 2025-08-28 20:48 edit a bit ZftMakeStr() in ZCppMain/ZtCStringEx.H 2025-08-28 20:48:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0159e0933f commit 2025-08-28 20:31 edit a bit ZftMakeStr() in ZCppMain/ZtCStringEx.H 2025-08-28 20:31:21 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b6c236a792 commit 2025-08-28 20:26 edit a bit ZCppMain/ZtCStringEx.H 2025-08-28 20:26:58 +09:00
/* User with id == 0 is a fake user from git author */ sauron
9a8e5b59fd commit 2025-08-28 20:23 add ZftMakeStr() in ZCppMain/ZMainHead.H and ZtCStringEx.H 2025-08-28 20:23:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
6cbb30f285 commit 2025-08-28 15:42 add func of ZMainXhtml.H in ZCppMain/ZMainHead.H and delete ZMainXhtml.H 2025-08-28 15:42:59 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3384486ecd commit 2025-08-28 15:20 edit a bit ZCppMain/ZMainHead.H 2025-08-28 15:21:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
37089dfe6a commit 2025-08-26 12:50 edit a bit ZtCObjPtr in ZCppMain/ZMainHead.H 2025-08-26 12:50:20 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dfd2294c89 commit 2025-08-26 12:47 edit a bit ZtCObjNew in ZCppMain/ZMainHead.H 2025-08-26 12:47:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3951425860 commit 2025-08-26 00:29 edit 'ZtCObjNew& operator=(const ZtCObjNew& rhs)' in ZCppMain/ZMainHead.H 2025-08-26 00:30:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
471fa75bc4 commit 2025-08-26 00:11 ZtCObjectNew => ZtCObjNew, ZtCObjectPtr to ZtCObjPtr in ZCppMain/ZMainHead.H 2025-08-26 00:11:43 +09:00
/* User with id == 0 is a fake user from git author */ sauron
71ec922958 commit 2025-08-25 23:34 edit a bit ZtCObjectNew in ZCppMain/ZMainHead.H 2025-08-25 23:35:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
1e90010716 commit 2025-08-25 23:25 edit a bit ZtCObjectNew in ZCppMain/ZMainHead.H 2025-08-25 23:25:48 +09:00
/* User with id == 0 is a fake user from git author */ sauron
502f0f31ad commit 2025-08-25 23:15 edit a bit ZCppMain/ZMainHead.H 2025-08-25 23:15:57 +09:00
/* User with id == 0 is a fake user from git author */ sauron
5b2b966c0c commit 2025-08-25 21:04 to utf8 : ZCppMainTest/c++_test_005.cpp 2025-08-25 21:05:07 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0cfe0158e7 commit 2025-08-25 21:03 add ZCppMainTest/c++_test_005.cpp 2025-08-25 21:03:49 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bcf50710a9 commit 2025-08-25 20:40 edit ZCEndian in ZCppMain/ZtMainHead.H 2025-08-25 20:40:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
032361a5e1 commit 2025-08-25 20:39 edit ZCEndian in ZCppMain/ZtMainHead.H 2025-08-25 20:39:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3b27b21e34 commit 2025-08-25 20:32 to utf8 : ZCppMainTest/c++_test_000.cpp 2025-08-25 20:32:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3858e49327 commit 2025-08-25 20:30 delete ZCppMainTest/g++_test_000.cpp because of ZCppMainTest/c++_test_000.cpp 2025-08-25 20:30:39 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ec82ddea97 commit 2025-08-25 20:27 add ZCEndian in ZCppMain/ZMainHead.H 2025-08-25 20:27:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
37c7b4ae74 commit 2025-08-25 15:51 refine codes about readdir_r() and readdir() in ZCppMain/ZMainHead.H 2025-08-25 15:51:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
09245f44ed commit 2025-08-25 14:19 edit a bit ZCppMain/ZMainHead.H 2025-08-25 14:19:37 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a7dd27c31c commit 2025-08-25 03:32 edit a bit ZCppMain/ZtCLoadDataBlock.H 2025-08-25 03:32:08 +09:00
/* User with id == 0 is a fake user from git author */ sauron
490eed99c1 commit 2025-08-25 03:26 edit a bit ZCppMain/ZtCMainChars.H 2025-08-25 03:26:15 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4015ba2758 commit 2025-08-25 01:41 add ZCppMainTest/g++_test_000.cpp 2025-08-25 01:41:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dec8503d94 commit 2025-08-25 01:23 edit a bit ZCppMain/ZMainHead.H 2025-08-25 01:23:27 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f3ce568dc5 commit 2025-08-25 00:58 edit a bit ZCppMain/ZMainHead.H 2025-08-25 00:58:34 +09:00
/* User with id == 0 is a fake user from git author */ sauron
48121102bb commit 2025-08-25 00:53 edit a bit ZCppMainTest/ZtCLoadXml_000.cpp 2025-08-25 00:54:05 +09:00
/* User with id == 0 is a fake user from git author */ sauron
4c0daec76a commit 2025-08-25 00:23 edit a bit ZCppMainTest/ZtCLoadXml_000.cpp 2025-08-25 00:23:50 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3f91ce4980 commit 2025-08-24 23:40 add ZCppMain/ZMainCGI.H 2025-08-24 23:40:24 +09:00
/* User with id == 0 is a fake user from git author */ sauron
3a73a7501c commit 2025-08-24 23:37 add ZCppMain/ZMainCGI.H and ZCppMainTest/ZMainCGI_000_EnvSet.cpp 2025-08-24 23:37:52 +09:00
/* User with id == 0 is a fake user from git author */ sauron
bfb76457f7 commit 2025-08-24 15:24 edit a bit ZCppMain/ZMainEnc.H 2025-08-24 15:24:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
f8cbc57070 commit 2025-08-24 15:08 add ZCppMain/ZMainEnc.H 2025-08-24 15:09:02 +09:00
/* User with id == 0 is a fake user from git author */ sauron
e932add3c8 commit 2025-08-24 12:25 edit a bit ZCppMain/ZtCLoadXml.H 2025-08-24 12:25:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
a8b73f68de commit 2025-08-24 11:07 edit a bit ZCppMain/ZMainHead.H etc 2025-08-24 11:07:13 +09:00
/* User with id == 0 is a fake user from git author */ sauron
949c731b87 commit 2025-08-24 09:56 edit a bit ZCppMainTest/ZtCArray_000.cpp 2025-08-24 09:56:28 +09:00
/* User with id == 0 is a fake user from git author */ sauron
37474d915d commit 2025-08-24 09:27 edit a bit ZCppMainTest/ZtCObjAVL_000.cpp 2025-08-24 09:27:32 +09:00
/* User with id == 0 is a fake user from git author */ sauron
59b9d4869d commit 2025-08-24 01:48 edit a bit ZCppMainTest/ZtCArray_000.cpp 2025-08-24 01:48:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
de408af478 commit 2025-08-24 01:33 add ZCppMainTest/ZtCArray_000.cpp 2025-08-24 01:34:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
dc87b4023a commit 2025-08-24 00:58 edit a bit ZCppMain/ZtCMainChars.H 2025-08-24 00:58:41 +09:00
/* User with id == 0 is a fake user from git author */ sauron
0c436c267f commit 2025-08-24 00:20 add and test ZCppMainTest/ZtCLoadXml_000.cpp 2025-08-24 00:21:09 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ea01f2d0bf commit 2025-08-23 22:12 edit a bit ZCppMain/ZtCObjList.H 2025-08-23 22:12:29 +09:00
/* User with id == 0 is a fake user from git author */ sauron
afba553b08 commit 2025-08-23 21:30 edit a bit ZCppMain/ZMainXhtml.H 2025-08-23 21:30:40 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b18311517a commit 2025-08-22 13:59 edit a bit ZCppMain/ZMainHead.H 2025-08-22 13:59:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b44de5ea96 commit 2025-08-22 13:54 edit a bit ZCppMain/ZMainHead.H 2025-08-22 13:54:30 +09:00
/* User with id == 0 is a fake user from git author */ sauron
fc65fa3a33 commit 2025-08-22 13:46 edit a bit ZCppMain/ZMainHead.H 2025-08-22 13:46:14 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8254919e9a commit 2025-08-22 13:02 add ZCppMain/ZtCLoadXml.H 2025-08-22 13:02:44 +09:00
/* User with id == 0 is a fake user from git author */ sauron
798a45c80d commit 2025-08-22 11:20 add ZCppMain/ZtCLoadXml.H 2025-08-22 11:20:17 +09:00
/* User with id == 0 is a fake user from git author */ sauron
265b18faa7 commit 2025-08-21 23:51 ZfATOI => ZfAtoI, ZfATOL => ZfAtoL etc in ZMainHead.H and ZtCStringEx.H etc 2025-08-21 23:51:38 +09:00
/* User with id == 0 is a fake user from git author */ sauron
b1702c58d4 commit 2025-08-21 14:12 edit a bit in ZMainHead.H 2025-08-21 14:33:10 +09:00
/* User with id == 0 is a fake user from git author */ sauron
8da631d2f4 commit 2025-08-21 14:06 ATOI => AtoI, ATOL => AtoL etc in ZMainHead.H and ZtCStringEx.H 2025-08-21 14:32:45 +09:00
40 changed files with 43923 additions and 9348 deletions

1774
ZCppMain/ZCProcess.H Normal file

File diff suppressed because it is too large Load Diff

4695
ZCppMain/ZCProcess_Linux.H Normal file

File diff suppressed because it is too large Load Diff

3160
ZCppMain/ZCProcess_Win.H Normal file

File diff suppressed because it is too large Load Diff

View File

@ -15,9 +15,9 @@ namespace ZNsMain
enum ZEAVL_INSERT enum ZEAVL_INSERT
{ {
ZEAVL_INSERT_RIGHT = +1, ZEAVL_INSERT_RIGHT = +1 ,
ZEAVL_INSERT_OK = 0, /* 삽입 후의 평형계수가 0 이다. */ ZEAVL_INSERT_OK = 0 , /* 삽입 후의 평형계수가 0 이다. */
ZEAVL_INSERT_LEFT = -1, ZEAVL_INSERT_LEFT = -1 ,
ZEAVL_INSERT_NONE = -2 /* 삽입 안 됨 */ ZEAVL_INSERT_NONE = -2 /* 삽입 안 됨 */
};/* };/*
enum ZEAVL_INSERT*/ enum ZEAVL_INSERT*/
@ -26,7 +26,7 @@ namespace ZNsMain
namespace ZNsEnum*/ namespace ZNsEnum*/
namespace ZNsInterface namespace ZNsIFace
{ {
template<typename TypeArg> class ZtCAVL_BASE template<typename TypeArg> class ZtCAVL_BASE
@ -110,7 +110,7 @@ namespace ZNsMain
class CTypeMy class CTypeMy
{ {
public: public:
typedef CLargeAVL<some param> CLargeMap; typedef CLargeAVL<some param> CLargeMap;
typedef typename CLargeMap::ZCNode::TypeEqual TypeEqual; typedef typename CLargeMap::ZCNode::TypeEqual TypeEqual;
} }
@ -300,7 +300,7 @@ namespace ZNsMain
class ZtCAVL_KeyData ////////////////////////*/ class ZtCAVL_KeyData ////////////////////////*/
}/* }/*
namespace ZNsInterface*/ namespace ZNsIFace*/
/*///////////////////////////////////////////////////////////////////////////////////// /*/////////////////////////////////////////////////////////////////////////////////////
@ -311,8 +311,8 @@ namespace ZNsMain
< <
int, int,
int, int,
ZNsMain::ZNsInterface::ZtCAVL_Multi_BASE<int>, ZNsMain::ZNsIFace::ZtCAVL_Multi_BASE<int>,
ZNsMain::ZNsInterface::ZtCAVL_Multi_NodeBase<int, ZNsMain::ZtCDoubleList<int> > ZNsMain::ZNsIFace::ZtCAVL_Multi_NodeBase<int, ZNsMain::ZtCDoubleList<int> >
> >
VO_CLargeAvl_Multi; ////////////////////////////////// VO_CLargeAvl_Multi; //////////////////////////////////
@ -348,7 +348,7 @@ namespace ZNsMain
typename TEnvVar , //= ZNsMain::ZNsCGI::ZNsBase::ZtCEnvVar<TStringData>, typename TEnvVar , //= ZNsMain::ZNsCGI::ZNsBase::ZtCEnvVar<TStringData>,
typename TEnvVarSet //= NsCPP::ZtCObjAVL<TEnvVar> typename TEnvVarSet //= NsCPP::ZtCObjAVL<TEnvVar>
> >
class ZtCTypeEnvVarSet /*############################################################*/ class ZtCTypeEnvVarSet ##############################################################*/
}/* }/*
namespace NsType*/ namespace NsType*/

628
ZCppMain/ZMainCGI.H Normal file
View File

@ -0,0 +1,628 @@
#ifndef __ZNSMAIN__ZMAIN_CGI_H__
#define __ZNSMAIN__ZMAIN_CGI_H__
#include "ZCppMain/ZMainHead.H"
#include "ZCppMain/ZMainEnc.H"
#include "ZCppMain/ZtCStringEx.H"
#include "ZCppMain/ZtCObjAVL.H"
#include "ZCppMain/ZtCLoadXml.H"
#include "ZCppMain/ZtCLoadDataBlock.H"
namespace ZNsMain
{
namespace ZNsCGI
{
namespace NsInterface
{
}/*
namespace NsInterface*/
namespace NsIFace
{
using namespace NsInterface;
}/*
namespace NsIFace*/
namespace ZNsBase
{
template<typename TStringData> class ZtCEnvVar
{
protected:
TStringData mo_CStrEnvName ;
TStringData mo_CStrEnvValue;
public :
ZtCEnvVar()
{
}/*
ZtCEnvVar()*/
ZtCEnvVar(const TStringData& AR_CStrEnvName)
{
mo_CStrEnvName = AR_CStrEnvName;
}/*
ZtCEnvVar(const TStringData& AR_CStrEnvName)*/
ZtCEnvVar(const TStringData& AR_CStrEnvName, const TStringData& AR_CStrEnvValue)
{
mo_CStrEnvName = AR_CStrEnvName ;
mo_CStrEnvValue = AR_CStrEnvValue;
}/*
ZtCEnvVar(const TStringData& AR_CStrEnvName, const TStringData& AR_CStrEnvValue)*/
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)
{
mo_CStrEnvName = rhs.mo_CStrEnvName ;
mo_CStrEnvValue = rhs.mo_CStrEnvValue; return *this;
}/*
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)*/
ZtCEnvVar<TStringData>& operator=(const TStringData& AR_CStrEnvName)
{
mo_CStrEnvName = AR_CStrEnvName; return *this;
}/*
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)*/
void Set(const TStringData& AR_CStringEnvName, const TStringData& AR_CStringEnvValue)
{
mo_CStrEnvName = AR_CStringEnvName ;
mo_CStrEnvValue = AR_CStringEnvValue;
}/*
void Set(const TStringData& AR_CStringEnvName, const TStringData& AR_CStringEnvValue)*/
TStringData& GetName () {return mo_CStrEnvName ;}
TStringData& GetValue() {return mo_CStrEnvValue;}
const TStringData& GetName () const {return mo_CStrEnvName ;}
const TStringData& GetValue() const {return mo_CStrEnvValue;}
bool operator==(const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName ==rhs.mo_CStrEnvName ;}
bool operator< (const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName < rhs.mo_CStrEnvName ;}
bool operator> (const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName > rhs.mo_CStrEnvName ;}
bool operator==(const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName ==AR_CStrEnvName ;}
bool operator> (const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName > AR_CStrEnvName ;}
bool operator< (const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName < AR_CStrEnvName ;}
public:
};/*
template<typename TStringData> class ZtCEnvVar*/
// CGI <20><><EFBFBD>̺귯<CCBA><EAB7AF><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8>׸<EFBFBD> Http Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ
// <20><EFBFBD><EEBFA1>, class ZtCFileUp <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̴<EFBFBD>.
template< typename TStringData,
typename TFileSize=ZNsMain::ZTypLengthF
>
class ZtCFileUp ///////////////////////////////////
{
public :
typedef TFileSize TypeFileSize;
protected:
TStringData mo_FileName;
TStringData mo_FileType;
TStringData mo_EnviName;
TFileSize ml_FileSize;
public :
ZtCFileUp()
{
ml_FileSize = 0;
};/*
ZtCFileUp()*/
TStringData& GetFileName() {return mo_FileName;}
TStringData& GetFileType() {return mo_FileType;}
TStringData& GetEnviName() {return mo_EnviName;}
const TStringData& GetFileName() const{return mo_FileName;}
const TStringData& GetFileType() const{return mo_FileType;}
const TStringData& GetEnviName() const{return mo_EnviName;}
TFileSize GetDataSize() const
{
return ml_FileSize;
}/*
TFileSize GetDataSize() const*/
void SetDataSize(TFileSize AL_FileSize)
{
ml_FileSize = AL_FileSize;
}/*
void SetDataSize(TFileSize AL_FileSize)*/
void AddDataSize(TFileSize AL_FileSize)
{
ml_FileSize += AL_FileSize;
}/*
void AddDataSize(TFileSize AL_FileSize)*/
TFileSize& GetDataSizeRef()
{
return ml_FileSize;
}/*
TFileSize& GetDataSizeRef()*/
public:
};/*
template< typename TStringData,
typename TFileSize=ZNsMain::ZTypLengthF
>
class ZtCFileUp /////////////////////////////////*/
}/*
namespace ZNsBase*/
template<typename TStringData> void ZftEscapeHtml(TStringData& ARR_CString)
{
ARR_CString.Replace("&", "&amp;" ).
Replace("\"","&quot;").
Replace("<", "&lt;" ).
Replace(">", "&gt;" ).
Replace(" ", "&nbsp;").
/*//////*/ Replace("\n","<br />");
}/*
template<typename TStringData> void ZftEscapeHtml(TStringData& ARR_CString) */
template<typename TStringData> void ZftNL2BR(TStringData& ARR_CStringData)
{
ARR_CStringData.
Replace("\r\n", "<br />").Replace("\n" , "<br />");
}/*
template<typename TStringData> void ZftNL2BR(TStringData& ARR_CStringData) */
namespace ZNsType
{
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCTypeEnvVarSet /*##################################*/
{
public:
typedef TStringData ZCStringData ;
typedef ZNsMain::ZNsCGI::ZNsBase::
ZtCEnvVar<ZCStringData> ZCEnvVar ;
typedef ZNsMain::ZtCObjAVL<ZCEnvVar> 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>
>
class ZtCTypeEnvVarSet ####################################*/
}/*
namespace ZNsType*/
template< typename TStringData, /*############################*/
typename TTypeEnvVarSet =
ZNsType::ZtCTypeEnvVarSet<TStringData>
>
class ZtCLoadSimUrlConfig : protected ZNsMain::ZtCLoadDataBlockOne
< ZtCLoadSimUrlConfig
<
TStringData, TTypeEnvVarSet
>,
TStringData
/*###########*/ > /*############################################*/
{
public :
template< typename TTDerive, typename TTStringData
>
friend class ZNsMain::ZtCLoadDataBlockOne;
public :
typedef typename TTypeEnvVarSet::ZCStringData ZCStringData;
typedef typename TTypeEnvVarSet::ZCEnvVar ZCEnvVar ;
typedef typename TTypeEnvVarSet::ZCEnvVarSet ZCEnvVarSet ;
typedef typename TTypeEnvVarSet::ZCEnvVarNode ZCEnvVarNode;
typedef typename TTypeEnvVarSet::ZCMainChars ZCMainChars ;
typedef typename TTypeEnvVarSet::TypeChar TypeChar ;
typedef typename TTypeEnvVarSet::TypeLength TypeLength ;
public :
typedef ZNsMain::ZtCLoadDataBlockOne
<ZtCLoadSimUrlConfig, TStringData> TypeBase;
private:
ZCEnvVarSet mo_CEnvVarSet ;
ZCStringData mo_CStringName ;
ZCStringData mo_CStringBuff ;
ZCEnvVarNode* mp_CStringNode ;
bool mb_DoFindEqual ; // '=' <20><> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
public :
typedef void (*TypePfOnMeetCEnvVar)
(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff);
private:
static void OnMeetCEnvVar(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff)
{
ZCStringData VO_CStringEnc(AR_CEnvVar.GetValue());
ZNsMain::ZNsEnc::ZftGetSimUrlEnc(RR(VO_CStringEnc));
ARR_CStringBuff
("&")(AR_CEnvVar.GetName())("=")(VO_CStringEnc)("&\r\n");
}/*
static void OnMeetCEnvVar(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff)*/
private:
static void ShowEnvVar(ZCEnvVar& AR_CEnvVar)
{
cout<<"# "<<AR_CEnvVar.GetName()<<" : "<<AR_CEnvVar.GetValue()<<endl;
}/*
static void ShowEnvVar(ZCEnvVar& AR_CEnvVar)*/
/*private:*/
private:
ZNsMain::ZERun ExecBlockIn(const TypeChar* AP_Data, TypeLength AL_Length)
{
if(mb_DoFindEqual)
{
// mp_CStringNode==0 <20≯<EFBFBD> '=' <20><> ã<><C3A3> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>, <20>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// mo_CEnvVarSet <20><> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20>ʾҴٴ<D2B4> <20><><EFBFBD>̴<EFBFBD>. <20>̶<EFBFBD><CCB6><EFBFBD> AP_Data <20><> <20>׳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. (2011-12-18 15:28:00)
if(mp_CStringNode!=0)
{
// mo_CEnvVarSet <20><> <20><> <20>Է<EFBFBD>.
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).
GetValue()(AP_Data, AL_Length) ;
/*+++++++++++++++++++++++++++++++++++++++++++++*/
}/*
if(mp_CStringNode!=0)*/
return ZNsMain::ZERun_OK;
}/*
if(mb_DoFindEqual)*/
TypeLength VL_FindPos = ZCMainChars::
FindPos(AP_Data, "=", AL_Length, 1); // 1 <20><> "=" <20><> <20><><EFBFBD><EFBFBD>
if(VL_FindPos<0)
{
mo_CStringName(AP_Data, AL_Length); return ZNsMain::ZERun_OK;
}/*
if(VL_FindPos<0)*/
mb_DoFindEqual=true; mo_CStringName(AP_Data, VL_FindPos).Trim();
if(mo_CStringName.size()< 1) return ZNsMain::ZERun_OK;
mo_CStringName = ZNsMain::
ZNsEnc::ZftGetSimUrlDec( RR(mo_CStringName) ) ;
if(mo_CStringName.size()< 1) return ZNsMain::ZERun_OK;
mp_CStringNode=mo_CEnvVarSet.AddKey(mo_CStringName);
if(mp_CStringNode ==0) return ZNsMain::ZERun_OK;
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).GetValue()
(
AP_Data +VL_FindPos+1,
AL_Length-VL_FindPos-1
);
///////////////////////////////////////////////////////////
return ZNsMain::ZERun_OK;
}/*
ZNsMain::ZERun ExecBlockIn(const TypeChar* AP_Data, TypeLength AL_Length)*/
ZNsMain::ZERun ExecBlockMatch(const TypeChar* AP_Data, TypeLength AL_Length)
{
// <20>и<EFBFBD> <20><><EFBFBD><EFBFBD> "&" <20><> <20>߰ߵ<DFB0> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ.
if(mp_CStringNode!=0)
{
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).GetValue().Trim();
}/*
if(mp_CStringNode!=0)*/
mp_CStringNode = 0 ;
mo_CStringName = "" ;
mb_DoFindEqual = false;
return ZNsMain::ZERun_OK;
}/*
ZNsMain::ZERun ExecBlockMatch(const TypeChar* AP_Data, TypeLength AL_Length)*/
/*private:*/
public :
ZtCLoadSimUrlConfig()
{
mp_CStringNode=0 ;
mb_DoFindEqual=false;
this->TypeBase::SetSearchCString(ZCStringData("&"));
}/*
ZtCLoadSimUrlConfig()*/
ZCStringData& GetCStringBuff() {return mo_CStringBuff;}
ZCEnvVarSet GetCEnvVarSet () {return mo_CEnvVarSet ;}
const ZCStringData& GetCStringBuff() const{return mo_CStringBuff;}
const ZCEnvVarSet GetCEnvVarSet () const{return mo_CEnvVarSet ;}
void LoadData (const ZCStringData& AR_CStringConf){
LoadData (AR_CStringConf.data(), AR_CStringConf.size()); }
void LoadDataEx(const ZCStringData& AR_CStringConf){
LoadDataEx(AR_CStringConf.data(), AR_CStringConf.size()); }
void LoadData(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)
{
this->TypeBase::LoadData(APC_ConfigData, AI_ConfigLen);
}/*
void LoadData(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)*/
void LoadDataEx(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)
{
this->TypeBase::LoadData(APC_ConfigData, AI_ConfigLen);
mo_CStringName.clear();
mp_CStringNode=0 ;
mb_DoFindEqual=false ;
}/*
void LoadDataEx(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)*/
void clear()
{
mo_CEnvVarSet .clear();
mo_CStringName.clear();
mp_CStringNode=0 ;
mb_DoFindEqual=false ;
}/*
void clear()*/
long GetLongValue(const ZCStringData& AR_CStringName)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0; return VP_CEnvVarNode->GetData().GetValue().GetLong();
}/*
long GetLongValue(const ZCStringData& AR_CStringName)*/
long GetLongValue(const ZCStringData& AR_CStringName, long& ARRL_Long)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return ARRL_Long; return ARRL_Long=VP_CEnvVarNode->GetData().GetValue().GetLong();
}/*
long GetLongValue(const ZCStringData& AR_CStringName, long& ARRL_Long)*/
ZCStringData& GetCStringValue(const ZCStringData& AR_CStringName, ZCStringData& ARR_CStringValue)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return ARR_CStringValue;
return ARR_CStringValue=VP_CEnvVarNode->GetData().GetValue();
}/*
ZCStringData& GetCStringValue(const ZCStringData& AR_CStringName, ZCStringData& ARR_CStringValue)*/
ZCStringData GetCStringValue(const ZCStringData& AR_CStringName)
{
ZCStringData VO_ValueCStr; return GetCStringValue(AR_CStringName, RR(VO_ValueCStr));
}/*
ZCStringData GetCStringValue(const ZCStringData& AR_CStringName)*/
ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName)
{
ZCEnvVarNode* VP_CEnvVarNode =
mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0;
return const_cast<ZCStringData*>(
&VP_CEnvVarNode->GetData().GetValue());
}/*
ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName)*/
const ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName) const
{
ZCEnvVarNode* VP_CEnvVarNode =
mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0;
return &VP_CEnvVarNode->GetData().GetValue();
}/*
const ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName) const*/
bool AddCEnvVar(const ZCEnvVar& AR_CEnvVar)
{
return mo_CEnvVarSet.AddData(AR_CEnvVar);
}/*
bool AddCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool AddCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
}/*
bool AddCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
bool AddCEnvVarLong(const ZCStringData& AR_NameCStr, long AL_LongValue)
{
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, ZCStringData(AL_LongValue)));
}/*
bool AddCEnvVarLong(const ZCStringData& AR_NameCStr, long AL_LongValue)*/
bool CutCEnvVar(const ZCStringData& AR_NameCStr)
{
return mo_CEnvVarSet.template DeleteKey<const ZCStringData&>(AR_NameCStr);
}/*
bool CutCEnvVar(const ZCStringData& AR_NameCStr)*/
bool AddEditCEnvVar(const ZCEnvVar& AR_CEnvVar) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>.
{
CutCEnvVar(AR_CEnvVar.GetName()); return mo_CEnvVarSet.AddData(AR_CEnvVar);
}/*
bool AddEditCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool AddEditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
CutCEnvVar(AR_NameCStr); return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
}/*
bool AddEditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
bool EditCEnvVar(const ZCEnvVar& AR_CEnvVar) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
{
if(CutCEnvVar(AR_CEnvVar.GetName())) return mo_CEnvVarSet.AddData(AR_CEnvVar); return false;
}/*
bool EditCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool EditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
if(CutCEnvVar(AR_NameCStr))
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
return false;
}/*
bool EditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
void Serialize(ZCStringData& ARR_SerialCStr, TypePfOnMeetCEnvVar APF_OnMeetCEnvVar)
{
mo_CEnvVarSet.template IterInOrder<TypePfOnMeetCEnvVar, ZCStringData&>
(
APF_OnMeetCEnvVar, RR(ARR_SerialCStr)
);
//////////////////////////////////////////////////////////////////////
}/*
void Serialize(ZCStringData& ARR_SerialCStr, TypePfOnMeetCEnvVar APF_OnMeetCEnvVar)*/
void Serialize(ZCStringData& ARR_SerialCStr) /////////////////////////////
{
mo_CEnvVarSet.template IterInOrder<TypePfOnMeetCEnvVar, ZCStringData&>
(
OnMeetCEnvVar, RR(ARR_SerialCStr)
);
//////////////////////////////////////////////////////////////////////
}/*
void Serialize(ZCStringData& ARR_SerialCStr)*/
void Serialize()
{
Serialize( RR(this->mo_CStringBuff="") );
}/*
void Serialize()*/
template<typename TFunctor> void IterEnvSet(TFunctor AO_Functor)
{
mo_CEnvVarSet.template IterInOrder<TFunctor>(AO_Functor);
}/*
template<typename TFunctor> void IterEnvSet(TFunctor AO_Functor)*/
void IterEnvSet()
{
IterEnvSet(&ShowEnvVar); // for debug
}/*
void IterEnvSet()*/
public:
};/*
template< typename TStringData, ##########################
typename TTypeEnvVarSet =
ZNsType::ZtCTypeEnvVarSet<TStringData>
>
class ZtCLoadSimUrlConfig ################################*/
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCLoadXmlInfo /*####################################*/
{
public :
typedef TStringData ZCStringData;
typedef typename ZCStringData::TypeLength TypeLength;
typedef ZNsMain::ZNsType::ZtCTypeXmlInfo< ///////////
ZCStringData
/*/////////*/ > ZCTypeXmlInfo; //////////////////////
typedef ZNsMain::ZtCXmlInfo<ZCTypeXmlInfo> ZCXmlInfo;
typedef ZNsMain::ZNsView::ZtCViewLoadXmlOfXmlInfo<
ZCXmlInfo
/*/////////*/ > ZCViewLoadXml; //////////////////////
typedef ZNsMain::ZtCLoadXml<ZCStringData> ZCLoadXml;
/*public :*/
private:
ZCViewLoadXml m_oCViewLoad;
ZCLoadXml m_oCLoadXml ;
public :
ZCLoadXml& GetCLoadXml(){return m_oCLoadXml ;}
ZCXmlInfo& GetCXmlInfo(){return m_oCViewLoad.GetCXmlInfo();}
ZNsMain::ZERunEx Exec(const char* APC_XmlData, TypeLength AI_Length)
{
m_oCViewLoad.clear();
m_oCLoadXml .clear(); return m_oCLoadXml.
ExecAll(RR(m_oCViewLoad), APC_XmlData, AI_Length);
}/*
ZNsMain::ZERunEx Exec(const char* APC_XmlData, TypeLength AI_Length)*/
ZNsMain::ZERunEx Exec(const ZCStringData& ArgrXmlData)
{
return Exec(ArgrXmlData.data(), ArgrXmlData.size());
}/*
ZNsMain::ZERunEx Exec(const ZCStringData& ArgrXmlData)*/
template<typename TMainChars>
ZNsMain::ZERunEx Exec(const TMainChars& AR_CMainChars)
{
return Exec(AR_CMainChars.data(), AR_CMainChars.size());
}/*
template<typename TMainChars>
ZNsMain::ZERunEx Exec(const TMainChars& AR_CMainChars)*/
public :
};/*
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCLoadXmlInfo ######################################*/
}/*
namespace ZNsCGI*/
}/*
namespace ZNsMain */
#endif //__ZNSMAIN__ZMAIN_CGI_H__

1747
ZCppMain/ZMainEnc.H Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@

#ifndef __ZCPPMAIIN__ZMAINXHTML_H__
#define __ZCPPMAIIN__ZMAINXHTML_H__
namespace ZNsMain
{
template<typename TStringData> TStringData& ZftConvertXhtml(TStringData& ARR_CString)
{
/* 데이타를 그대로 클라이언트에 전송하면
HTML 태그와 혼동될 수 있는데 이를 방지하기 위해
적절히 인코딩한다.
*/
return ARR_CString.
Replace("&" ,"&amp;" ). Replace("<" ,"&lt;" ).
Replace(">" ,"&gt;" ). Replace(" " ,"&nbsp;" ).
Replace("\n","<br />" );
}/*
template<typename TStringData> static TStringData& ConvertXhtml(TStringData& ARR_CString) */
template<typename TStringData> TStringData& ZftConvertXhtmlAtt(TStringData& ARR_CString)
{
// X(H)TML 의 속성에 올 수 있는 값으로 인코딩한다.
return ARR_CString.
Replace("&" ,"&amp;" ). Replace("<" ,"&lt;" ).
Replace(">" ,"&gt;" ). Replace("\"","&quot;" ).
Replace("\r","&#xA;" ). Replace("\n","&#xD;" );
}/*
template<typename TStringData> TStringData& ZftConvertXhtmlAtt(TStringData& ARR_CString) */
}/*
namespace ZNsMain*/
#endif // __ZCPPMAIIN__ZMAINXHTML_H__

File diff suppressed because it is too large Load Diff

4037
ZCppMain/ZtCLinkList.H Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ namespace ZNsMain
class ZtCLoadDataBlock; /////////////////// class ZtCLoadDataBlock; ///////////////////
namespace ZNsInterface namespace ZNsIFace
{ {
template<typename TStringData> class ZtCChildLoadDataBlock template<typename TStringData> class ZtCChildLoadDataBlock
@ -88,7 +88,7 @@ namespace ZNsMain
template<typename TStringData> class ZtCChildLoadDataBlock */ template<typename TStringData> class ZtCChildLoadDataBlock */
}/* }/*
namespace ZNsInterface*/ namespace ZNsIFace*/
/* 찾은 2 개 문자열 사이에 있는 문자열 블럭에 대하여 특정한 처리를 해준다. /* 찾은 2 개 문자열 사이에 있는 문자열 블럭에 대하여 특정한 처리를 해준다.
@ -133,7 +133,7 @@ namespace ZNsMain
}/* }/*
if(mb_DoFindStart==true)*/ if(mb_DoFindStart==true)*/
return GetChildObj.ExecBlockOut(APC_Data, AL_Length); return GetChildObj().ExecBlockOut(APC_Data, AL_Length);
}/* }/*
_NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length)*/ _NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length)*/
@ -343,9 +343,8 @@ namespace ZNsMain
template<typename THelpType> ZERun LoadData( template<typename THelpType> ZERun LoadData(
const TypeChar* APC_Data, TypeLength AL_Length, THelpType AO_CHelpType) const TypeChar* APC_Data, TypeLength AL_Length, THelpType AO_CHelpType)
{ {
typedef ZNsMain:: typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef;
ZtCCheckRef<THelpType> ZCCheckRef; typedef typename ZCCheckRef::TypeData TypeObject;
typedef ZCCheckRef::TypeData TypeObject;
bool VB_IsOK =false ; bool VB_IsOK =false ;
ZTypLength VL_StartPos=0 ; ZTypLength VL_StartPos=0 ;
@ -620,7 +619,7 @@ namespace ZNsMain
{ {
if(mb_DoFindStart==false) if(mb_DoFindStart==false)
{ {
VB_IsOK=ZCMainChars::FindPosReady VB_IsOK = ZCMainChars::FindPosReady
<ZtCExamReadyExec&, char, TStringData> <ZtCExamReadyExec&, char, TStringData>
( (
*this *this
@ -634,11 +633,11 @@ namespace ZNsMain
); );
////////////////////////////////////////// //////////////////////////////////////////
if(VB_IsOK==true) mb_DoFindStart=true; if(VB_IsOK) mb_DoFindStart= true;
} }
else // mb_DoFindStart==true else // mb_DoFindStart==true
{ {
VB_IsOK=ZCMainChars::FindPosReady VB_IsOK = ZCMainChars::FindPosReady
<ZtCExamReadyExec&, char, TStringData> <ZtCExamReadyExec&, char, TStringData>
( (
*this *this
@ -652,11 +651,11 @@ namespace ZNsMain
); );
////////////////////////////////////////// //////////////////////////////////////////
if(VB_IsOK==true) mb_DoFindStart=false; if(VB_IsOK) mb_DoFindStart= false;
}/* }/*
else // mb_DoFindStart==true*/ else // mb_DoFindStart==true*/
} }
while(VB_IsOK==true); while(VB_IsOK);
}/* }/*
void LoadData(const char* APC_Data, ZTypLength AL_Length)*/ void LoadData(const char* APC_Data, ZTypLength AL_Length)*/
@ -689,7 +688,7 @@ namespace ZNsMain
); );
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
if(VB_IsOK==true) mb_DoFindStart=true; if(VB_IsOK) mb_DoFindStart=true;
} }
else // mb_DoFindStart==true else // mb_DoFindStart==true
{ {
@ -708,11 +707,11 @@ namespace ZNsMain
); );
////////////////////////////////////////////// //////////////////////////////////////////////
if(VB_IsOK==true) mb_DoFindStart=false; if(VB_IsOK) mb_DoFindStart=false;
}/* }/*
else // mb_DoFindStart==true */ else // mb_DoFindStart==true */
} }
while(VB_IsOK==true); while(VB_IsOK);
}/* }/*
template<typename THelpType> void LoadData( template<typename THelpType> void LoadData(
const char* APC_Data, ZTypLength AL_Length, THelpType AO_CHelpType) */ const char* APC_Data, ZTypLength AL_Length, THelpType AO_CHelpType) */
@ -967,7 +966,7 @@ namespace ZNsMain
namespace ZNsInterface namespace ZNsIFace
{ {
template<typename TStringData> class ZtCParentLoadDataBlockArr template<typename TStringData> class ZtCParentLoadDataBlockArr
@ -1037,7 +1036,7 @@ namespace ZNsMain
template<typename TStringData> class ZtCParentLoadDataBlockArr */ template<typename TStringData> class ZtCParentLoadDataBlockArr */
}/* }/*
namespace ZNsInterface*/ namespace ZNsIFace*/
/*/////////////////////////////////////////////////////////////////////////////// /*///////////////////////////////////////////////////////////////////////////////
@ -1451,13 +1450,13 @@ namespace ZNsMain
namespace ZNsType*/ namespace ZNsType*/
template< typename TDerive, template< typename TDerive, ////////////////////
typename TStringData typename TStringData
> >
class ZtCLoadDataBlockOne; class ZtCLoadDataBlockOne; ///////////////////////
namespace ZNsInterface namespace ZNsIFace
{ {
template<typename TStringData> class ZtCChildLoadDataBlockOne template<typename TStringData> class ZtCChildLoadDataBlockOne
@ -1541,7 +1540,7 @@ namespace ZNsMain
template<typename TStringData> class ZtCChildLoadDataBlockOne */ template<typename TStringData> class ZtCChildLoadDataBlockOne */
}/* }/*
namespace ZNsInterface*/ namespace ZNsIFace*/
/* ZtCLoadDataBlockArr<> 클래스 템플릿에서 한 개의 /* ZtCLoadDataBlockArr<> 클래스 템플릿에서 한 개의

4169
ZCppMain/ZtCLoadXml.H Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -15,13 +15,13 @@ namespace ZNsMain
■ 이 AVL tree 는 각 노드가 트리 구조를 이루며, 동시에 이중 원형 연결리스트를 이루고 있다. ■ 이 AVL tree 는 각 노드가 트리 구조를 이루며, 동시에 이중 원형 연결리스트를 이루고 있다.
자료를 기본적으로 오름차순 정렬한다. 자료를 기본적으로 오름차순 정렬한다.
■ Type 자료형에는 <,>,== 연산이 가능해야 한다. TType 자료형에는 <,>,== 연산이 가능해야 한다.
■ 어떤 클래스에 비교연산자를 정의할 때 bool operator>(const CStringHash& rhs) const 와 같 ■ 어떤 클래스에 비교연산자를 정의할 때 bool operator>(const CStringHash& rhs) const 와 같
이 하면 인수에도 const, 멤버함수에도 const 를 잊지 말 것. 이 하면 인수에도 const, 멤버함수에도 const 를 잊지 말 것.
■ 접미어 Key 가 붙어있는 멤버 함수는 Type 보다는 크기가 작은 어떤 자료형이다. 삽입, 삭제 ■ 접미어 Key 가 붙어있는 멤버 함수는 TType 보다는 크기가 작은 어떤 자료형이다. 삽입, 삭제
시에 메모리를 절약하기 위해서 사용한다. Type 자료형과 Key 자료형 사이에는 <,>,==,= 의 연 시에 메모리를 절약하기 위해서 사용한다. TType 자료형과 Key 자료형 사이에는 <,>,==,= 의 연
산이 가능해야 한다. 산이 가능해야 한다.
■ multi set 으로 활용하는 코드는 MainAVL.H 파일의 주석에 예시하였다. typename TNodeBase 를 ■ multi set 으로 활용하는 코드는 MainAVL.H 파일의 주석에 예시하였다. typename TNodeBase 를
@ -30,19 +30,19 @@ namespace ZNsMain
/////////////////////////////////////////////////////////////////////////////////////////*/ /////////////////////////////////////////////////////////////////////////////////////////*/
template< typename Type , template< typename TType ,
typename TTypArg =const Type& , typename TTypArg = const TType& ,
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> , typename TTypBase = ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> , typename TNodeBase = ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
typename TAlloc =ZNsMain::ZCAllocator , typename TAlloc = ZNsMain::ZCAllocator ,
typename TSize =ZNsMain::ZTypLong , typename TSize = ZNsMain::ZTypLong ,
typename TCompare =ZNsMain::ZNsFunc::ZtCCompare<TTypArg, TTypArg, false>, typename TCompare = ZNsMain::ZtCCompare<TTypArg, TTypArg, false>,
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, true > typename TMoveObj = ZNsMain::ZtCMoveObj<TType , TTypArg, true >
> >
class ZtCObjAVL : public TTypBase /////////////////////////////////////////////////////// class ZtCObjAVL : public TTypBase ///////////////////////////////////////////////////////
{ {
public: public:
typedef Type TypeData ; typedef TType TypeData ;
typedef TTypArg TypeArg ; typedef TTypArg TypeArg ;
typedef TTypBase TypeBase ; typedef TTypBase TypeBase ;
typedef TNodeBase TypeNodeBase; typedef TNodeBase TypeNodeBase;
@ -64,7 +64,7 @@ namespace ZNsMain
ZCNode* mp_RighNode; /* 오른쪽 노드 */ ZCNode* mp_RighNode; /* 오른쪽 노드 */
ZCNode* mp_HighNode; /* 상위 노드 */ ZCNode* mp_HighNode; /* 상위 노드 */
Type mo_Type ; TType mo_Data ;
int mi_Balance ; int mi_Balance ;
/* 오른쪽 노드에 삽입될 때마다 mi_Balance 는 1 씩 증가하고 /* 오른쪽 노드에 삽입될 때마다 mi_Balance 는 1 씩 증가하고
@ -224,15 +224,16 @@ namespace ZNsMain
}/* }/*
bool IsFullNode() const*/ bool IsFullNode() const*/
TTypArg GetData() const typename ZtCRef<TypeArg>::TypeConst GetData() const
{ {
return mo_Type; return mo_Data;
}/* }/*
TTypArg GetData() const*/ typename ZtCRef<TypeArg>::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==(TypeArg AR_Type) const{return mo_Data==AR_Type;}
bool operator< (TTypArg AR_Type) const{return mo_Type< AR_Type;} bool operator> (TypeArg AR_Type) const{return mo_Data> AR_Type;}
bool operator< (TypeArg AR_Type) const{return mo_Data< AR_Type;}
template<typename TFunctor> static void IterInOrder (ZCNode* AP_Node, TFunctor AO_Functor) 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); 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); ZCNode::template IterInOrder<TFunctor>(AP_Node->mp_RighNode, AO_Functor);
}/* }/*
@ -252,7 +253,7 @@ namespace ZNsMain
{ {
if(AP_Node!=0) 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_LeftNode, AO_Functor);
ZCNode::template IterPreOrder<TFunctor>(AP_Node->mp_RighNode, 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_LeftNode, AO_Functor);
ZCNode::template IterPostOrder<TFunctor>(AP_Node->mp_RighNode, 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)*/ if(AP_Node!=0)*/
}/* }/*
@ -285,7 +286,7 @@ namespace ZNsMain
(AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj); (AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj);
{ {
ZNsMain::ZtCTypeData<TFunctor>:: 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> ZCNode::template IterInOrder<TFunctor, THelpObj>
(AP_Node->mp_RighNode, AO_Functor, AR_HelpObj); (AP_Node->mp_RighNode, AO_Functor, AR_HelpObj);
@ -303,7 +304,7 @@ namespace ZNsMain
if(AP_Node!=0) if(AP_Node!=0)
{ {
ZNsMain::ZtCTypeData<TFunctor>:: ZNsMain::ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(AP_Node->mo_Type, AR_HelpObj); GetObjRef(AO_Functor)(AP_Node->mo_Data, AR_HelpObj);
ZCNode::template IterPreOrder ZCNode::template IterPreOrder
<TFunctor, THelpObj>(AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj); <TFunctor, THelpObj>(AP_Node->mp_LeftNode, AO_Functor, AR_HelpObj);
@ -328,7 +329,7 @@ namespace ZNsMain
( AP_Node->mp_RighNode, AO_Functor, AR_HelpObj ); ( AP_Node->mp_RighNode, AO_Functor, AR_HelpObj );
ZNsMain::ZtCTypeData<TFunctor>:: 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)*/ if(AP_Node!=0)*/
}/* }/*
@ -838,9 +839,9 @@ namespace ZNsMain
ZCNode* VP_Temp=rhs.mp_HeadNode ; ZCNode* VP_Temp=rhs.mp_HeadNode ;
ZCNode* VP_Tail=rhs.mp_HeadNode->mp_PrevNode; 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; if(VP_Temp==VP_Tail) return;
@ -852,16 +853,16 @@ namespace ZNsMain
ZtCObjAVL& operator=(const ZtCObjAVL& rhs) ZtCObjAVL& operator=(const ZtCObjAVL& rhs)
{ {
if(this==&rhs) {return ;} if(this==&rhs) {return *this;}
DeleteAll(); if(rhs.mp_HeadNode==0){ return; } DeleteAll(); if(rhs.mp_HeadNode==0){ return *this;}
ZCNode* VP_Temp=rhs.mp_HeadNode; ZCNode* VP_Temp=rhs.mp_HeadNode;
ZCNode* VP_Tail=rhs.mp_HeadNode->mp_PrevNode; 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 *this; if(VP_Temp==VP_Tail) return *this;
@ -986,7 +987,7 @@ namespace ZNsMain
do /**/ do /**/
{ {
DeleteData(VP_Temp->mo_Type); DeleteData(VP_Temp->mo_Data);
if(VP_Temp==VP_Tail) return *this; if(VP_Temp==VP_Tail) return *this;
@ -1060,11 +1061,11 @@ namespace ZNsMain
do /*#####*/ do /*#####*/
{ {
/* 아래 줄에서 VP_Temp->mo_Type 을 받는 인수는 /* 아래 줄에서 VP_Temp->mo_Data 을 받는 인수는
복사로 받거나 const Type& 으로 받아야 한다. */ 복사로 받거나 const TType& 으로 받아야 한다. */
ZNsMain::ZtCTypeData<TFunctor>:: 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; if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
} }
@ -1082,11 +1083,11 @@ namespace ZNsMain
do /*#####*/ do /*#####*/
{ {
/* 아래 줄에서 VP_Temp->mo_Type 을 받는 인수는 /* 아래 줄에서 VP_Temp->mo_Data 을 받는 인수는
복사로 받거나 const Type& 으로 받아야 한다. */ 복사로 받거나 const TType& 으로 받아야 한다. */
ZNsMain::ZtCTypeData<TFunctor>:: 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; if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
} }
@ -1106,7 +1107,7 @@ namespace ZNsMain
do /*#####*/ do /*#####*/
{ {
ZNsMain::ZtCTypeData<TFunctor>:: 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; if(VP_Temp==VP_Tail) return; VP_Temp=VP_Temp->mp_NextNode;
} }
@ -1143,12 +1144,21 @@ namespace ZNsMain
{ {
if(mp_RootNode==0) if(mp_RootNode==0)
{ {
mp_RootNode=new ZCNode ; mp_RootNode = new ZCNode ;
mp_HeadNode=mp_RootNode ; mp_HeadNode = mp_RootNode ;
ZCNode::MakeRing(mp_HeadNode, mp_HeadNode);
mp_RootNode->mo_Type=AR_Type;
++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 else // mp_RootNode!=0
{ {
@ -1168,7 +1178,7 @@ namespace ZNsMain
ZCNode::MakeRing(mp_HeadNode, mp_HeadNode); 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; /*///////////////////*/ return mp_RootNode; /*///////////////////*/
} }
@ -1197,7 +1207,7 @@ namespace ZNsMain
(void)CutNode(VP_FindNode); (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); (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 ZCNode* FindData(TTypArg AR_Type) const
{ {
/* mp_RootNode 부터 하위 노드로 순회하면서 /* mp_RootNode 부터 하위 노드로 순회하면서
mo_Type 를 가지는 노드를 찾는다. */ mo_Data 를 가지는 노드를 찾는다. */
return FindData(AR_Type, mp_RootNode); return FindData(AR_Type, mp_RootNode);
}/* }/*
@ -1315,7 +1325,7 @@ namespace ZNsMain
ZCNode* FindData(TTypArg AR_Type, ZCNode* AP_StartNode) const ZCNode* FindData(TTypArg AR_Type, ZCNode* AP_StartNode) const
{ {
/* AP_StartNode 부터 하위 노드로 순회하면서 /* AP_StartNode 부터 하위 노드로 순회하면서
mo_Type 를 가지는 노드를 찾는다. */ mo_Data 를 가지는 노드를 찾는다. */
#ifdef _DEBUG #ifdef _DEBUG
@ -1335,17 +1345,17 @@ namespace ZNsMain
while(AP_StartNode!=0) while(AP_StartNode!=0)
{ {
if(AP_StartNode->mo_Type==AR_Type) if (AP_StartNode->mo_Data == AR_Type)
{ {
return AP_StartNode; 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 else
{ {
AP_StartNode=AP_StartNode->mp_RighNode; AP_StartNode = AP_StartNode->mp_RighNode;
}/* }/*
else*/ else*/
}/* }/*
@ -1402,7 +1412,7 @@ namespace ZNsMain
■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다. ■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다.
FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가 FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가
AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기 AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Type 과 TKey 에 대한 비 의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Data 과 TKey 에 대한 비
교 연산이 정의되어 있어야 한다. 교 연산이 정의되어 있어야 한다.
//////////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////////*/
@ -1425,9 +1435,9 @@ namespace ZNsMain
while(AP_StartNode!=0) 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; AP_StartNode=AP_StartNode->mp_LeftNode;
else else
AP_StartNode=AP_StartNode->mp_RighNode; AP_StartNode=AP_StartNode->mp_RighNode;
@ -1449,7 +1459,7 @@ namespace ZNsMain
■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다. ■ AP_StartNode 부터 하위 노드로 순회하면서 AR_Key 를 가지는 노드를 찾는다.
FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가 FindData(TTypArg AR_Type,ZCNode* AP_StartNode) 같은 함수는 찾으려는 object 가
AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기 AR_Type 이 크기가 큰 object 일 수 있는데, 이를 피하기 위해 그 보다 작은 크기
의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Type 과 TKey 에 대한 비 의 자료형 TKey 로부터 해당 데이타를 찾는다. 물론 mo_Data 과 TKey 에 대한 비
교 연산이 정의되어 있어야 한다. 교 연산이 정의되어 있어야 한다.
//////////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////////*/
@ -1472,9 +1482,9 @@ namespace ZNsMain
while(AP_StartNode!=0) 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; AP_StartNode=AP_StartNode->mp_LeftNode;
else else
AP_StartNode=AP_StartNode->mp_RighNode; AP_StartNode=AP_StartNode->mp_RighNode;
@ -1637,7 +1647,7 @@ namespace ZNsMain
if(CB_IsLess)*/ if(CB_IsLess)*/
// AR_Node.mo_Type>AR_Type) // AR_Node.mo_Data>AR_Type)
if(AR_Node.mp_LeftNode==0) if(AR_Node.mp_LeftNode==0)
{ {
@ -1775,7 +1785,7 @@ namespace ZNsMain
if(CB_IsLess)*/ if(CB_IsLess)*/
// AR_Node.mo_Type>AR_Type // AR_Node.mo_Data>AR_Type
if(AR_Node.mp_LeftNode==0) if(AR_Node.mp_LeftNode==0)
{ {
@ -1921,7 +1931,7 @@ namespace ZNsMain
if(CB_IsLess)*/ if(CB_IsLess)*/
// AR_Node.mo_Type>AR_Type) // AR_Node.mo_Data>AR_Type)
if(AR_Node.mp_LeftNode==0) if(AR_Node.mp_LeftNode==0)
{ {
@ -2002,10 +2012,10 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) if(TypeMoveObj::ZEUseMoveObj>0)
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Type); TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
else else
#endif #endif
VP_NewNode->mo_Type=AR_Type; VP_NewNode->mo_Data=AR_Type;
return JoinBefore(AP_StdNode, VP_NewNode); return JoinBefore(AP_StdNode, VP_NewNode);
}/* }/*
@ -2014,14 +2024,9 @@ namespace ZNsMain
template<typename TKey> template<typename TKey>
inline ZCNode* JoinBeforeKey(ZCNode* AP_StdNode, TKey AR_Key) inline ZCNode* JoinBeforeKey(ZCNode* AP_StdNode, TKey AR_Key)
{ {
ZCNode* VP_NewNode=new ZCNode; ZCNode* VP_NewNode = new ZCNode;
#if(_CODE_NEW_) VP_NewNode->mo_Data = AR_Key ;
if(TypeMoveObj::ZEUseMoveObj>0)
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Key);
else
#endif
VP_NewNode->mo_Type=AR_Key;
return JoinBefore(AP_StdNode, VP_NewNode); return JoinBefore(AP_StdNode, VP_NewNode);
}/* }/*
@ -2060,10 +2065,10 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) if(TypeMoveObj::ZEUseMoveObj>0)
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Type); TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
else else
#endif #endif
VP_NewNode->mo_Type=AR_Type; VP_NewNode->mo_Data=AR_Type;
return JoinAfter(AP_StdNode, VP_NewNode); return JoinAfter(AP_StdNode, VP_NewNode);
}/* }/*
@ -2072,14 +2077,9 @@ namespace ZNsMain
template<typename TKey> template<typename TKey>
inline ZCNode* JoinAfterKey(ZCNode* AP_StdNode, TKey AR_Key) inline ZCNode* JoinAfterKey(ZCNode* AP_StdNode, TKey AR_Key)
{ {
ZCNode* VP_NewNode=new ZCNode; ZCNode* VP_NewNode = new ZCNode;
#if(_CODE_NEW_) VP_NewNode->mo_Data= AR_Key ;
if(TypeMoveObj::ZEUseMoveObj>0)
TypeMoveObj::Exec(VP_NewNode->mo_Type, AR_Key);
else
#endif
VP_NewNode->mo_Type=AR_Key;
return JoinAfter(AP_StdNode, VP_NewNode); return JoinAfter(AP_StdNode, VP_NewNode);
}/* }/*
@ -2362,65 +2362,21 @@ namespace ZNsMain
}/* }/*
else // AP_Node->mi_Balance==-1*/ else // AP_Node->mi_Balance==-1*/
}/* }/*
ZCNode* Balance(ZCNode* AP_Node,int AI_AddState)*/ ZCNode* Balance(ZCNode* AP_Node, int AI_AddState)*/
private: private:
};/* };/*
template< typename Type , template< typename TType ,
typename TTypArg =const Type& , typename TTypArg = const TType& ,
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> , typename TTypBase = ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> ,
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> , typename TNodeBase = ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> ,
typename TAlloc =ZNsMain::ZCAllocator , typename TAlloc = ZNsMain::ZCAllocator ,
typename TSize =ZNsMain::ZTypLong , typename TSize = ZNsMain::ZTypLong ,
typename TCompare =ZNsMain::ZNsFunc::ZtCCompare<TTypArg, TTypArg, false>, typename TCompare = ZNsMain::ZtCCompare<TTypArg, TTypArg, false>,
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, true > typename TMoveObj = ZNsMain::ZtCMoveObj<TType , TTypArg, true >
> >
class ZtCObjAVL /////////////////////////////////////////////////////////////////////*/ class ZtCObjAVL /////////////////////////////////////////////////////////////////////*/
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamAVL
{
public:
static void ShowDataInNode(int AI_Data)
{
cout<<"* Node Data : "<<AI_Data<<endl;
}/*
static void ShowDataInNode(int AI_Data)*/
static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
{
using namespace std ;
using namespace ZNsMain;
ZtCObjAVL<int, int> VO_CObjAVL;
VO_CObjAVL.AddData(10);
VO_CObjAVL.AddData(20);
VO_CObjAVL.AddData(30);
VO_CObjAVL.AddData(40);
VO_CObjAVL.AddData(9 );
cout<<"# In Order" <<endl; VO_CObjAVL.IterInOrder (&ShowDataInNode);
cout<<"# Post Order"<<endl; VO_CObjAVL.IterPostOrder(&ShowDataInNode);
cout<<"# Pre Order" <<endl; VO_CObjAVL.IterPreOrder (&ShowDataInNode);
return 0;
}/*
static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamAVL*/
}/*
namespace ZNsExam*/
}/* }/*
namespace ZNsMain */ namespace ZNsMain */
@ -2466,31 +2422,32 @@ namespace ZNsMain
using ZNsMain::ZtCObjAVL; using ZNsMain::ZtCObjAVL;
namespace ZNsTmplParam namespace ZNsTmplParam
{ {
template< typename Type , template< typename TType ,
typename TTypArg =const Type& , typename TTypArg =const TType& ,
typename TCompare =ZNsMain::ZNsFunc ::ZtCCompare<TTypArg, TTypArg, true>, typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, true>,
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> , typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg>,
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> , typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg>,
typename TAlloc =ZNsMain::ZCAllocator , typename TAlloc =ZNsMain::ZCAllocator ,
typename TSize =long , typename TSize =long ,
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, false> typename TMoveObj =ZNsMain::ZtCMoveObj<TType, TTypArg, false>
> >
class ZtCParamObjAVL_Compare ////////////////////////////////////////////////////////// class ZtCParamObjAVL_Compare //////////////////////////////////////////////////////////
{ {
public: typedef ZNsMain::ZtCObjAVL< 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 , template< typename TType ,
typename TTypArg =const Type& , typename TTypArg =const TType& ,
typename TCompare =ZNsMain::ZNsFunc ::ZtCCompare<TTypArg, TTypArg, true>, typename TCompare =ZNsMain::ZtCCompare<TTypArg, TTypArg, true>,
typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg> , typename TTypBase =ZNsMain::ZNsIFace::ZtCAVL_BASE <TTypArg>,
typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg> , typename TNodeBase =ZNsMain::ZNsIFace::ZtCAVL_NodeBase<TTypArg>,
typename TAlloc =ZNsMain::ZCAllocator , typename TAlloc =ZNsMain::ZCAllocator ,
typename TSize =long , typename TSize =long ,
typename TMoveObj =ZNsMain::ZNsFunc::ZtCMoveObj<TTypArg, TTypArg, false> typename TMoveObj =ZNsMain::ZtCMoveObj<TType, TTypArg, false>
> >
class ZtCParamObjAVL_Compare ////////////////////////////////////////////////////////*/ class ZtCParamObjAVL_Compare ////////////////////////////////////////////////////////*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -66,42 +66,42 @@ namespace ZNsMain
<typename TTypFuncIsMore, typename TTypFuncIsLess> <typename TTypFuncIsMore, typename TTypFuncIsLess>
static void QuickSort static void QuickSort
( (
TTypFuncIsMore APF_IsMore , TTypFuncIsMore APF_IsMore ,
TTypFuncIsLess APF_IsLess , TTypFuncIsLess APF_IsLess ,
ZCLink* APA_LinkPtrArr[], ZCLink* APA_LinkPtrArr[],
TypeSize AL_FirstIndex , TypeSize AL_HeadIndex ,
TypeSize AL_LastIndex TypeSize AL_TailIndex
) )
/*##################################################*/ /*##################################################*/
{ {
if(AL_FirstIndex<AL_LastIndex) if(AL_HeadIndex<AL_TailIndex)
{ {
TypeSize i=AL_FirstIndex ; TypeSize i = AL_HeadIndex ;
TypeSize j=AL_LastIndex+1 ; TypeSize j = AL_TailIndex+1 ;
ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i]; ZCLink* VP_PivotLinkPtr = APA_LinkPtrArr[i];
do ////// do //////
{ {
while(AL_LastIndex >i && APF_IsLess(APA_LinkPtrArr[++i]->GetData(), VP_PivotLinkPtr->GetData())); while(AL_TailIndex >i && APF_IsLess(APA_LinkPtrArr[++i]->GetData(), VP_PivotLinkPtr->GetData()) );
while(AL_FirstIndex<j && APF_IsMore(APA_LinkPtrArr[--j]->GetData(), VP_PivotLinkPtr->GetData())); while(AL_HeadIndex <j && APF_IsMore(APA_LinkPtrArr[--j]->GetData(), VP_PivotLinkPtr->GetData()) );
if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]); if(i<j) SwapLinkPtr( APA_LinkPtrArr[i], APA_LinkPtrArr[j] );
} }
while(i<j); while(i<j);
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]); /* SwapLinkPtr(APA_LinkPtrArr[AL_HeadIndex], APA_LinkPtrArr[j]);
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
않아서 좋다. 않아서 좋다.
*/ */
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j]; APA_LinkPtrArr[AL_HeadIndex] = APA_LinkPtrArr[j];
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ; APA_LinkPtrArr[j ] = VP_PivotLinkPtr ;
QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, AL_FirstIndex, j-1 ); QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, AL_HeadIndex, j-1 );
QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, j+1, AL_LastIndex); QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, j+1, AL_TailIndex);
}/* }/*
if(AL_FirstIndex<AL_LastIndex)*/ if(AL_HeadIndex<AL_TailIndex)*/
}/* }/*
template template
<typename TTypFuncIsMore, typename TTypFuncIsLess> <typename TTypFuncIsMore, typename TTypFuncIsLess>
@ -110,91 +110,91 @@ namespace ZNsMain
TTypFuncIsMore APF_IsMore , TTypFuncIsMore APF_IsMore ,
TTypFuncIsLess APF_IsLess , TTypFuncIsLess APF_IsLess ,
ZCLink* APA_LinkPtrArr[], ZCLink* APA_LinkPtrArr[],
TypeSize AL_FirstIndex , TypeSize AL_HeadIndex ,
TypeSize AL_LastIndex TypeSize AL_TailIndex
) )
###########################################################*/ ####################################################*/
static void QuickSortAsc static void QuickSortAsc
( (
ZCLink* APA_LinkPtrArr[], TypeSize AL_FirstIndex, TypeSize AL_LastIndex ZCLink* APA_LinkPtrArr[], TypeSize AL_HeadIndex, TypeSize AL_TailIndex
) )
/*####################*/ /*####################*/
{ {
if(AL_FirstIndex<AL_LastIndex) if(AL_HeadIndex<AL_TailIndex)
{ {
TypeSize i=AL_FirstIndex ; TypeSize i=AL_HeadIndex ;
TypeSize j=AL_LastIndex+1 ; TypeSize j=AL_TailIndex+1 ;
ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i]; ZCLink* VP_PivotLinkPtr = APA_LinkPtrArr[i];
do //// do ////
{ {
while(AL_LastIndex >i && APA_LinkPtrArr[++i]->GetData() < VP_PivotLinkPtr->GetData()); while(AL_TailIndex >i && APA_LinkPtrArr[++i]->GetData() < VP_PivotLinkPtr->GetData());
while(AL_FirstIndex<j && APA_LinkPtrArr[--j]->GetData() > VP_PivotLinkPtr->GetData()); while(AL_HeadIndex <j && APA_LinkPtrArr[--j]->GetData() > VP_PivotLinkPtr->GetData());
if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]); if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]);
} }
while(i<j); while(i<j);
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]); /* SwapLinkPtr(APA_LinkPtrArr[AL_HeadIndex], APA_LinkPtrArr[j]);
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 않아서 좋다.*/ 위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 않아서 좋다.
*/
APA_LinkPtrArr[AL_HeadIndex] = APA_LinkPtrArr[j] ;
APA_LinkPtrArr[j ] = VP_PivotLinkPtr ;
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j]; QuickSortAsc(APA_LinkPtrArr, AL_HeadIndex, j-1 );
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ; QuickSortAsc(APA_LinkPtrArr, j+1, AL_TailIndex);
QuickSortAsc(APA_LinkPtrArr, AL_FirstIndex, j-1 );
QuickSortAsc(APA_LinkPtrArr, j+1, AL_LastIndex);
}/* }/*
if(AL_FirstIndex<AL_LastIndex)*/ if(AL_HeadIndex<AL_TailIndex)*/
}/* }/*
static void QuickSortAsc static void QuickSortAsc
( (
ZCLink* APA_LinkPtrArr[], TypeSize AL_FirstIndex, TypeSize AL_LastIndex ZCLink* APA_LinkPtrArr[], TypeSize AL_HeadIndex, TypeSize AL_TailIndex
) )
/*####################*/ /*####################*/
static void QuickSortDesc static void QuickSortDesc
( (
ZCLink* APA_LinkPtrArr[], TypeSize AL_FirstIndex, TypeSize AL_LastIndex ZCLink* APA_LinkPtrArr[], TypeSize AL_HeadIndex, TypeSize AL_TailIndex
) )
/*#####################*/ /*#####################*/
{ {
if(AL_FirstIndex<AL_LastIndex) if(AL_HeadIndex<AL_TailIndex)
{ {
TypeSize i=AL_FirstIndex ; TypeSize i= AL_HeadIndex ;
TypeSize j=AL_LastIndex+1; TypeSize j= AL_TailIndex+1;
ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i]; ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i];
do ////// do //////
{ {
while(AL_LastIndex >i && APA_LinkPtrArr[++i]->GetData() > VP_PivotLinkPtr->GetData()); while(AL_TailIndex >i && APA_LinkPtrArr[++i]->GetData() > VP_PivotLinkPtr->GetData());
while(AL_FirstIndex<j && APA_LinkPtrArr[--j]->GetData() < VP_PivotLinkPtr->GetData()); while(AL_HeadIndex <j && APA_LinkPtrArr[--j]->GetData() < VP_PivotLinkPtr->GetData());
if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]); if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]);
} }
while(i<j); while(i<j);
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex], APA_LinkPtrArr[j]); /* SwapLinkPtr(APA_LinkPtrArr[AL_HeadIndex], APA_LinkPtrArr[j]);
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
않아서 좋다. 않아서 좋다.
*/ */
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j]; APA_LinkPtrArr[AL_HeadIndex]=APA_LinkPtrArr[j];
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ; APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
QuickSortDesc(APA_LinkPtrArr, AL_FirstIndex, j-1); QuickSortDesc(APA_LinkPtrArr, AL_HeadIndex, j-1 );
QuickSortDesc(APA_LinkPtrArr, j+1, AL_LastIndex); QuickSortDesc(APA_LinkPtrArr, j+1, AL_TailIndex);
}/* }/*
if(AL_FirstIndex<AL_LastIndex)*/ if(AL_HeadIndex<AL_TailIndex)*/
}/* }/*
static void QuickSortDesc static void QuickSortDesc
( (
ZCLink* APA_LinkPtrArr[], TypeSize AL_FirstIndex, TypeSize AL_LastIndex ZCLink* APA_LinkPtrArr[], TypeSize AL_HeadIndex, TypeSize AL_TailIndex
) )
/*#####################*/ /*#####################*/
@ -239,7 +239,7 @@ namespace ZNsMain
}/* }/*
//////////////////////////*/ //////////////////////////*/
ZCLink::MakeCircle ZCLink::MakeRing
(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); (VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0]; ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0];
@ -261,7 +261,7 @@ namespace ZNsMain
{ {
if(ARR_CObjList.GetSize()<=1) return; if(ARR_CObjList.GetSize()<=1) return;
TypeSize VL_SortSize = ARR_CObjList.GetSize() ; TypeSize VL_SortSize = ARR_CObjList.GetSize() ;
ZCLink** VPP_LinkPtrArr= new ZCLink*[VL_SortSize]; ZCLink** VPP_LinkPtrArr= new ZCLink*[VL_SortSize];
if(VPP_LinkPtrArr==0) if(VPP_LinkPtrArr==0)
@ -278,8 +278,8 @@ namespace ZNsMain
for(; i<VL_SortSize; ++i) for(; i<VL_SortSize; ++i)
{ {
VPP_LinkPtrArr[i]=VP_TempLink; VPP_LinkPtrArr[i]= VP_TempLink;
VP_TempLink =VP_TempLink->GetNextPtr(); VP_TempLink = VP_TempLink->GetNextPtr();
}/* }/*
///////////////////////*/ ///////////////////////*/
@ -290,9 +290,9 @@ namespace ZNsMain
{ {
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]); ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
}/* }/*
//////////////////////////*/ for(i=1; i<VL_SortSize; ++i)*/
ZCLink::MakeCircle ZCLink::MakeRing
(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); (VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0]; ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0];
@ -457,9 +457,9 @@ namespace ZNsMain
ARR_AddList.JoinBefore //////////////////// ARR_AddList.JoinBefore ////////////////////
( (
ARR_CutList.CutLink(VP_TempLink,1), ARR_CutList.CutLink(VP_TempLink, 1)
VP_LhsTemp, , VP_LhsTemp
VL_LhsTempPos , VL_LhsTempPos
); );
/////////////////////////////////////////// ///////////////////////////////////////////
@ -729,39 +729,39 @@ namespace ZNsMain
TTypFuncIsMore APF_IsMore , TTypFuncIsMore APF_IsMore ,
TTypFuncIsLess APF_IsLess , TTypFuncIsLess APF_IsLess ,
ZCLink* APA_LinkPtrArr[], ZCLink* APA_LinkPtrArr[],
TypeSize AL_FirstIndex , TypeSize AL_HeadIndex ,
TypeSize AL_LastIndex TypeSize AL_TailIndex
) )
/*##################################################*/ /*##################################################*/
{ {
if(AL_FirstIndex<AL_LastIndex) if(AL_HeadIndex<AL_TailIndex)
{ {
TypeSize i=AL_FirstIndex ; TypeSize i=AL_HeadIndex ;
TypeSize j=AL_LastIndex+1 ; TypeSize j=AL_TailIndex+1 ;
ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i]; ZCLink* VP_PivotLinkPtr=APA_LinkPtrArr[i];
do ////// do //////
{ {
while(AL_LastIndex >i && APF_IsLess(APA_LinkPtrArr[++i]->GetData(), VP_PivotLinkPtr->GetData())); while(AL_TailIndex >i && APF_IsLess(APA_LinkPtrArr[++i]->GetData(), VP_PivotLinkPtr->GetData()));
while(AL_FirstIndex<j && APF_IsMore(APA_LinkPtrArr[--j]->GetData(), VP_PivotLinkPtr->GetData())); while(AL_HeadIndex <j && APF_IsMore(APA_LinkPtrArr[--j]->GetData(), VP_PivotLinkPtr->GetData()));
if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]); if(i<j) SwapLinkPtr(APA_LinkPtrArr[i], APA_LinkPtrArr[j]);
} }
while(i<j); while(i<j);
/* SwapLinkPtr(APA_LinkPtrArr[AL_FirstIndex],APA_LinkPtrArr[j]); /* SwapLinkPtr(APA_LinkPtrArr[AL_HeadIndex],APA_LinkPtrArr[j]);
위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지 위 코드 보다 아래처럼 2 줄로 쓰는게 별도의 스택 변수를 사용하지
않아서 좋다. 않아서 좋다.
*/ */
APA_LinkPtrArr[AL_FirstIndex]=APA_LinkPtrArr[j]; APA_LinkPtrArr[AL_HeadIndex]=APA_LinkPtrArr[j];
APA_LinkPtrArr[j ]=VP_PivotLinkPtr ; APA_LinkPtrArr[j ]=VP_PivotLinkPtr ;
QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, AL_FirstIndex, j-1 ); QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, AL_HeadIndex, j-1 );
QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, j+1, AL_LastIndex); QuickSort(APF_IsMore, APF_IsLess, APA_LinkPtrArr, j+1, AL_TailIndex);
}/* }/*
if(AL_FirstIndex<AL_LastIndex)*/ if(AL_HeadIndex<AL_TailIndex)*/
}/* }/*
template template
<typename TTypFuncIsMore, typename TTypFuncIsLess> <typename TTypFuncIsMore, typename TTypFuncIsLess>
@ -770,8 +770,8 @@ namespace ZNsMain
TTypFuncIsMore APF_IsMore , TTypFuncIsMore APF_IsMore ,
TTypFuncIsLess APF_IsLess , TTypFuncIsLess APF_IsLess ,
ZCLink* APA_LinkPtrArr[], ZCLink* APA_LinkPtrArr[],
TypeSize AL_FirstIndex , TypeSize AL_HeadIndex ,
TypeSize AL_LastIndex TypeSize AL_TailIndex
) )
/*##################################################*/ /*##################################################*/
@ -812,16 +812,17 @@ namespace ZNsMain
} }
///////////////////////// /////////////////////////
QuickSort(APF_IsMore, APF_IsLess, VPP_LinkPtrArr, 0, VL_SortSize-1); QuickSort
(APF_IsMore, APF_IsLess, VPP_LinkPtrArr, 0, VL_SortSize-1);
for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환 for(i=1; i<VL_SortSize; ++i) // VL_SortSize-1 번 순환
{ {
ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]); ZCLink::JoinLink(VPP_LinkPtrArr[i-1], VPP_LinkPtrArr[i]);
} }
//////////////////////////// /*++++++++++++++++++++++++*/
#if(_CODE_OLD_) // 아래 코드만 빠진다. #if(_CODE_OLD_) // 아래 코드만 빠진다.
ZCLink::MakeCircle(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); ZCLink::MakeRing(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
#else #else
ARR_CObjList.mp_HeadLink=VPP_LinkPtrArr[0] ; ARR_CObjList.mp_HeadLink=VPP_LinkPtrArr[0] ;
ARR_CObjList.mp_TailLink=VPP_LinkPtrArr[VL_SortSize-1]; ARR_CObjList.mp_TailLink=VPP_LinkPtrArr[VL_SortSize-1];

File diff suppressed because it is too large Load Diff

657
ZCppMain/ZtCStringStd.H Normal file
View File

@ -0,0 +1,657 @@

#ifndef __ZCPPMAIIN_ZTCSTRINGSTD_H__
#define __ZCPPMAIIN_ZTCSTRINGSTD_H__
#include<string>
#include "ZCppMain/ZtCMainChars.H"
namespace ZNsMain
{
template<typename TTypString> class ZtCStringStd;
template //////////////////////////////////////////////////////////////////
<
template<typename> class ZtCStringStd, typename TTypeBaseStr
>
/*#######################################################################*/
class ZtCCharType< ZtCStringStd<TTypeBaseStr> >
{
public:
typedef ZtCStringStd<TTypeBaseStr> TypeCStr ;
typedef typename TypeCStr::traits_type::char_type TypeChar ;
typedef typename TypeCStr::traits_type::int_type TypeInt ;
typedef typename TypeCStr::size_type TypeSize ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
static const int CI_ByteSize = sizeof(TypeChar) ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
public:
typedef TypeChar char_type ; // for stl string/wstring
typedef TypeInt int_type ; // for stl string/wstring
typedef TypeSize size_type ; // for stl string/wstring
public:
};/*
class ZtCCharType #######################################################*/
template
< typename TTypString = std::string >
class ZtCStringStd : public TTypString
{
public:
typedef ZtCStringStd TypeThis;
/*+++++++++++++++++++++++++++++++++++++++++++++++++*/
typedef typename TTypString::traits_type::char_type TypeChar ;
typedef typename TTypString::traits_type::int_type TypeCharInt ;
typedef typename TTypString::size_type TypeLength ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++*/
typedef ZNsChars::ZNsType::
ZtCTypeChars <TypeChar > ZCTypeChars ;
typedef ZNsChars::
ZtCMainChars<ZCTypeChars> ZCMainChars ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++*/
typedef TypeChar* TypePChar ;
typedef const TypeChar* TypeCPChar ;
typedef TTypString TypeBase ;
typedef TTypString TypeStrStd ;
typedef TypeLength TypeSize ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++*/
typedef ZtCChars
<TypeChar, TypeLength> ZCChars ;
typedef ZtCChars
<TypeChar, TypeLength> ZCCharView ;
/*+++++++++++++++++++++++++++++++++++++++++++++++++*/
ZtCStringStd(): TypeStrStd(){}
ZtCStringStd(const ZtCStringStd& rhs): TypeStrStd(rhs){}
ZtCStringStd(TypeCPChar APC_Origin, TypeLength AL_Length):
TypeStrStd(APC_Origin, AL_Length){}
ZtCStringStd(const ZCCharView& AR_View):
TypeStrStd(AR_View.data(), AR_View.size()){}
explicit ZtCStringStd(TypeCPChar APC_Origin):
TypeStrStd(APC_Origin){}
ZtCStringStd& operator=(const ZtCStringStd& rhs)
{
if(this==&rhs){ return *this; }
this->TypeStrStd::operator=(rhs); return *this;
}/*
ZtCStringStd& operator=(const ZtCStringStd& rhs)*/
ZtCStringStd& operator=(const TypeBase& rhs)
{
if(this->data()==rhs.data()){ return *this; }
this->TypeStrStd::operator=(rhs); return *this;
}/*
ZtCStringStd& operator=(const TypeBase& rhs)*/
ZtCStringStd& operator=(const ZCCharView& AR_View)
{
if(this->data()==AR_View.data()){ return *this; }
if( 1 > AR_View.size())
{ this->resize(0); return *this; }
this->resize(AR_View.size());
const int CI_CopySize =
AR_View.size() * sizeof(TypeChar) ;
::memcpy(this->data(), AR_View.data(), CI_CopySize);
return *this; /*::::::::::::::::::::::::::::::::::*/
}/*
ZtCStringStd& operator=(const ZCCharView& AR_View)*/
ZtCStringStd& operator=(ZTypInt AI_Int )
{ this->resize(0); return (*this)(AI_Int ); }
ZtCStringStd& operator=(ZTypLong AL_Long )
{ this->resize(0); return (*this)(AL_Long ); }
ZtCStringStd& operator=(ZTypLLong AL_LLong )
{ this->resize(0); return (*this)(AL_LLong ); }
ZtCStringStd& operator=(double AD_Double)
{ this->resize(0); return (*this)(AD_Double); }
template<typename TPosList> void FindPosToList /////////////
(
TPosList& ARR_CPosList, TypeCPChar APC_SearchData,
TypeLength AL_SearchLen, TypeLength AL_Offset=0
)
/*########################################################*/
{
// TPosList : ZNsMain::ZtCBaseList<TypeLength> etc
if(0 > AL_Offset) AL_Offset=0 ;
if(this->size() <= AL_Offset) return ;
if(this->size() < 1 ) return ;
TypeCPChar VPC_OriginStart = this->data();
TypeLength VL_OriginLen = this->size();
TypeLength VL_FindPos = -1 ;
TypeLength VL_OffsetNow = AL_Offset ;
while /*::::::::::::::::::::::::::::::::::::::::::::::*/
(
( VL_FindPos = ZCMainChars::FindPos
(
VPC_OriginStart, APC_SearchData,
VL_OriginLen , AL_SearchLen , VL_OffsetNow
)
) >= 0
)
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
{
ARR_CPosList.push_back(VL_FindPos);
VL_OffsetNow = VL_FindPos + AL_SearchLen;
}
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
template<typename TPosList> void FindPosToList /////////////
(
TPosList& ARR_CPosList, TypeCPChar APC_SearchData,
TypeLength AL_SearchLen, TypeLength AL_Offset=0
)
##########################################################*/
public :
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
private:
template<typename TPosList> ZtCStringStd& ReplaceByPosList ///////////////////
(
TPosList& AR_CPosList ,
TypeCPChar APC_Replace ,
TypeLength AL_Replace ,
TypeLength AL_Searched
)
/*#########################################################################*/
{
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
■ TPosList : ZNsMain::ZtCBaseList<TypeLength> etc
AL_Replace : APC_Replace 의 길이
AL_Searched : 이전에 찾은 길이
Replace() 에서 FindPosToList() 다음에 호출한다.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
if(AR_CPosList.size()<1) return *this;
TypeLength VL_PosListSize= AR_CPosList.size() ;
TypeLength VL_ThisSize = this->size() ;
TypeLength VL_NeedSize = VL_ThisSize +
(AL_Replace-AL_Searched) * VL_PosListSize ;
TypePChar VPC_ThisStart = const_cast<TypeChar*>(this->data()) ;
IterEasyID VH_IterEasyID = AR_CPosList.ItHID();
TypeLength VL_SearchedPos= 0 ;
TypeLength VL_SearchedPre= 0 ; // VL_SearchedPos 의 이전 값
TypePChar VPC_MoveStart = 0 ;
TypePChar VPC_DestStart = 0 ;
TypeLength VL_MoveStart = 0 ;
TypeLength VL_DestStart = 0 ;
TypeLength VL_MemMoveSize= 0 ;
if(AL_Replace<=AL_Searched) // 메모리 증가 불필요
{
TypePChar VPC_MoveStart = 0 ;
TypePChar VPC_DestStart = 0 ;
TypeLength VL_MoveStart = 0 ;
TypeLength VL_DestStart = 0 ;
TypeLength VL_MemMoveSize= 0 ;
TypePChar VPC_RepalcePos= 0 ;
__for1(TypeLength, i, VL_PosListSize)
{
VL_SearchedPos = AR_CPosList.ItD(VH_IterEasyID) ;
VPC_RepalcePos = VPC_ThisStart + VL_SearchedPos -
( AL_Searched-AL_Replace ) * (i-1) ;
if(VL_MoveStart>VL_DestStart)
{
VL_MemMoveSize =
VL_SearchedPos - VL_SearchedPre - AL_Searched ;
VPC_MoveStart = VPC_ThisStart + VL_MoveStart ;
VPC_DestStart = VPC_ThisStart + VL_DestStart ;
::memmove /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
(
VPC_DestStart, VPC_MoveStart, VL_MemMoveSize*sizeof(TypeChar)
);
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
if(VL_MoveStart>VL_DestStart)*/
VL_SearchedPre = VL_SearchedPos ;
VL_MoveStart = VL_SearchedPos+ AL_Searched ;
VL_DestStart = VL_SearchedPos+ AL_Searched -
( AL_Searched-AL_Replace ) * i ;
::memcpy(VPC_RepalcePos, APC_Replace, AL_Replace);
AR_CPosList.ItNext(VH_IterEasyID);
}/*
__for1(TypeLength, i, VL_PosListSize)*/
if(VL_ThisSize > VL_MoveStart)
{
::memmove /*::::::::::::::::::::::::::::::*/
(
VPC_ThisStart + VL_DestStart,
VPC_ThisStart + VL_MoveStart,
(VL_ThisSize - VL_MoveStart)*sizeof(TypeChar)
);
/*::::::::::::::::::::::::::::::::::::::::*/
}/*
if(VL_ThisSize > VL_MoveStart)*/
this->resize(VL_NeedSize); return *this;
}/*
if(AL_Replace<=AL_Searched) // 메모리 증가 불필요*/
/*======*/ VL_SearchedPre = this->size() ;
/*======*/ VH_IterEasyID = AR_CPosList.ItTID() ;
TypeLength VL_NowEleNo = VL_PosListSize ;
TypeLength VL_DiffLength = AL_Replace-AL_Searched;
this->resize(VL_NeedSize); VPC_ThisStart = this->data();
__for1(TypeLength, i, VL_PosListSize)
{
VL_SearchedPos = AR_CPosList.ItD(VH_IterEasyID) ;
VL_MemMoveSize = VL_SearchedPre - (VL_SearchedPos+AL_Searched);
if(VL_MemMoveSize>0)
{
VPC_MoveStart = VPC_ThisStart + VL_SearchedPos + AL_Searched ;
VPC_DestStart = VPC_ThisStart + VL_SearchedPos + AL_Searched + VL_DiffLength*VL_NowEleNo ;
::memmove /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
(
VPC_DestStart, VPC_MoveStart, VL_MemMoveSize*sizeof(TypeChar)
);
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
if(VL_MemMoveSize>0)*/
VPC_DestStart = VPC_ThisStart + VL_SearchedPos + VL_DiffLength*(VL_PosListSize - i) ;
::memcpy /*:::::::::::::::::::::::::::::::::::::::::::::::::*/
(
VPC_DestStart, APC_Replace, AL_Replace*sizeof(TypeChar)
);
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
VL_SearchedPre = VL_SearchedPos; --VL_NowEleNo;
AR_CPosList.ItPrev(VH_IterEasyID);
}/*
__for1(TypeLength, i, VL_PosListSize)*/
return *this;
}/*
template<typename TPosList> ZtCStringStd& ReplaceByPosList //////////////////
(
TPosList& AR_CPosList ,
TypeCPChar APC_Replace ,
TypeLength AL_Replace ,
TypeLength AL_Searched
)
###########################################################################*/
private:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
public :
ZtCStringStd& Replace /*///////////////////////////////////////////////////*/
(
TypeCPChar APC_Search, TypeCPChar APC_Replace,
TypeLength AL_Search , TypeLength AL_Replace , TypeLength AL_Offset=0
)
/*#########################################################################*/
{
if(0 > AL_Offset) AL_Offset=0 ;
if(this->size() <= AL_Offset) return *this;
if(this->size() < 1 ) return *this;
ZtCBaseList<TypeLength> VO_CPosCList; FindPosToList
(
RR(VO_CPosCList), APC_Search, AL_Search, AL_Offset
);
/*////////////////////////////////////////////////*/
return ReplaceByPosList /*::::::::::::::::::::::::::::*/
(
VO_CPosCList, APC_Replace, AL_Replace, AL_Search
);
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
}
/*#########################################################################*/
ZtCStringStd& Replace /*///////////////////////////////////////////////////*/
(
TypeCPChar APC_Search, TypeCPChar APC_Replace, TypeLength AL_Offset=0
)
/*#########################################################################*/
{
return Replace(APC_Search, APC_Replace, ZftLength(APC_Search), ZftLength(APC_Replace), AL_Offset);
}
/*#########################################################################*/
ZtCStringStd& operator()(ZtCStringStd& rhs)
{
if(this==&rhs) {return *this;} this->append(rhs); return *this;
}/*
ZtCStringStd& operator()(ZtCStringStd& rhs)*/
ZtCStringStd& operator()(TypeCPChar APC_Data, TypeLength AI_Length)
{
if(this->data()==APC_Data) return *this;
this->append(APC_Data, AI_Length); return *this;
}/*
ZtCStringStd& operator()(TypeCPChar APC_Data, TypeLength AI_Length)*/
ZtCStringStd& operator()(TypeCPChar APC_Data)
{
if(this->data()==APC_Data) return *this;
this->append(APC_Data); return *this;
}/*
ZtCStringStd& operator()(TypeCPChar APC_Data)*/
ZtCStringStd& operator()(TypeLength AI_Repeat, TypeChar AC_Data)
{
this->append(AI_Repeat, AC_Data); return *this;
}/*
ZtCStringStd& operator()(TypeChar AC_Data, TypeLength AI_Repeat)*/
ZtCStringStd& operator()(TypeChar AC_Data, TypeLength AI_Repeat=1)
{
this->append(AI_Repeat, AC_Data); return *this;
}/*
ZtCStringStd& operator()(TypeChar AC_Data, TypeLength AI_Repeat=1)*/
ZtCStringStd& operator()(const ZCCharView& AR_View)
{
this->append(AR_View.data(), AR_View.size()); return *this;
}/*
ZtCStringStd& operator()(const ZCCharView& AR_View)*/
ZtCStringStd& operator()(bool AB_Bool)
{
typedef typename TypeThis::TypeChar TypeChar ;
typedef typename TypeThis::TypeSize TypeSize ;
typedef ZtCBoolStr
<TypeChar, TypeSize> ZCBoolStr;
return (*this)( ZCBoolStr::GetMark(AB_Bool) );
}/*
ZtCStringStd& operator()(bool AB_Bool)*/
ZtCStringStd& operator()(int AI_IntParam)
{
const int CI_BuffSize= 21; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*+++++++*/ "%d", AI_IntParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%d", AI_IntParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(int AI_IntParam)*/
ZtCStringStd& operator()(ZTypUInt AUI_UIntParam)
{
const int CI_BuffSize= 21; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%u", AUI_UIntParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%u", AUI_UIntParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(ZTypUInt AUI_UIntParam)*/
ZtCStringStd& operator()(long AL_LongParam)
{
const int CI_BuffSize= 31; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%ld", AL_LongParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%ld", AL_LongParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(long AL_LongParam)*/
ZtCStringStd& operator()(ZTypULong AUL_ULongParam)
{
const int CI_BuffSize= 31; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%lu", AUL_ULongParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%lu", AUL_ULongParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(ZTypULong AUL_ULongParam)*/
ZtCStringStd& operator()(ZTypLLong ALL_LLongParam)
{
const int CI_BuffSize= 41; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%lld" , ALL_LLongParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%lld" , ALL_LLongParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(ZTypLLong ALL_LLongParam)*/
ZtCStringStd& operator()(ZTypULLong AULL_LLongParam)
{
const int CI_BuffSize= 41; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%llu" , AULL_LLongParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%llu" , AULL_LLongParam)
);
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(ZTypULLong AULL_LLongParam)*/
ZtCStringStd& operator()(double AD_DoubleParam)
{
const int CI_BuffSize= 51; TypeChar VCA_BuffParam[CI_BuffSize] ;
int VI_ResultSize = /*::::::::::::::::::::::::::::::::::::::::*/
(
sizeof(TypeChar)<=1
? ::sprintf ((char* )VCA_BuffParam, /*++++++++*/ "%f", AD_DoubleParam)
: ::swprintf((wchar_t*)VCA_BuffParam, CI_BuffSize, L"%f", AD_DoubleParam)
);
ZNsMain::ZftTrimDecimalZero(VCA_BuffParam, RR(VI_ResultSize));
return (*this)(VCA_BuffParam, VI_ResultSize); /*::::::::::::::*/
}/*
ZtCStringStd& operator()(double AD_DoubleParam)*/
int GetInt () const{return ZNsMain::ZftAtoI (this->data());}
ZTypLong GetLong () const{return ZNsMain::ZftAtoL (this->data());}
ZTypLLong GetLongLong() const{return ZNsMain::ZftAtoLL(this->data());}
ZTypLLong GetLLong () const{return ZNsMain::ZftAtoLL(this->data());}
double GetDouble () const{return ZNsMain::ZftAtoD (this->data());}
public:
};/*
template //////////////////////////////////////////////////////////
< typename TTypString = std::string >
class ZtCStringStd
#################################################################*/
typedef ZtCStringStd<std::string > ZCStringStd ;
typedef ZtCStringStd<std::wstring> ZCStringStdW;
#define _ZCSTRINGSTD_ ZtCStringStd< TTypString >
#define _ZCSTRINGSTD_ARG_ template< typename TTypString >
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, const _ZCSTRINGSTD_& AR_DataCStr)
{ return ARR_SaveCStr(AR_DataCStr ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, const typename
_ZCSTRINGSTD_::ZCChars& AR_DataCStr )
{ return ARR_SaveCStr(AR_DataCStr ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, typename
_ZCSTRINGSTD_::TypeChar AC_Char )
{ return ARR_SaveCStr(AC_Char ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, ZTypInt AI_IntI )
{ return ARR_SaveCStr(AI_IntI ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, ZTypIntL AL_Long )
{ return ARR_SaveCStr(AL_Long ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, ZTypIntUI AUI_Int )
{ return ARR_SaveCStr(AUI_Int ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, ZTypIntUL AUL_Long )
{ return ARR_SaveCStr(AUL_Long ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, ZTypIntULL AULL_Long )
{ return ARR_SaveCStr(AULL_Long ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, double AD_Double )
{ return ARR_SaveCStr(AD_Double ); }
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, bool AB_Bool )
{
typedef typename _ZCSTRINGSTD_::TypeChar TypeChar;
typedef typename _ZCSTRINGSTD_::TypeSize TypeSize;
typedef ZtCBoolStr<TypeChar, TypeSize> ZCBoolStr ;
return ARR_SaveCStr(ZCBoolStr::GetMark(AB_Bool)) ;
}/*
_ZCSTRINGSTD_ARG_ _ZCSTRINGSTD_& ZftMakeStr
( _ZCSTRINGSTD_& ARR_SaveCStr, bool AB_Bool ) */
#undef _ZCSTRINGSTD_
#undef _ZCSTRINGSTD_ARG_
template<typename TTypString> std::ostream& operator<<
(std::ostream& AR_COStream, const ZtCStringStd<TTypString>& AR_DataCStr)
{
typedef typename ZtCStringStd
<TTypString>::TypeBase TypeBaseCStr ;
AR_COStream<< static_cast
<const TypeBaseCStr&>(AR_DataCStr);
return AR_COStream; ///////////////////////////
}/*
template<typename TTypString> std::ostream& operator<<
(std::ostream& AR_COStream, const ZtCStringStd& AR_DataCStr)*/
std::ostream& operator<<
(std::ostream& AR_COStream, const ZCStringStd& AR_DataCStr)
{
typedef ZCStringStd::TypeBase TypeBaseCStr;
AR_COStream<< static_cast
<const TypeBaseCStr&>( AR_DataCStr );
return AR_COStream; /*********************/
}/*
template<typename TTypString> std::ostream& operator<<
(std::ostream& AR_COStream, const ZtCStringStd& AR_DataCStr)*/
std::ostream& operator<<
(std::ostream& AR_COStream, const ZCStringStdW& AR_DataCStr)
{
// ascii 코드 범위에서만 출력한다.
typedef ZCStringStdW::TypeSize TypeLength ;
typedef ZCStringStdW::TypeCharInt TypeCharInt;
ZTypCCharW* VP_Data = AR_DataCStr.data();
TypeLength VI_Size = AR_DataCStr.size();
const int CI_AsciiMax = 127 ;
__for0(TypeLength, i, VI_Size)
{
TypeCharInt VI_Code = TypeCharInt(*VP_Data++);
if(VI_Code>0 && VI_Code<=CI_AsciiMax)
{ AR_COStream.put( char(VI_Code) ); }
}/*
__for0(TypeLength, i, VI_Size)*/
return AR_COStream; /*********************/
}/*
template<typename TTypString> std::ostream& operator<<
(std::ostream& AR_COStream, const ZtCStringStd& AR_DataCStr)*/
}/*
namespace ZNsMain*/
#endif //__ZCPPMAIIN_ZTCSTRINGSTD_H__

View File

@ -122,8 +122,7 @@ namespace ZNsMain
namespace ZNsType*/ namespace ZNsType*/
template< typename TType , template< typename TType ,
typename TTypeInit =ZNsMain::ZtCInit<TType>,
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long> typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
> >
class ZtCTreeData /*###########################################*/ class ZtCTreeData /*###########################################*/
@ -131,9 +130,8 @@ namespace ZNsMain
public: public:
class ZCNode1; class ZCNode2; class ZCNodeInfo; class ZCNode1; class ZCNode2; class ZCNodeInfo;
public: public:
typedef TType TypeData ; typedef TType TypeData ;
typedef TTypeInit ZCTypeInit ; typedef TTypeTreeData TypeTreeData;
typedef TTypeTreeData ZCTypeTreeData;
public: public:
typedef typename TTypeTreeData::TypeSize TypeSize ; typedef typename TTypeTreeData::TypeSize TypeSize ;
typedef typename TTypeTreeData::template typedef typename TTypeTreeData::template
@ -148,7 +146,8 @@ namespace ZNsMain
typedef typename ZCNodeList::iterator IterOfNode; typedef typename ZCNodeList::iterator IterOfNode;
public: public:
class ZCNode1 : public ZCTypeInit
class ZCNode1
{ {
public : public :
friend class ZCNodeInfo; friend class ZCNodeInfo;
@ -160,13 +159,13 @@ namespace ZNsMain
ZCNode1() ZCNode1()
{ {
mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData); mp_HighNode=0;
}/* }/*
ZCNode1()*/ ZCNode1()*/
~ZCNode1() ~ZCNode1()
{ {
mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData); mp_HighNode=0;
}/* }/*
~ZCNode1()*/ ~ZCNode1()*/
@ -184,7 +183,7 @@ namespace ZNsMain
ZCNode& AddSubNode() ZCNode& AddSubNode()
{ {
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef()); ZCNode* VP_CNode=(ZCNode*)&(*mo_CNodeList.AddTailDef());
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ; VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
}/* }/*
@ -240,7 +239,7 @@ namespace ZNsMain
{ {
const bool CB_DoStop = const bool CB_DoStop =
( (
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node). ((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).template
IterPreOrder<TViewClass> IterPreOrder<TViewClass>
(AR_CViewClass, AI_StartDepth, i) (AR_CViewClass, AI_StartDepth, i)
== ZNsMain::ZNsEnum::ZERun_NO == ZNsMain::ZNsEnum::ZERun_NO
@ -265,7 +264,7 @@ namespace ZNsMain
}/* }/*
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0) (TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
/*##############################################################*/ ################################################################*/
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
( TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0 ) ( TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0 )
@ -285,7 +284,7 @@ namespace ZNsMain
{ {
const bool CB_DoStop = const bool CB_DoStop =
( (
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node). ((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).template
IterPostOrder<TViewClass>(AR_CViewClass, AI_StartDepth, i) IterPostOrder<TViewClass>(AR_CViewClass, AI_StartDepth, i)
== ZNsMain::ZNsEnum::ZERun_NO == ZNsMain::ZNsEnum::ZERun_NO
); );
@ -319,13 +318,14 @@ namespace ZNsMain
}/* }/*
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0) (TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
/*###############################################################*/ #################################################################*/
public: public:
};/* };/*
class ZCNode1*/ class ZCNode1*/
class ZCNode2 : public ZCTypeInit
class ZCNode2
{ {
public : public :
friend class ZCNodeInfo; friend class ZCNodeInfo;
@ -337,12 +337,12 @@ namespace ZNsMain
ZCNode2() ZCNode2()
{ {
mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData); mp_HighNode=0;
}/* }/*
ZCNode2()*/ ZCNode2()*/
~ZCNode2() ~ZCNode2()
{ {
mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData); mp_HighNode=0;
}/* }/*
~ZCNode2()*/ ~ZCNode2()*/
@ -360,7 +360,7 @@ namespace ZNsMain
ZCNode& AddSubNode() ZCNode& AddSubNode()
{ {
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef()); ZCNode* VP_CNode=(ZCNode*)&(*mo_CNodeList.AddTailDef());
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ; VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
}/* }/*
@ -446,20 +446,19 @@ namespace ZNsMain
template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass) template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass)
{ {
mo_RootNode.IterPreOrder<TViewClass>(AR_CViewClass, 0, 0); mo_RootNode.template IterPreOrder<TViewClass>(AR_CViewClass, 0, 0);
}/* }/*
template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass) */ template<typename TViewClass> void IterPreOrder(TViewClass& AR_CViewClass) */
template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass) template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass)
{ {
mo_RootNode.IterPostOrder<TViewClass>(AR_CViewClass, 0, 0); mo_RootNode.template IterPostOrder<TViewClass>(AR_CViewClass, 0, 0);
}/* }/*
template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass) */ template<typename TViewClass> void IterPostOrder(TViewClass& AR_CViewClass) */
public: public:
};/* };/*
template< typename TType , template< typename TType ,
typename TTypeInit =ZNsMain::ZtCInit<TType>,
typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long> typename TTypeTreeData=ZNsType::ZtCTypeTreeData<long>
> >
class ZtCTreeData #############################################*/ class ZtCTreeData #############################################*/
@ -471,6 +470,7 @@ namespace ZNsMain
■ class ZtCTreeData 예제 -- 2015-08-14 14:00 ■ class ZtCTreeData 예제 -- 2015-08-14 14:00
#include <iostream> #include <iostream>
#include "ZCppMain/ZtCStringEx.H"
#include "ZCppMain/ZtCTreeData.H" #include "ZCppMain/ZtCTreeData.H"
using namespace std ; using namespace std ;
@ -636,7 +636,7 @@ namespace ZNsMain
ZCNode& AddSubNode() ZCNode& AddSubNode()
{ {
ZCNode* VP_CNode=(ZCNode*)&(**mo_CNodeList.AddTailDef()); ZCNode* VP_CNode=(ZCNode*)&(*mo_CNodeList.AddTailDef());
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ; VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode ;
}/* }/*
@ -675,7 +675,7 @@ namespace ZNsMain
TypeSize VL_DataCnt= mo_CDataList .size(); TypeSize VL_DataCnt= mo_CDataList .size();
TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size(); TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size();
IterOfData VO_iter_Data( mo_CDataList.begin()); IterOfData VO_iter_Data( mo_CDataList .begin());
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin()); IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO) if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
@ -715,7 +715,7 @@ namespace ZNsMain
const bool CB_DoStop = /////////////////////////////// const bool CB_DoStop = ///////////////////////////////
( (
((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node). ((ZCNodeList&)mo_CNodeList).ItD(VO_iter_Node).
IterPreOrder<TViewClass> template IterPreOrder<TViewClass>
(AR_CViewClass, AI_StartDepth. i) (AR_CViewClass, AI_StartDepth. i)
== ZNsMain::ZNsEnum::ZERun_NO == ZNsMain::ZNsEnum::ZERun_NO
); );
@ -767,7 +767,7 @@ namespace ZNsMain
const bool CB_DoStop = //////////////////////////////// const bool CB_DoStop = ////////////////////////////////
( (
((ZCNodeList&)mo_CNodeList). ((ZCNodeList&)mo_CNodeList).
ItD(VO_iter_Node).IterPostOrder<TViewClass> ItD(VO_iter_Node).template IterPostOrder<TViewClass>
(AR_CViewClass, AI_StartDepth, i) (AR_CViewClass, AI_StartDepth, i)
== ZNsMain::ZNsEnum::ZERun_NO == ZNsMain::ZNsEnum::ZERun_NO
); );
@ -859,7 +859,7 @@ namespace ZNsMain
ZCNode& AddSubNode() ZCNode& AddSubNode()
{ {
ZCNode* VP_CNode=(ZCNode*)& ZCNode* VP_CNode=(ZCNode*)&
( **mo_CNodeList.AddTailDef() ); ( *mo_CNodeList.AddTailDef() );
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode; VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode;
}/* }/*
@ -936,9 +936,9 @@ namespace ZNsMain
void clear (){mo_RootNode.clear();} void clear (){mo_RootNode.clear();}
template<typename TViewClass> void IterPreOrder (TViewClass AO_CViewClass) template<typename TViewClass> void IterPreOrder (TViewClass AO_CViewClass)
{ mo_RootNode.IterPreOrder<TViewClass>(AO_CViewClass, 0); } { mo_RootNode.template IterPreOrder<TViewClass>(AO_CViewClass, 0); }
template<typename TViewClass> void IterPostOrder(TViewClass AO_CViewClass) template<typename TViewClass> void IterPostOrder(TViewClass AO_CViewClass)
{ mo_RootNode.IterPostOrder<TViewClass>(AO_CViewClass, 0); } { mo_RootNode.template IterPostOrder<TViewClass>(AO_CViewClass, 0); }
public: public:
};/* };/*

View File

@ -0,0 +1,135 @@

#include "ZCppMain/ZMainCGI.H"
using namespace std ;
using namespace ZNsMain;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExam_CLoadSimUrlConfig
{
public:
typedef ZtCStringBase<char> ZCStringBase ;
typedef ZNsCGI::ZtCLoadSimUrlConfig
<ZCStringBase> ZCLoadSimUrlConfig;
public:
static int Main(int AR_ArgCnt, char* APP_ArgVal[])
{
ZCLoadSimUrlConfig VO_CLoadSimUrlConfig ;
ZCStringBase VO_CStringBase
("Example : name1 =value1 &name2 = value2 ");
if(AR_ArgCnt>=2)
{ VO_CStringBase = APP_ArgVal[1]; }
VO_CLoadSimUrlConfig.LoadData(VO_CStringBase);
VO_CLoadSimUrlConfig.IterEnvSet();
return 0; /*::::::::::::::::::::*/
}/*
static int Main(int AR_ArgCnt, char* APP_ArgVal[])*/
public:
};/*
template<typename TDummy=void*> class ZtCExam_CLoadSimUrlConfig*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExam_CLoadSimUrlConfig<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZMainCGI_000_EnvSet.exe ZMainCGI_000_EnvSet.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZMainCGI_000_EnvSet_D.exe ZMainCGI_000_EnvSet.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZMainCGI_000_EnvSet_mw.exe ZMainCGI_000_EnvSet.cpp -I../ -lWs2_32
g++.exe -o ZMainCGI_000_EnvSet_mw_D.exe ZMainCGI_000_EnvSet.cpp -I../ -lWs2_32 -D_DEBUG
./ZMainCGI_000_EnvSet_mw.exe
./ZMainCGI_000_EnvSet_mw_D.exe
./ZMainCGI_000_EnvSet_mw.exe "name1=value1 & mid & name2= value2"
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZMainCGI_000_EnvSet.exe ZMainCGI_000_EnvSet.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZMainCGI_000_EnvSet_D.exe ZMainCGI_000_EnvSet.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZMainCGI_000_EnvSet.exe
./ZMainCGI_000_EnvSet_D.exe
./ZMainCGI_000_EnvSet.exe "name1=value1 & mid & name2= value2"
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,219 @@

#include <iostream>
#include "ZCppMain/ZCStringStd.H"
using namespace std ;
using namespace ZNsMain;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamTuple_000
{
public:
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZCStringStd VO_BuffCStr("myBuff") ;
ZTypInt VI_NowCnt = 0 ;
cout<<"# __cplusplus : "<<__cplusplus<<endl;
#if defined(__CPLUSPLUS_VER__) && __CPLUSPLUS_VER__<=199800
cout<<"# Use C++ 98 Spec"<<endl;
ZtStTuple<>
myt0 = ZftMakeTuple();
ZtStTuple<int>
myt1 = ZftMakeTuple(1);
ZtStTuple<int, int>
myt2 = ZftMakeTuple(1, 34);
ZtStTuple<int, int, char>
myt3 = ZftMakeTuple(1, 34, 'C');
ZtStTuple<int, int, char, ZCStringStd&>
myt4 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr));
ZtStTuple<int, int, char, ZCStringStd&, bool>
myt5 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true);
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*>
myt6 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB");
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double>
myt7 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float>
myt8 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&>
myt9 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&>
myt10= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&, long>
myt11= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), (long)20250906);
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&, long, wchar_t>
myt12= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), (long)20250906, wchar_t(0));
#else
cout<<"# Use auto keyword for ZtStTuple<> variable"<<endl;
auto myt0 = ZftMakeTuple();
auto myt1 = ZftMakeTuple(1);
auto myt2 = ZftMakeTuple(1, 34);
auto myt3 = ZftMakeTuple(1, 34, 'C');
auto myt4 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr));
auto myt5 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true);
auto myt6 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB");
auto myt7 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34));
auto myt8 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43));
auto myt9 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr));
auto myt10= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt));
auto myt11= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), (long)20250906);
auto myt12= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), (long)20250906, wchar_t(0));
#endif
myt10._10 = 1200;
myt11._10 += 1200;
// 아래 2개 출력이 같아야 한다.
cout<<myt10._10<<endl;
cout<<VI_NowCnt<<endl;
cout<<"_1 type : "<<typeid(myt12._1 ).name()<<endl;
cout<<" value: "<< myt12._1 <<endl;
cout<<"_2 type : "<<typeid(myt12._2 ).name()<<endl;
cout<<" value: "<< myt12._2 <<endl;
cout<<"_3 type : "<<typeid(myt12._3 ).name()<<endl;
cout<<" value: "<< myt12._3 <<endl;
cout<<"_4 type : "<<typeid(myt12._4 ).name()<<endl;
cout<<" value: "<< myt12._4 <<endl;
cout<<"_5 type : "<<typeid(myt12._5 ).name()<<endl;
cout<<" value: "<< myt12._5 <<endl;
cout<<"_6 type : "<<typeid(myt12._6 ).name()<<endl;
cout<<" value: "<< myt12._6 <<endl;
cout<<"_7 type : "<<typeid(myt12._7 ).name()<<endl;
cout<<" value: "<< myt12._7 <<endl;
cout<<"_8 type : "<<typeid(myt12._8 ).name()<<endl;
cout<<" value: "<< myt12._8 <<endl;
cout<<"_9 type : "<<typeid(myt12._9 ).name()<<endl;
cout<<" value: "<< myt12._9 <<endl;
cout<<"_10 type : "<<typeid(myt12._10).name()<<endl;
cout<<" value: "<< myt12._10 <<endl;
cout<<"_11 type : "<<typeid(myt12._11).name()<<endl;
cout<<" value: "<< myt12._11 <<endl;
cout<<"_12 type : "<<typeid(myt12._12).name()<<endl;
cout<<" value: "<< myt12._12 <<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamTuple_000*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamTuple_000<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZftMakeTuple_000.exe ZftMakeTuple_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZftMakeTuple_000_D.exe ZftMakeTuple_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -std=c++98 -o ZftMakeTuple_000_mw_98.exe ZftMakeTuple_000.cpp -I../ -D__CPLUSPLUS_VER__=199800
g++.exe -std=c++98 -o ZftMakeTuple_000_mw_98_D.exe ZftMakeTuple_000.cpp -I../ -D__CPLUSPLUS_VER__=199800 -D_DEBUG
g++.exe -o ZftMakeTuple_000_mw.exe ZftMakeTuple_000.cpp -I../
g++.exe -o ZftMakeTuple_000_mw_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG
./ZftMakeTuple_000_mw.exe
./ZftMakeTuple_000_mw_D.exe
./ZftMakeTuple_000_mw_98.exe
./ZftMakeTuple_000_mw_98_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
//g++ -std=c++98 -o ZftMakeTuple_000.exe ZftMakeTuple_000.cpp -I../ -lpthread
//g++ -std=c++98 -o ZftMakeTuple_000_D.exe ZftMakeTuple_000.cpp -I../ -lpthread -D_DEBUG
g++ -o ZftMakeTuple_000.exe ZftMakeTuple_000.cpp -I../
g++ -o ZftMakeTuple_000_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG
g++ -o ZftMakeTuple_000_98.exe ZftMakeTuple_000.cpp -I../ -D__CPLUSPLUS_VER__=199800
g++ -o ZftMakeTuple_000_98_D.exe ZftMakeTuple_000.cpp -I../ -D__CPLUSPLUS_VER__=199800 -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZftMakeTuple_000.exe
./ZftMakeTuple_000_D.exe
./ZftMakeTuple_000_98.exe
./ZftMakeTuple_000_98_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,262 @@

#include <iostream>
#include "ZCppMain/ZtCArray.H"
using namespace std;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamArray
{
public:
#ifndef _WIN
class CHelpObj
{
public:
CHelpObj()
{
}
CHelpObj(const CHelpObj& rhs)
{
cout<<"* CHelpObj(const CHelpObj& rhs)"<<endl;
}
public:
};
struct StFunctor
{
static void ShowElement(int ArgiValue){cout<<"#1 Value="<<ArgiValue<<endl;}
};
struct StFunctor2
{
static void ShowElement(int ArgiValue, CHelpObj)
{cout<<"#2 Value="<<ArgiValue<<", CHelpObj Addr=None"<<" With CHelpObj"<<endl;}
};
struct StFunctor3
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#3 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref"<<endl;}
};
struct StFunctor4
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#4 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj in Ptr"<<endl;}
};
struct StFunctor5
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj& AR_CHelpObj2)
{cout<<"#5 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref 2"<<endl;}
};
struct StFunctor6
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj AO_CHelpObj2)
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
};
#endif //#ifndef _WIN
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
using namespace std ;
using namespace ZNsMain;
#if defined(__linux__) && defined(__GNUC__)
cout<<"# __GNUC__ : "<<__GNUC__<<endl;
#endif
#if defined(__cplusplus)
cout<<"# __cplusplus : "<<__cplusplus<<endl;
#endif
typedef ZtCArray<int> CArray ;
typedef CArray::IterEasy IterEasy;
CArray VO_Array;
VO_Array.AddTail(10);
VO_Array.AddTail(20);
VO_Array.AddTail(30);
VO_Array.AddTail(40);
#ifdef _WIN
class CHelpObj
{
public:
CHelpObj()
{
}
CHelpObj(const CHelpObj& rhs)
{
cout<<"* CHelpObj(const CHelpObj& rhs)"<<endl;
}
public:
}; CHelpObj VO_CHelpObj; cout<<"VO_CHelpObj Ptr : "<<&VO_CHelpObj<<endl;
struct StFunctor
{
static void ShowElement(int ArgiValue){cout<<"#1 Value="<<ArgiValue<<endl;}
};
struct StFunctor2
{
static void ShowElement(int ArgiValue, CHelpObj)
{cout<<"#2 Value="<<ArgiValue<<", CHelpObj Addr=None"<<" With CHelpObj"<<endl;}
};
struct StFunctor3
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#3 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref"<<endl;}
};
struct StFunctor4
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#4 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj in Ptr"<<endl;}
};
struct StFunctor5
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj& AR_CHelpObj2)
{cout<<"#5 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref 2"<<endl;}
};
struct StFunctor6
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj AO_CHelpObj2)
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
};
#else // _WIN
CHelpObj VO_CHelpObj;
cout<<"VO_CHelpObj Ptr : "<<&VO_CHelpObj<<endl;
#endif //!_WIN
VO_Array.IterElement(StFunctor ::ShowElement);
VO_Array.IterElement(StFunctor2::ShowElement, VO_CHelpObj );
VO_Array.IterElement(StFunctor3::ShowElement, ZftMCR(VO_CHelpObj) );
VO_Array.IterElement(StFunctor4::ShowElement, ZftMCP(VO_CHelpObj) );
VO_Array.IterElement(StFunctor5::ShowElement, ZftMCP(VO_CHelpObj), ZftMCP(VO_CHelpObj) );
VO_Array.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
IterEasy VH_Iter = VO_Array.ItHEasy();
__for1(int, i, VO_Array.size())
{
cout<<i<<"th value="<<
VO_Array.ItD(VH_Iter)<<endl;
VO_Array.ItNext(VH_Iter);
}
///////////////////////////////
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamArray*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamArray<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCArray_000.exe ZtCArray_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCArray_000_D.exe ZtCArray_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCArray_000_mw.exe ZtCArray_000.cpp -I../
g++.exe -o ZtCArray_000_mw_D.exe ZtCArray_000.cpp -I../ -D_DEBUG
./ZtCArray_000_mw.exe
./ZtCArray_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCArray_000.exe ZtCArray_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCArray_000_D.exe ZtCArray_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCArray_000.exe
./ZtCArray_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,969 @@

#include <iostream>
#include "ZCppMain/ZtCStringEx.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCList
{
public:
class CHelpObj
{
public:
CHelpObj()
{
cout<<"* CHelpObj()"<<endl;
}
CHelpObj(const CHelpObj& rhs)
{
cout<<"* CHelpObj(const CHelpObj& rhs)"<<endl;
}
public:
};/*
class CHelpObj*/
struct StFunctor
{
static void ShowElement(int ArgiValue){cout<<"#1 Value="<<ArgiValue<<endl;}
};
struct StFunctor2
{
static void ShowElement(int ArgiValue, CHelpObj)
{cout<<"#2 Value="<<ArgiValue<<", CHelpObj Addr=None"<<" With CHelpObj"<<endl;}
};
struct StFunctor3
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#3 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref"<<endl;}
};
struct StFunctor4
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#4 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj in Ptr"<<endl;}
};
struct StFunctor5
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj& AR_CHelpObj2)
{cout<<"#5 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref 2"<<endl;}
};
struct StFunctor6
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj AO_CHelpObj2)
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
};
public:
typedef ZtCStringBase<char> CStringBase ;
typedef const CStringBase CStringBaseC;
/* 아래 자료형에 대해, CStringBase::Fetch() 호출 여부 실험.
ZtCBaseList<CStringBase&, CStringBase &>
ZtCBaseList<CStringBase&, CStringBaseC&>
*/
typedef ZtCBaseList
<CStringBase, CStringBase &> CStringList1 ;
typedef ZtCBaseList
<CStringBase, CStringBaseC&> CStringList2 ;
public:
class ZCBaseListEx10 : public ZtCBaseList
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
{
public :
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
ZCBaseList; ///////////////////////////////////////////////////////////////
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>;
///////////////////////////////////////////////////////////////////////////
/*****************************************************************************/
typedef typename ZCBaseList::ZCLink ZCLink ;
/*****************************************************************************/
typedef typename ZCBaseList::iterator iterator ;
typedef typename ZCBaseList::const_iterator const_iterator;
/*****************************************************************************/
public :
_VT_ ZTypLong capacity() const
{
cout<<"[ZCBaseListEx10 : capacity()]"; return 0;
}/*
_VT_ ZTypLong capacity() const*/
_VT_ ZTypLong size_free() const
{
cout<<"[ZCBaseListEx10 : size_free()]"; return 0;
}/*
_VT_ ZTypLong size_free() const*/
private:
_VT_ ZCLink* SendFreeOut() const
{
cout<<"** ZCBaseListEx10 : SendFreeOut()"<<endl;
return this->ZCBaseList::NewLink();
}/*
_VT_ ZCLink* SendFreeOut() const*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const
{
cout<<"** ZCBaseListEx10 : SendFreeOut(TypeArg)"<<endl;
return this->ZCBaseList::NewLink(AO_ArgData);
}/*
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const*/
_VT_ void SendFreeOut
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) const
{
cout<<"** ZCBaseListEx10 : SendFreeOut("<<AL_NeedCnt<<", ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
}
_VT_ void SendFreeOutCopy /*///////////////////////*/
(
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
) const
/////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, "<<AL_FarNum<<", ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
}
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx10 : RecvFreeIn(AP_DelLink)"<<endl;
this->ZCBaseList::DelLink(AP_DelLink);
}/*
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn //////////////////////////////////
(
ZTypLong AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
///////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx10 : RecvFreeIn("<<AL_CutCnt<<", AP_CutHead, AP_CutTail)"<<endl;
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
}
private:
};/*
class ZCBaseListEx10 : public ZtCBaseList*/
class ZCBaseListEx11 : public ZtCBaseList
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
{
public :
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
ZCBaseList; ///////////////////////////////////////////////////////////////
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase, CStringBase&, ZCAllocator, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>;
///////////////////////////////////////////////////////////////////////////
/*****************************************************************************/
typedef typename ZCBaseList::ZCLink ZCLink ;
/*****************************************************************************/
typedef typename ZCBaseList::iterator iterator ;
typedef typename ZCBaseList::const_iterator const_iterator;
/*****************************************************************************/
public :
_VT_ ZTypLong capacity() const
{
cout<<"[ZCBaseListEx11 : capacity()]"; return 0;
}/*
_VT_ ZTypLong capacity() const*/
_VT_ ZTypLong size_free() const
{
cout<<"[ZCBaseListEx11 : size_free()]"; return 0;
}/*
_VT_ ZTypLong size_free() const*/
private:
_VT_ ZCLink* SendFreeOut()
{
cout<<"** ZCBaseListEx11 : SendFreeOut()"<<endl;
return this->ZCBaseList::NewLink();
}/*
_VT_ ZCLink* SendFreeOut()*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
{
cout<<"** ZCBaseListEx11 : SendFreeOut(CStringBase&)"<<endl;
return this->ZCBaseList::NewLink(AO_ArgData);
}/*
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
_VT_ void SendFreeOut
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
{
cout<<"** ZCBaseListEx11 : SendFreeOut("<<AL_NeedCnt<<", ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
}
_VT_ void SendFreeOutCopy /*///////////////////////*/
(
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
/////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, "<<AL_FarNum<<", ZCLink*&, ZCLink*&)"<<endl;
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
}
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx11 : RecvFreeIn(AP_DelLink)"<<endl;
this->ZCBaseList::DelLink(AP_DelLink);
}/*
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
_VT_ void RecvFreeIn //////////////////////////////////
(
ZTypLong AL_CutCnt ,
ZCLink* AP_CutHead,
ZCLink* AP_CutTail
)
///////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx11: RecvFreeIn("<<AL_CutCnt<<", AP_CutHead, AP_CutTail)"<<endl;
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
}
private:
};/*
class ZCBaseListEx11 : public ZtCBaseList*/
typedef typename ZCBaseListEx10::ZCLink ZCLink10;
typedef typename ZCBaseListEx11::ZCLink ZCLink11;
static void ShowDataInNode(const CStringBase& AR_Data, ZTypLong& ARRI_CallCnt)
{
cout<<++ARRI_CallCnt<<"* Data : "<<AR_Data<<endl;
}/*
static void ShowDataInNode(const CStringBase& AR_Data, ZTypLong& ARRI_CallCnt)*/
static void Append10(ZCLink10& AR_CLink)
{
(*AR_CLink).append("__");
}/*
static void Append10(ZCLink10& AR_CLink)*/
static void ShowNode10(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node10 Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node10 Curr : " <<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node10 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode10(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode11(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node11 Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node11 Curr : " <<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node11 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode11(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode10_2(ZCLink10& AR_CLink, ostream& AR_OS, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node10_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node10_2 Curr : " <<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node10_2 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode10_2(ZCLink10& AR_CLink, ostream& AR_OS, ZTypLong& ARRI_CallCnt)*/
static void ShowNode11_2(ZCLink11& AR_CLink, ostream& AR_OS, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node11_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node11_2 Curr : " <<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node11_2 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode11_2(ZCLink11& AR_CLink, ostream& AR_OS, ZTypLong& ARRI_CallCnt)*/
static void ShowNode10_3(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)
{
cout<<++ARRI_CallCnt<<" * Node10 Curr : " <<*(AR_CLink )<<endl;
}/*
static void ShowNode10_3(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode11_3(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)
{
cout<<++ARRI_CallCnt<<" * Node11 Curr : " <<*(AR_CLink )<<endl;
}/*
static void ShowNode11_3(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)*/
class ZCTypeView
{
public:
template<typename TTypChain> void OnMeetType()
{
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetType(int& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
};/*
class ZCTypeView*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
typedef ZtCTypeChain
<
double , ZtCTypeChain<
int , ZtCTypeChain<
wchar_t, ZtCTypeChain<
char ,
ZCEmpty > > >
> ZCTypeChain; ZCTypeView VO_ZCTypeView;
int VI_CallNo = 0;
cout<<"*** tmpl chain size = "<<ZCTypeChain::Size()<<endl;
ZftIterTypeChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterHead(VO_ZCTypeView);
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterTail(VO_ZCTypeView);
ZftIterTypeChainHead<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZftIterTypeChainTail<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::
IterHead(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::
IterTail(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
ZTypLong VI_CallCnt=0;
CStringBase VO_CStringBase;
CStringList1 VO_ListOfStr1 ;
CStringList2 VO_ListOfStr2 ;
VO_ListOfStr1.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr1.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr1.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr1.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr1.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
cout<<"# 1th IterElement ####" <<endl;
{
VO_ListOfStr1.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
}
/*///////////////////////////////////*/
cout<<endl;
VO_ListOfStr2.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr2.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr2.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr2.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr2.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
cout<<"# 2th IterElement ####" <<endl;
{
VO_ListOfStr2.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
}
/*///////////////////////////////////*/
typedef ZtCBaseList<int> CIntList;
CHelpObj VO_CHelpObj;
CIntList VO_CIntList;
VO_CIntList.AddTail(10);
VO_CIntList.AddTail(20);
VO_CIntList.AddTail(30);
VO_CIntList.AddTail(40);
cout<<endl<<"#### Show CIntList Element ####"<<endl<<endl;
VO_CIntList.IterElement(StFunctor ::ShowElement);
VO_CIntList.IterElement(StFunctor2::ShowElement, VO_CHelpObj );
VO_CIntList.IterElement(StFunctor3::ShowElement, ZftMCR(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor4::ShowElement, ZftMCP(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor5::ShowElement, ZftMCP(VO_CHelpObj), ZftMCP(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
cout<<endl<<"#### ZCBaseListEx10 and ZCBaseListEx11 ####"<<endl<<endl;
ZCBaseListEx10 VO_ZCBaseListEx10 ;
ZCBaseListEx10 VO_ZCBaseListEx10_2;
ZCBaseListEx11 VO_ZCBaseListEx11 ;
VO_CStringBase="";
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-1"));
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-2"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-1"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-2"));
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10"<<endl<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-3"));
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-4"));
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 after VO_ZCBaseListEx10.AddTail() 2 times"<<endl<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# VO_ZCBaseListEx10_2.AddHead(VO_ZCBaseListEx10)"<<endl<<endl;
VO_ZCBaseListEx10_2.AddHead(VO_ZCBaseListEx10) ;
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# VO_ZCBaseListEx10_2 : DeleteTail(2)"<<endl<<endl;
VO_ZCBaseListEx10_2.DeleteTail(2);
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# VO_ZCBaseListEx10_2 : DeleteHead(1)"<<endl<<endl;
VO_ZCBaseListEx10_2.DeleteHead(1);
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
cout<<"# VO_ZCBaseListEx10 : capacity()="<<VO_ZCBaseListEx10 .capacity()<<endl;
cout<<"# VO_ZCBaseListEx10_2 : capacity()="<<VO_ZCBaseListEx10_2.capacity()<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10 , ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_2, ZftMCP(cout), ZftMCP(VI_CallCnt=0));
cout<<endl<<"# show VO_ZCBaseListEx10 element"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10, ZftMCP(VI_CallCnt=0));
VO_ZCBaseListEx10_2.SendOutTail
(*VO_ZCBaseListEx10_2.GetLinkPtr(2), VO_ZCBaseListEx10);
cout<<endl<<"# after VO_ZCBaseListEx10_2's 2th link to VO_ZCBaseListEx10's tail"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10 , ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_2, ZftMCP(cout), ZftMCP(VI_CallCnt=0));
VO_ZCBaseListEx10.IterElemLink(&Append10);
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
VO_ZCBaseListEx10.SendRangeOutAfter
(
*VO_ZCBaseListEx10.GetLinkPtr(2)
, *VO_ZCBaseListEx10.GetLinkPtr(3)
, 2
, VO_ZCBaseListEx10_2
, VO_ZCBaseListEx10_2.GetLinkOpt(2)
);
cout<<endl<<"# after VO_ZCBaseListEx10's 2~3th link to VO_ZCBaseListEx10_2's 2th link after"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10"<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10.SendRangeOutBefore(1th, 2th, 2, rhs, 1th)"<<endl;
VO_ZCBaseListEx10.SendRangeOutBefore
(
*VO_ZCBaseListEx10.GetLinkPtr(1)
, *VO_ZCBaseListEx10.GetLinkPtr(2)
, 2
, VO_ZCBaseListEx10_2
, VO_ZCBaseListEx10_2.GetLinkOpt(1)
);
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10.CopyThis(RR(VO_ZCBaseListEx10_2))"<<endl;
VO_ZCBaseListEx10.CopyThis(RR(VO_ZCBaseListEx10_2));
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCBaseListEx10 .IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLinkNext(1th)"<<endl;
VO_ZCBaseListEx10_2.SwapLinkNext(VO_ZCBaseListEx10_2.HeadRef());
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLinkNext(last)"<<endl;
VO_ZCBaseListEx10_2.SwapLinkNext(VO_ZCBaseListEx10_2.TailRef());
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLinkNext(last-1)"<<endl;
VO_ZCBaseListEx10_2.SwapLinkNext(VO_ZCBaseListEx10_2.TailRef(1));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2 : Iter Rev"<<endl;
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLinkRev(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLinkPrev(2th)"<<endl;
VO_ZCBaseListEx10_2.SwapLinkPrev(VO_ZCBaseListEx10_2.HeadRef(1));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLinkPrev(last)"<<endl;
VO_ZCBaseListEx10_2.SwapLinkPrev(VO_ZCBaseListEx10_2.TailRef());
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(1th, 4th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(), VO_ZCBaseListEx10_2.HeadRef(3) );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(2th, 1th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(1), VO_ZCBaseListEx10_2.HeadRef() );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(2th, 5th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(1), VO_ZCBaseListEx10_2.HeadRef(4) );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(4th, 5th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(3), VO_ZCBaseListEx10_2.HeadRef(4) );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(6th, 2th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(5), VO_ZCBaseListEx10_2.HeadRef(1) );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(6th, 5th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(5), VO_ZCBaseListEx10_2.HeadRef(4) );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.SwapLink(6th, 1th)"<<endl;
VO_ZCBaseListEx10_2.SwapLink
( VO_ZCBaseListEx10_2.HeadRef(5), VO_ZCBaseListEx10_2.HeadRef() );
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkHead(2th)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkHead( VO_ZCBaseListEx10_2.HeadRef(1));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkTail(1th)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkTail( VO_ZCBaseListEx10_2.HeadRef());
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkAfter(1th, 6th)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkAfter
( VO_ZCBaseListEx10_2.HeadRef(), VO_ZCBaseListEx10_2.HeadOpt(5));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkBefore(5th, 1th)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkBefore
( VO_ZCBaseListEx10_2.HeadRef(4), VO_ZCBaseListEx10_2.HeadOpt());
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkAfter(1th, 2th)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkAfter
( VO_ZCBaseListEx10_2.HeadRef(), VO_ZCBaseListEx10_2.HeadOpt(1));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveRangeInAfter(1th~3th => 6th)"<<endl;
VO_ZCBaseListEx10_2.MoveRangeInAfter
(
VO_ZCBaseListEx10_2.HeadRef( ),
VO_ZCBaseListEx10_2.HeadRef(2),
VO_ZCBaseListEx10_2.HeadOpt(5)
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveRangeInBefore(4th~6th => 1th)"<<endl;
VO_ZCBaseListEx10_2.MoveRangeInBefore
(
VO_ZCBaseListEx10_2.HeadRef(3),
VO_ZCBaseListEx10_2.HeadRef(5),
VO_ZCBaseListEx10_2.HeadOpt( )
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# VO_ZCBaseListEx10_2 for_it() show "<<endl;
__for_it(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}
cout<<endl<<"# VO_ZCBaseListEx10_2 for_it_r() show "<<endl;
__for_it_r(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}
cout<<endl<<"# VO_ZCBaseListEx10_2 for_itc() show "<<endl;
__for_itc(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}
cout<<"*****************************************************"<<endl;
_FOR_ITER_EASY_START0_C (VO_ZCBaseListEx10_2, VH_NowIter, i)
{
cout<<"# list10_2 const: "<<(i+1)<<" "<<VO_ZCBaseListEx10_2.ItD(VH_NowIter)<<endl;
}
_FOR_ITER_EASY_CLOSE0_C (VO_ZCBaseListEx10_2, VH_NowIter, i)
cout<<"*****************************************************"<<endl;
_FOR_ITER_EASY_START0_RC(VO_ZCBaseListEx10_2, VH_NowIter, i)
{
cout<<"# list10_2 rev const: "<<(i+1)<<" "<<VO_ZCBaseListEx10_2.ItD(VH_NowIter)<<endl;
}
_FOR_ITER_EASY_CLOSE0_RC(VO_ZCBaseListEx10_2, VH_NowIter, i)
cout<<"*****************************************************"<<endl;
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(1th, 3th after)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef( ),
VO_ZCBaseListEx10_2.HeadRef(2),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(3th, 6th after)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef(2),
VO_ZCBaseListEx10_2.HeadRef(5),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(6th, 1th before)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef(5),
VO_ZCBaseListEx10_2.HeadRef( ),
false
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(1th, 6th after)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef( ),
VO_ZCBaseListEx10_2.HeadRef(5),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(2th, 3th after)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef(1),
VO_ZCBaseListEx10_2.HeadRef(2),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(2th, 3th before)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef(1),
VO_ZCBaseListEx10_2.HeadRef(2),
false
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveLinkIn(2th, 1th before)"<<endl;
VO_ZCBaseListEx10_2.MoveLinkIn
(
VO_ZCBaseListEx10_2.HeadRef(1),
VO_ZCBaseListEx10_2.HeadRef( ),
false
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveRangeIn(1th, 3th, 6th after)"<<endl;
VO_ZCBaseListEx10_2.MoveRangeIn
(
VO_ZCBaseListEx10_2.HeadRef( ),
VO_ZCBaseListEx10_2.HeadRef(2),
VO_ZCBaseListEx10_2.HeadRef(5),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveRangeIn(5th, 6th, 1th before)"<<endl;
VO_ZCBaseListEx10_2.MoveRangeIn
(
VO_ZCBaseListEx10_2.HeadRef(4),
VO_ZCBaseListEx10_2.HeadRef(5),
VO_ZCBaseListEx10_2.HeadRef( ),
false
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# after VO_ZCBaseListEx10_2.MoveRangeIn(2th, 3th, 4th after)"<<endl;
VO_ZCBaseListEx10_2.MoveRangeIn
(
VO_ZCBaseListEx10_2.HeadRef(1),
VO_ZCBaseListEx10_2.HeadRef(2),
VO_ZCBaseListEx10_2.HeadRef(3),
true
);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCList*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCBaseList_000.exe ZtCBaseList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCBaseList_000_D.exe ZtCBaseList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCBaseList_000_mw.exe ZtCBaseList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation
g++.exe -o ZtCBaseList_000_mw_D.exe ZtCBaseList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
./ZtCBaseList_000_mw.exe
./ZtCBaseList_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCBaseList_000.exe ZtCBaseList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCBaseList_000_D.exe ZtCBaseList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCBaseList_000.exe
./ZtCBaseList_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,256 @@
#include <iostream>
#include <string>
#include "ZCppMain/ZtCLinkList.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCLinkList
{
public:
typedef ZNsIFaceEx::ZtCLink<string, ZCEmpty> ZCLinkCStr ;
typedef ZtCLinkList<ZCLinkCStr> ZCLinkStrList;
typedef ZCLinkStrList::ZCLinkOpt ZCStrLinkOpt ;
public:
static void ShowNode0(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Curr : "<<(AR_CLink)()<<endl;
}/*
static void ShowNode0(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode1(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Prev : "<<(AR_CLink-1)()<<endl;
cout<<ARRI_CallCnt<<" * Node Curr : " <<(AR_CLink )()<<endl;
cout<<ARRI_CallCnt<<" * Node Next : "<<(AR_CLink+1)()<<endl;
}/*
static void ShowNode1(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void AppendEach(ZCLinkCStr& AR_CLink)
{
AR_CLink().append("_");
}/*
static void AppendEach(ZCLinkCStr& AR_CLink)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZTypLong VI_CallCnt = 0 ;
ZCLinkStrList VO_ZCLinkStrLis1;
ZCLinkStrList VO_ZCLinkStrLis2;
ZCStrLinkOpt VO_StrLinkOpt = VO_ZCLinkStrLis1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.bool() ="<<bool(VO_StrLinkOpt) <<endl;
VO_ZCLinkStrLis1.AddTail()()=string("123");
VO_ZCLinkStrLis1.AddTail()()=string("ABC");
VO_ZCLinkStrLis1.AddTail()()=string("xyz");
VO_ZCLinkStrLis2.AddTail()()=string("Z01");
VO_ZCLinkStrLis2.AddTail()()=string("Z02");
VO_ZCLinkStrLis2.AddTail()()=string("Z03");
VO_StrLinkOpt = VO_ZCLinkStrLis1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
{
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()<<endl;
cout<<"# value by VO_StrLinkOpt() : "<<VO_StrLinkOpt() <<endl;
}/*
if(VO_StrLinkOpt.has_value())*/
VO_StrLinkOpt = VO_ZCLinkStrLis1.GetTailOpt();
cout<<"# VO_StrLinkOpt.GetTailOpt() : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetTailOpt() : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_ZCLinkStrLis1.JoinHead(VO_ZCLinkStrLis2);
cout<<"# after VO_ZCLinkStrLis1.JoinHead(VO_ZCLinkStrLis2)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_ZCLinkStrLis2 = VO_ZCLinkStrLis1 ;
cout<<"# after VO_ZCLinkStrLis2 = VO_ZCLinkStrLis1"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&AppendEach);
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.SendRangeOutAfter
(
VO_ZCLinkStrLis1.GetObjOpt(1).value()
, VO_ZCLinkStrLis1.GetObjOpt(2).value()
, 2
, VO_ZCLinkStrLis2
, VO_ZCLinkStrLis2.GetObjOpt(1)
) ;
cout<<"# after VO_ZCLinkStrLis1.SendRangeOutAfter(1th, 2th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis2.SendRangeOutBefore
(
VO_ZCLinkStrLis2.GetObjOpt(7).value()
, VO_ZCLinkStrLis2.GetObjOpt(8).value()
, 2
, VO_ZCLinkStrLis1
, VO_ZCLinkStrLis1.GetObjOpt(1)
) ;
cout<<"# after VO_ZCLinkStrLis2.SendRangeOutAfter(7th, 8th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCLinkList*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCLinkList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD> cygwin <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// g++ -mno-cygwin -o ZtCLinkList_000.exe ZtCLinkList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCLinkList_000_D.exe ZtCLinkList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
<EFBFBD><EFBFBD> mingw <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g++.exe -o ZtCLinkList_000_mw.exe ZtCLinkList_000.cpp -I../ -lWs2_32
g++.exe -o ZtCLinkList_000_mw_D.exe ZtCLinkList_000.cpp -I../ -lWs2_32 -D_DEBUG
./ZtCLinkList_000_mw.exe
./ZtCLinkList_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
<EFBFBD><EFBFBD> Linux <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g++ -std=c++98 -o ZtCLinkList_000.exe ZtCLinkList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCLinkList_000_D.exe ZtCLinkList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
./ZtCLinkList_000.exe
./ZtCLinkList_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,431 @@

#include <iostream>
#include <string>
#include "ZCppMain/ZtCLinkList.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCLinkList
{
public:
class ZCLinkData : public ZNsIFaceEx::ZtCLink<ZCEmpty, ZCLinkData>
{
private:
string mo_DataCStr;
private:
static int SI_CallCnt;
public :
typedef ZNsIFaceEx::ZtCLink<ZCEmpty, ZCLinkData> TypeBase;
public :
ZCLinkData() : ZNsIFaceEx::ZtCLink<ZCEmpty, ZCLinkData>()
{
cout<<"* ZCLinkData() : "<<++ZCLinkData::SI_CallCnt<<endl;
}
ZCLinkData(const ZCLinkData& rhs) :
ZNsIFaceEx::
ZtCLink<ZCEmpty, ZCLinkData>(),
mo_DataCStr(rhs.mo_DataCStr)
{cout<<"* ZCLinkData(const ZCLinkData& rhs) : "<<++ZCLinkData::SI_CallCnt<<endl;}
ZCLinkData(const TypeBase& rhs) :
ZNsIFaceEx::
ZtCLink<ZCEmpty, ZCLinkData>(),
mo_DataCStr
(
(*static_cast<const ZCLinkData*>(&rhs)).mo_DataCStr
)
{cout<<"* ZCLinkData(const TypeBase& rhs) : "<<++ZCLinkData::SI_CallCnt<<endl;}
~ZCLinkData()
{
cout<<"* ~ZCLinkData() : "<<ZCLinkData::SI_CallCnt--<<endl;
}
ZCLinkData& operator=(const ZCLinkData& rhs)
{
mo_DataCStr = rhs.mo_DataCStr; return *this;
}/*
ZCLinkData& operator=(const ZCLinkData& rhs)*/
/***/ string& GetData() {return mo_DataCStr;}
const string& GetData() const{return mo_DataCStr;}
public :
};/*
class ZCLinkData : public ZNsIFaceEx::ZtCLink<ZCEmpty, ZCLinkData>*/
typedef ZNsIFaceEx::ZtCLink
<ZCEmpty, ZCLinkData> ZCLinkBase;
typedef ZNsIFaceEx::ZtCLink
<string , ZCEmpty > ZCLinkStr ;
public:
typedef ZtCLinkList<ZCLinkBase> ZCLinkDataList;
typedef ZtCLinkList<ZCLinkStr > ZCLinkStrList ;
typedef typename
ZCLinkDataList::ZCLinkOpt ZCStrLinkOpt ;
public:
static void ShowNode0(ZCLinkBase& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Curr : "<<(AR_CLink)().GetData()<<endl;
}/*
static void ShowNode0(ZCLinkBase& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode1(ZCLinkBase& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Prev : "<<(AR_CLink-1)().GetData()<<endl;
cout<<ARRI_CallCnt<<" * Node Curr : " <<(AR_CLink )().GetData()<<endl;
cout<<ARRI_CallCnt<<" * Node Next : "<<(AR_CLink+1)().GetData()<<endl;
}/*
static void ShowNode1(ZCLinkBase& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void AppendEach(ZCLinkBase& AR_CLink)
{
AR_CLink().GetData().append("_");
}/*
static void AppendEach(ZCLinkBase& AR_CLink)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZTypLong VI_CallCnt =0 ;
ZCLinkDataList VO_CDataList1;
ZCLinkDataList VO_CDataList2;
ZCLinkStrList VO_CStrLis20 ;
ZCStrLinkOpt VO_StrLinkOpt = VO_CDataList1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.bool() ="<<bool(VO_StrLinkOpt) <<endl;
VO_CDataList1.AddTail()().GetData()=string("123");
VO_CDataList1.AddTail()().GetData()=string("ABC");
VO_CDataList1.AddTail()().GetData()=string("xyz");
VO_CDataList2.AddTail()().GetData()=string("Z01");
VO_CDataList2.AddTail()().GetData()=string("Z02");
VO_CDataList2.AddTail()().GetData()=string("Z03");
VO_CStrLis20.AddTail()()=string("__1");
VO_CStrLis20.AddTail()()=string("__2");
VO_CStrLis20.AddTail()()=string("__3");
VO_StrLinkOpt = VO_CDataList1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
{
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()().GetData()<<endl;
cout<<"# value by VO_StrLinkOpt() : "<<VO_StrLinkOpt() ().GetData()<<endl;
}/*
if(VO_StrLinkOpt.has_value())*/
VO_StrLinkOpt = VO_CDataList1.GetTailOpt();
cout<<"# VO_StrLinkOpt.GetTailOpt() : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetTailOpt() : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
{
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()().GetData()<<endl;
cout<<"# value by VO_StrLinkOpt() : "<<VO_StrLinkOpt() ().GetData()<<endl;
}/*
if(VO_StrLinkOpt.has_value())*/
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_CDataList1.JoinHead(VO_CDataList2);
cout<<"# after VO_CDataList1.JoinHead(VO_CDataList2)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_CDataList2 = VO_CDataList1 ;
cout<<"# after VO_CDataList2 = VO_CDataList1"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&AppendEach);
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.SendRangeOutAfter
(
VO_CDataList1.GetObjOpt(1).value()
, VO_CDataList1.GetObjOpt(2).value()
, 2
, VO_CDataList2
, VO_CDataList2.GetObjOpt(1)
) ;
cout<<"# after VO_CDataList1.SendRangeOutAfter(1th, 2th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList2.SendRangeOutBefore
(
VO_CDataList2.GetObjOpt(7).value()
, VO_CDataList2.GetObjOpt(8).value()
, 2
, VO_CDataList1
, VO_CDataList1.GetObjOpt(1)
) ;
cout<<"# after VO_CDataList2.SendRangeOutAfter(7th, 8th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList2.CopyThis( RR(VO_CDataList1) );
cout<<"# after VO_CDataList2.CopyThis( RR(VO_CDataList1) )"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_CDataList2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.SwapLink
(VO_CDataList1.HeadRef(), VO_CDataList1.HeadRef(1));
cout<<"# after VO_CDataList1.SwapLink(1th, 2th)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.SwapLink
(VO_CDataList1.HeadRef(), VO_CDataList1.HeadRef(11));
cout<<"# after VO_CDataList1.SwapLink(1th, 12th)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.SwapLink
(VO_CDataList1.HeadRef(11), VO_CDataList1.HeadRef(10));
cout<<"# after VO_CDataList1.SwapLink(12th, 11th)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.MoveLinkTail
(VO_CDataList1.HeadRef());
cout<<"# after VO_CDataList1.MoveLinkTail(1th)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
_FOR_ITER_EASY_START0_C (VO_CDataList1, VH_NowIter, i)
{
cout<<"# list1 const: "<<(i+1)<<" "<<VO_CDataList1.ItD(VH_NowIter).GetData()<<endl;
}
_FOR_ITER_EASY_CLOSE0_C (VO_CDataList1, VH_NowIter, i)
cout<<"***********************************************"<<endl;
_FOR_ITER_EASY_START0_RC(VO_CDataList1, VH_NowIter, i)
{
cout<<"# list1 rev const: "<<(i+1)<<" "<<VO_CDataList1.ItD(VH_NowIter).GetData()<<endl;
}
_FOR_ITER_EASY_CLOSE0_RC(VO_CDataList1, VH_NowIter, i)
cout<<"***********************************************"<<endl;
__for_it(ZCLinkDataList, VO_CDataList1, VH_NowIter)
{
cout<<"# list1 __for_it : "<<VH_NowIter.GetPos()<<" "<<(*VH_NowIter).GetData()<<endl;
}
cout<<"***********************************************"<<endl;
__for_it(ZCLinkStrList , VO_CStrLis20, VH_NowIter)
{
cout<<"# list20 __for_it : "<<VH_NowIter.GetPos()<<" "<<(*VH_NowIter)<<endl;
}
_FOR_ITER_EASY_START0_C(VO_CStrLis20, VH_NowIter, i)
{
cout<<"# list20 const: "<<(i+1)<<" "<<VO_CStrLis20.ItD(VH_NowIter)<<endl;
}
_FOR_ITER_EASY_CLOSE0_C(VO_CStrLis20, VH_NowIter, i)
cout<<"***********************************************"<<endl;
VO_CDataList1.MoveRangeIn
(
VO_CDataList1.HeadRef( ),
VO_CDataList1.HeadRef(1 ),
VO_CDataList1.HeadRef(11),
true
);
cout<<"# after VO_CDataList1.MoveRangeIn(1th, 2th, 12th, after)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.MoveRangeIn
(
VO_CDataList1.HeadRef(1 ),
VO_CDataList1.HeadRef(11),
VO_CDataList1.HeadRef( ),
false
);
cout<<"# after VO_CDataList1.MoveRangeIn(2th, 12th, 1th, before)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_CDataList1.MoveRangeIn
(
VO_CDataList1.HeadRef( ),
VO_CDataList1.HeadRef(1),
VO_CDataList1.HeadRef(2),
false
);
cout<<"# after VO_CDataList1.MoveRangeIn(1th, 2th, 3th, before)"<<endl;
VO_CDataList1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCLinkList*/
template<typename TDummy> int
ZtCExamCLinkList<TDummy>::ZCLinkData::SI_CallCnt(0) ;
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCLinkList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCLinkList_001.exe ZtCLinkList_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCLinkList_001_D.exe ZtCLinkList_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCLinkList_001_mw.exe ZtCLinkList_001.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation
g++.exe -o ZtCLinkList_001_mw_D.exe ZtCLinkList_001.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
./ZtCLinkList_001_mw.exe
./ZtCLinkList_001_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCLinkList_001.exe ZtCLinkList_001.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCLinkList_001_D.exe ZtCLinkList_001.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCLinkList_001.exe
./ZtCLinkList_001_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,268 @@
#include <iostream>
#include <string>
#include "ZCppMain/ZtCLinkList.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCLinkList
{
public:
typedef ZNsIFaceEx::ZtCLink<string, ZCEmpty> ZCLinkCStr ;
typedef ZtCLinkMoveList<ZCLinkCStr> ZCLinkStrList;
typedef ZCLinkStrList::ZCLinkOpt ZCStrLinkOpt ;
public:
static void ShowNode0(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt; cout<<ARRI_CallCnt<<" * Node Curr : "<<(AR_CLink)()<<endl;
}/*
static void ShowNode0(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode1(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Prev : "<<(AR_CLink-1)()<<endl;
cout<<ARRI_CallCnt<<" * Node Curr : " <<(AR_CLink )()<<endl;
cout<<ARRI_CallCnt<<" * Node Next : "<<(AR_CLink+1)()<<endl;
}/*
static void ShowNode1(ZCLinkCStr& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void AppendEach(ZCLinkCStr& AR_CLink)
{
AR_CLink().append("_");
}/*
static void AppendEach(ZCLinkCStr& AR_CLink)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZTypLong VI_CallCnt = 0 ;
ZCLinkStrList VO_ZCLinkStrLis1;
ZCLinkStrList VO_ZCLinkStrLis2;
ZCStrLinkOpt VO_StrLinkOpt = VO_ZCLinkStrLis1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.bool() ="<<bool(VO_StrLinkOpt) <<endl;
VO_ZCLinkStrLis1.AddTail()()=string("123");
VO_ZCLinkStrLis1.AddTail()()=string("ABC");
VO_ZCLinkStrLis1.AddTail()()=string("xyz");
VO_ZCLinkStrLis2.AddTail()()=string("Z01");
VO_ZCLinkStrLis2.AddTail()()=string("Z02");
VO_ZCLinkStrLis2.AddTail()()=string("Z03");
VO_StrLinkOpt = VO_ZCLinkStrLis1.GetObjOpt(1);
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetObjOpt(1) : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
{
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()<<endl;
cout<<"# value by VO_StrLinkOpt() : "<<VO_StrLinkOpt() <<endl;
cout<<"# value by VO_StrLinkOpt()(): "<<VO_StrLinkOpt() <<endl;
}
VO_StrLinkOpt = VO_ZCLinkStrLis1.GetTailOpt();
cout<<"# VO_StrLinkOpt.GetTailOpt() : has_value()="<<VO_StrLinkOpt.has_value()<<endl;
cout<<"# VO_StrLinkOpt.GetTailOpt() : bool ()="<<bool(VO_StrLinkOpt) <<endl;
if(VO_StrLinkOpt.has_value())
{
cout<<"# value by VO_StrLinkOpt : "<<VO_StrLinkOpt.value()<<endl;
cout<<"# value by VO_StrLinkOpt() : "<<VO_StrLinkOpt() <<endl;
cout<<"# value by VO_StrLinkOpt()(): "<<VO_StrLinkOpt()() <<endl;
}
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_ZCLinkStrLis1.JoinHead(VO_ZCLinkStrLis2);
cout<<"# after VO_ZCLinkStrLis1.JoinHead(VO_ZCLinkStrLis2)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode1, ZftMCP(VI_CallCnt=0));
VO_ZCLinkStrLis2 = VO_ZCLinkStrLis1 ;
cout<<"# after VO_ZCLinkStrLis2 = VO_ZCLinkStrLis1"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&AppendEach);
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.SendRangeOutAfter
(
VO_ZCLinkStrLis1.GetObjOpt(1).value()
, VO_ZCLinkStrLis1.GetObjOpt(2).value()
, 2
, VO_ZCLinkStrLis2
, VO_ZCLinkStrLis2.GetObjOpt(1)
) ;
cout<<"# after VO_ZCLinkStrLis1.SendRangeOutAfter(1th, 2th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis2.SendRangeOutBefore
(
VO_ZCLinkStrLis2.GetObjOpt(2).value()
, VO_ZCLinkStrLis2.GetObjOpt(3).value()
, 2
, VO_ZCLinkStrLis1
, VO_ZCLinkStrLis1.GetObjOpt(1)
) ;
cout<<"# after VO_ZCLinkStrLis2.SendRangeOutBefore(VO_ZCLinkStrLis2 2th, 3th, 2, rhs, rhs's 1th)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis2.CopyThis(VO_ZCLinkStrLis1);
cout<<"# after VO_ZCLinkStrLis2.CopyThis(VO_ZCLinkStrLis1)"<<endl;
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
VO_ZCLinkStrLis2.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
cout<<"***********************************************"<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCLinkList*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCLinkList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD> cygwin <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// g++ -mno-cygwin -o ZtCLinkMoveList_000.exe ZtCLinkMoveList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCLinkMoveList_000_D.exe ZtCLinkMoveList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
<EFBFBD><EFBFBD> mingw <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g++.exe -o ZtCLinkMoveList_000_mw.exe ZtCLinkMoveList_000.cpp -I../ -lWs2_32
g++.exe -o ZtCLinkMoveList_000_mw_D.exe ZtCLinkMoveList_000.cpp -I../ -lWs2_32 -D_DEBUG
./ZtCLinkMoveList_000_mw.exe
./ZtCLinkMoveList_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
<EFBFBD><EFBFBD> Linux <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g++ -std=c++98 -o ZtCLinkMoveList_000.exe ZtCLinkMoveList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCLinkMoveList_000_D.exe ZtCLinkMoveList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
./ZtCLinkMoveList_000.exe
./ZtCLinkMoveList_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,140 @@
#include <string>
#include <iostream>
#include "ZCppMain/ZtCLinkList.H"
using namespace std;
namespace ZNsMain
{
namespace ZNsExam
{
class ZCLinkEx :
public ZtCLink<ZCEmpty, ZCLinkEx>
{
};
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
typedef ZtCLink<ZCEmpty, ZCEmpty> ZCLink1;
typedef ZtCLink<string , ZCEmpty> ZCLink2;
typedef ZtCLink<ZCEmpty, string > ZCLink3;
typedef ZtCLink<string , string > ZCLink4;
typedef ZCLinkEx ZCLink5;
cout<<"# ZCLink1::TypeThis -> "<<typeid(ZCLink1::TypeThis ).name()<<endl;
cout<<"# ZCLink1::TypeBase -> "<<typeid(ZCLink1::TypeBase ).name()<<endl;
cout<<"# ZCLink1::TypeChild-> "<<typeid(ZCLink1::TypeChild).name()<<endl;
cout<<"**********************************************************"<<endl;
cout<<"# ZCLink2::TypeThis -> "<<typeid(ZCLink2::TypeThis ).name()<<endl;
cout<<"# ZCLink2::TypeBase -> "<<typeid(ZCLink2::TypeBase ).name()<<endl;
cout<<"# ZCLink2::TypeChild-> "<<typeid(ZCLink2::TypeChild).name()<<endl;
cout<<"**********************************************************"<<endl;
cout<<"# ZCLink3::TypeThis -> "<<typeid(ZCLink3::TypeThis ).name()<<endl;
cout<<"# ZCLink3::TypeBase -> "<<typeid(ZCLink3::TypeBase ).name()<<endl;
cout<<"# ZCLink3::TypeChild-> "<<typeid(ZCLink3::TypeChild).name()<<endl;
cout<<"**********************************************************"<<endl;
cout<<"# ZCLink4::TypeThis -> "<<typeid(ZCLink4::TypeThis ).name()<<endl;
cout<<"# ZCLink4::TypeBase -> "<<typeid(ZCLink4::TypeBase ).name()<<endl;
cout<<"# ZCLink4::TypeChild-> "<<typeid(ZCLink4::TypeChild).name()<<endl;
cout<<"**********************************************************"<<endl;
cout<<"# ZCLink5::TypeThis -> "<<typeid(ZCLink5::TypeThis ).name()<<endl;
cout<<"# ZCLink5::TypeBase -> "<<typeid(ZCLink5::TypeBase ).name()<<endl;
cout<<"# ZCLink5::TypeChild-> "<<typeid(ZCLink5::TypeChild).name()<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCLink_001.exe ZtCLink_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCLink_001_D.exe ZtCLink_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCLink_001_mw.exe ZtCLink_001.cpp -I../
g++.exe -o ZtCLink_001_mw_D.exe ZtCLink_001.cpp -I../ -D_DEBUG
./ZtCLink_001_mw.exe
./ZtCLink_001_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCLink_001.exe ZtCLink_001.cpp -I../
g++ -std=c++98 -o ZtCLink_001_D.exe ZtCLink_001.cpp -I../ -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCLink_001.exe
./ZtCLink_001_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,270 @@

#include "ZCppMain/ZtCLoadXml.H"
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDymmy=void*> class ZtExamLoadXml
{
public:
/* 아래 Main() 함수 선언을 아래로 하면
static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
mingw g++ 에서 희한하게 에러다.
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++.exe -o ZtCLoadXml_000_mw.exe ZtCLoadXml_000.cpp -I../ -lWs2_32
ZtCLoadXml_000.cpp: In function 'int main(int, char**)':
ZtCLoadXml_000.cpp:171:42: error: invalid conversion from 'char**' to 'const char**' [-fpermissive]
171 | ZtExamLoadXml<>::Main(AI_ArgCnt, APP_ArgVal);
| ^~~~~~~~~~
| |
| char**
ZtCLoadXml_000.cpp:16:58: note: initializing argument 2 of 'static int ZNsMain::ZNsExam::ZtExamLoadXml<TDymmy>::Main(int, const char**) [with TDymmy = void*]'
16 | static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
| ~~~~~~~~~~~~^~~~~~~~~~~~~~
*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
typedef ZNsMain::ZtCStringBase<char> ZCStringData ;
typedef ZNsMain::ZNsViewIFace::ZNsExam::ZtCViewLoadXml<
ZCStringData
/*/////////*/ > ZCViewLoadXml; ////////////////////////
typedef ZNsMain::ZNsType::ZtCTypeXmlInfo<
ZCStringData
/*/////////*/ > ZCTypeXmlInfo; ////////////////////////
typedef ZNsMain::ZtCXmlInfo<ZCTypeXmlInfo> ZCXmlInfo;
typedef ZNsMain::ZNsView::ZtCViewLoadXmlOfXmlInfo<
ZCXmlInfo
/*/////////*/ > ZCViewLoadXmlOfXmlInfo; ///////////////
typedef ZNsMain::ZtCLoadXml<ZCStringData> ZCLoadXml;
const char* CPC_XmlData1=
"<!-- My Comment0 --><? Header ?>\n"
"<!DOCTYPE ele0[ \n"
"<!ELEMENT ele1>\n"
"<!ATTLIST prop>\n"
"]>\n"
"<ele0 prop0 = \"prop00\" /><!-- My Comment1 -->\n"
"<ele1>ele1 data</ele1> <!-- My Comment2 -> ---- --->\n"
"<ele2 >ele2 data</ele2>\n"
"<요소3 prop1= \"prop1 value\" prop2 = \"prop2 value\" >"
" <ele3_1 prop3=\"prop3 value\" prop33=\"prop33 value\" > MyData"
" </ele3_1>\n"
" <ele3_2 prop4=\"prop4 value\" prop44=\"prop44 value\" > <![CDATA[ myCDATA ]]>\n"
" </ele3_2> \n"
"</요소3"
;
const char* CPC_XmlData2=
">\n<ele4 >ele4 data\n"
"</ele4>\n"
;;;;;;;;;;;;;;;;;;;;;;;;
const char* CPC_XmlDataOfID=
"<?xml version=\"1.0\" encoding=\"euc-kr\" ?>\n"
"<!DOCTYPE data[\n"
"<!ELEMENT data ANY>\n"
"<!ENTITY nbsp " " >\n"
"<!ATTLIST data id ID #REQUIRED>\n"
"]>\n"
"<data id = \"id-set\" desc=\"Xml 로 출력되는 홈페이지의 내용 예시\">\n"
"\n"
" <data id=\"id-info-login\" login_enum=\"1\" login_msg=\"Login Already\" login_rightnum=\"515\"\n"
" login_isadmin=\"0\" login_sessno=\"\" login_memno=\"1\" login_id=\"test\" login_name=\"\"\n"
" login_icon=\"/testfile\" login_iconhtml=\"\" login_point=\"0\" login_mail=\"\" login_level=\"0\"\n"
" login_no_fc=\"0\" login_no_fbinf=\"7\" login_notecnt=\"0\" login_type=\"0\" login_lastip=\"\"\n"
" login_lastlogin=\"2008-09-28 08:29:51.904506\" login_filecnt=\"0\" login_filesum=\"0\"\n"
" login_filemax=\"0\" />\n"
"\n"
" <data id=\"id-binfo-main\" binf_cntitem=\"12\" binf_cntpage=\"10\" binf_count=\"1001\" binf_maxnum=\"501\"\n"
" binf_config=\"360943\" binf_bbit_fbinf=\"0\" binf_rn_fbinf=\"0\" binf_no_fc=\"0\" />\n"
"\n"
" <data id = \"id-binfo-var\" attcnt = \"0\" />\n"
"\n"
" <data id=\"id-binfo-top-set\" recordcnt=\"3\" fieldcnt=\"16\">\n"
" <data id=\"id-binfo-top1\" no=\"1\" b_itemnum=\"1\" b_title=\"자유게시판입니다.\" b_tstyle=\"\"\n"
" b_wdate=\"2008-09-28\" b_no=\"1\" b_depth=\"0\" b_hit=\"0\" b_commcnt=\"0\" b_filecnt=\"0\"\n"
" b_userip=\"\" m_no=\"0\" m_point=\"0\" m_nick=\"\" m_userid=\"\" m_mail=\"\"\n"
" f_icon=\"&lt;img src=&quot;/testfile&quot; class=&quot;member_img_icon&quot; /&gt;\"\n"
" />\n"
" <data id=\"id-binfo-top2\" no=\"2\" b_itemnum=\"2\" b_title=\"술탄 메메트 2세 Title=2\" b_tstyle=\"\"\n"
" b_wdate=\"2008-09-28\" b_no=\"2\" b_depth=\"0\" b_hit=\"0\" b_commcnt=\"0\" b_filecnt=\"0\" b_userip=\"\" m_no=\"0\" m_point=\"0\" m_nick=\"\" m_userid=\"\" m_mail=\"\"\n"
" f_icon=\"&lt;img src=&quot;/testfile&quot; class=&quot;member_img_icon&quot; /&gt;\"\n"
" />\n"
" <data id=\"id-binfo-top3\" no=\"3\" b_itemnum=\"1-1\" b_title=\"술탄 메메트 2세 Title=1-1\"\n"
" b_tstyle=\"\" b_wdate=\"2008-09-28\" b_no=\"3\" b_depth=\"1\" b_hit=\"0\" b_commcnt=\"0\"\n"
" b_filecnt=\"0\" b_userip=\"\" m_no=\"0\" m_point=\"0\" m_nick=\"\" m_userid=\"\" m_mail=\"\"\n"
" f_icon=\"&lt;img src=&quot;/testfile&quot; class=&quot;member_img_icon&quot; /&gt;\"\n"
" />\n"
" </data><!-- id=\"binfo-top-set\" -->\n"
" <data id=\"id-binfo-modevar\" attcnt=\"5\" b_listbackcolor1=\"#ffeeff\" b_listbackcolor2=\"#cceedd\"\n"
" b_listbackcolorcnt=\"2\" b_listlinecolor=\"black\" b_listmouseovercolor=\"#ffc0cb\" />\n"
"\n"
"</data><!-- id=\"id-set\" -->\n";
/*const char* CPC_XmlDataOfID=*/
ZCViewLoadXml VO_CViewLoadXml;
ZCLoadXml VO_CLoadXml ;
if(AI_ArgCnt<2)
{
VO_CLoadXml.Exec(VO_CViewLoadXml, CPC_XmlData1, ZNsMain::ZftLength(CPC_XmlData1));
VO_CLoadXml.Exec(VO_CViewLoadXml, CPC_XmlData2, ZNsMain::ZftLength(CPC_XmlData2));
}
else
{
for(int i=1; i<AI_ArgCnt; ++i) VO_CLoadXml.Exec
(
VO_CViewLoadXml, APP_ArgVal[i], ZNsMain::ZftLength(APP_ArgVal[i])
);
/*:::::::::::::::::::::::::::::::::::::::::::*/
return 0;
}/*
else*/
cout<<endl;
cout<<"## Show Xml Info With 'ID' Attribute. Press Enter. ##"; cin.get();
VO_CLoadXml.clear(); ZCViewLoadXmlOfXmlInfo VO_CViewLoadXmlOfXmlInfo;
ZNsMain::ZNsEnum::ZERunEx VE_ERunEx=VO_CLoadXml.ExecAll( ////////////
VO_CViewLoadXmlOfXmlInfo,
CPC_XmlDataOfID ,
ZNsMain::ZftLength(CPC_XmlDataOfID)
/*/////////*/ ); /*////////////////////////////////////////////////*/
if(VE_ERunEx!=ZNsMain::ZNsEnum::ZERunEx_OK)
{
cout<<endl<<endl<<
"■ Error !! : Line="<<VO_CLoadXml.GetLineNo()<<", "<<
"CharNo=" <<VO_CLoadXml.GetCharNo() <<", "<<
"EWaitByte="<<VO_CLoadXml.GetMSG_EWaitByte() <<", "
"Error MSG="<<VO_CViewLoadXmlOfXmlInfo.GetErrorMSG()<<endl;
return 0;
}/*
if(VE_ERunEx!=ZNsMain::ZNsEnum::ZERunEx_OK)*/
VO_CViewLoadXmlOfXmlInfo.GetCXmlInfo().IterPreOrderElementTreeStd();
cout<<endl;
cout<<"## Show Xml ID ##"<<endl;
cout<<endl;
VO_CViewLoadXmlOfXmlInfo.GetCXmlInfo().IterElementIDSetStd();
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDymmy=void*> class ZtExamLoadXml*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtExamLoadXml<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCLoadXml_000.exe ZtCLoadXml_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCLoadXml_000_D.exe ZtCLoadXml_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCLoadXml_000_mw.exe ZtCLoadXml_000.cpp -I../ -lWs2_32
g++.exe -o ZtCLoadXml_000_mw_D.exe ZtCLoadXml_000.cpp -I../ -lWs2_32 -D_DEBUG
./ZtCLoadXml_000_mw.exe
./ZtCLoadXml_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCLoadXml_000.exe ZtCLoadXml_000.cpp -I../
g++ -std=c++98 -o ZtCLoadXml_000_D.exe ZtCLoadXml_000.cpp -I../ -D_DEBUG
g++ -std=c++98 -o ZtCLoadXml_000_r.exe ZtCLoadXml_000.cpp -I../ -D_REENTRANT
g++ -std=c++98 -o ZtCLoadXml_000_r_D.exe ZtCLoadXml_000.cpp -I../ -D_REENTRANT -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCLoadXml_000.exe
./ZtCLoadXml_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,139 @@

#include <iostream>
#include "ZCppMain/ZtCObjAVL.H"
using namespace std;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamAVL
{
public:
static void ShowDataInNode(int AI_Data)
{
cout<<"* Node Data : "<<AI_Data<<endl;
}/*
static void ShowDataInNode(int AI_Data)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
using namespace std ;
using namespace ZNsMain;
ZtCObjAVL<int, int> VO_CObjAVL;
VO_CObjAVL.AddData(10);
VO_CObjAVL.AddData(20);
VO_CObjAVL.AddData(30);
VO_CObjAVL.AddData(40);
VO_CObjAVL.AddData(9 );
cout<<"# In Order" <<endl; VO_CObjAVL.IterInOrder (&ShowDataInNode);
cout<<"# Post Order"<<endl; VO_CObjAVL.IterPostOrder(&ShowDataInNode);
cout<<"# Pre Order" <<endl; VO_CObjAVL.IterPreOrder (&ShowDataInNode);
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamAVL*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamAVL<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCObjAVL_000.exe ZtCObjAVL_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCObjAVL_000_D.exe ZtCObjAVL_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCObjAVL_000_mw.exe ZtCObjAVL_000.cpp -I../
g++.exe -o ZtCObjAVL_000_mw_D.exe ZtCObjAVL_000.cpp -I../ -D_DEBUG
./ZtCObjAVL_000_mw.exe
./ZtCObjAVL_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCObjAVL_000.exe ZtCObjAVL_000.cpp -I../
g++ -std=c++98 -o ZtCObjAVL_000_D.exe ZtCObjAVL_000.cpp -I../ -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCObjAVL_000.exe
./ZtCObjAVL_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,529 @@

#include <iostream>
#include "ZCppMain/ZtCObjList.H"
#include "ZCppMain/ZtCStringEx.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCObjList
{
public:
typedef ZtCStringBase<char> CStringBase ;
typedef const CStringBase CCStringBase;
/* 아래 자료형에 대해, CStringBase::Fetch() 호출 여부 실험.
ZtCObjList<CStringBase&, CCStringBase&>
ZtCObjList<CStringBase&, CCCStringBase&>
*/
typedef ZtCObjList
<CStringBase, CStringBase& > CStringList1 ;
typedef ZtCObjList
<CStringBase, CCStringBase&> CStringList2 ;
typedef CStringList1::ZCLink ZCLink1;
typedef CStringList2::ZCLink ZCLink2;
typedef CStringList1::ZCLinkOpt ZCLinkOpt1;
typedef CStringList2::ZCLinkOpt ZCLinkOpt2;
typedef CStringList1::ZCDataOpt ZCDataOpt1;
typedef CStringList2::ZCDataOpt ZCDataOpt2;
static void ShowDataInNode(const CStringBase& AR_Data)
{
cout<<"* Data : "<<AR_Data<<endl;
}/*
static void ShowDataInNode(const CStringBase& AR_Data)*/
static void ShowNode1(ZCLink1& AR_CLink)
{
cout<<"* Node Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node Curr : "<<*(AR_CLink )<<endl;
cout<<"* Node Next : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode1(ZCLink1& AR_CLink)*/
static void ShowNode2(ZCLink2& AR_CLink)
{
cout<<"* Node Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node Curr : "<<*(AR_CLink )<<endl;
cout<<"* Node Next : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode2(ZCLink2& AR_CLink)*/
static void Append1(ZCLink1& AR_CLink)
{
(*AR_CLink).append("__");
}/*
static void Append1(ZCLink1& AR_CLink)*/
static void ShowNode1_2(ZCLink1& AR_CLink, int& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node Curr : "<<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node Next : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode1(ZCLink1& AR_CLink, int& ARRI_CallCnt)*/
static void ShowNode2_2(ZCLink2& AR_CLink, int& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Prev : "<<*(AR_CLink-1)<<endl;
cout<<ARRI_CallCnt<<" * Node Curr : "<<*(AR_CLink )<<endl;
cout<<ARRI_CallCnt<<" * Node Next : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode2(ZCLink2& AR_CLink, int& ARRI_CallCnt)*/
static void ShowNode1_3(ZCLink1& AR_CLink, int& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Curr : "<<*(AR_CLink )<<endl;
}/*
static void ShowNode1(ZCLink1& AR_CLink, int& ARRI_CallCnt)*/
static void ShowNode2_3(ZCLink2& AR_CLink, int& ARRI_CallCnt)
{
++ARRI_CallCnt;
cout<<ARRI_CallCnt<<" * Node Curr : "<<*(AR_CLink )<<endl;
}/*
static void ShowNode2(ZCLink2& AR_CLink, int& ARRI_CallCnt)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
CStringBase VO_CStringBase ;
CStringList1 VO_ListOfStr10 ;
CStringList2 VO_ListOfStr20 ;
ZCDataOpt1 VO_ZCDataOpt1 = VO_ListOfStr10.HeadOptD() ;
ZCLinkOpt1 VO_ZCLinkOpt1 = VO_ListOfStr10.TailOpt() ;
if(bool(VO_ZCDataOpt1))
cout<<"# VO_ListOfStr10's head data : " <<*VO_ZCDataOpt1<<endl;
else cout<<"# VO_ListOfStr10's head data none "<<endl;
if(bool(VO_ZCLinkOpt1))
cout<<"# VO_ListOfStr10's tail link data : " <<**VO_ZCLinkOpt1<<endl;
else cout<<"# VO_ListOfStr10's tail link data none "<<endl;
VO_ListOfStr10.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
VO_ZCDataOpt1 = VO_ListOfStr10.HeadOptD() ;
VO_ZCLinkOpt1 = VO_ListOfStr10.TailOpt() ;
if(bool(VO_ZCDataOpt1))
cout<<"# VO_ListOfStr10's head data : " <<*VO_ZCDataOpt1<<endl;
else cout<<"# VO_ListOfStr10's head data none "<<endl;
if(bool(VO_ZCLinkOpt1))
cout<<"# VO_ListOfStr10's tail link data : " <<**VO_ZCLinkOpt1<<endl;
else cout<<"# VO_ListOfStr10's tail link data none "<<endl;
cout<<"# 1th IterElement ####" <<endl;
{
VO_ListOfStr10.IterElement(&ShowDataInNode);
}
cout<<"# 1th IterElemRev ####" <<endl;
{
VO_ListOfStr10.IterElemRev(&ShowDataInNode);
}
/*///////////////////////////////////*/
cout<<endl;
VO_ListOfStr20.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
cout<<"# 2th IterElement ####" <<endl;
{
VO_ListOfStr20.IterElement(&ShowDataInNode);
}
cout<<"# 2th IterElemRev ####" <<endl;
{
VO_ListOfStr20.IterElemRev(&ShowDataInNode);
}
/*///////////////////////////////////*/
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list20 size : " <<VO_ListOfStr20.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list20 free size: " <<VO_ListOfStr20.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list20 capacity : " <<VO_ListOfStr20.capacity ()<<endl;
VO_ListOfStr10.clear(); VO_ListOfStr20.clear();
VO_ListOfStr10.GetCFreeHeap().AddHeap(3);
VO_ListOfStr20.GetCFreeHeap().AddHeap(3);
cout<<"# After clear() & AddHeap(3)"<<endl;
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list20 size : " <<VO_ListOfStr20.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list20 free size: " <<VO_ListOfStr20.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list20 capacity : " <<VO_ListOfStr20.capacity ()<<endl;
CStringList1 VO_ListOfStr11 ;
cout<<"# add 2 elements and clear in VO_ListOfStr11"<<endl;
VO_ListOfStr11.AddTail(VO_CStringBase("lsit 11 data 01"));
VO_ListOfStr11.AddTail(VO_CStringBase("lsit 11 data 02"));
VO_ListOfStr11.clear();
cout<<"# After list10 Fetch from list11"<<endl;
VO_ListOfStr10.GetCFreeHeap().Fetch( VO_ListOfStr11.GetCFreeHeap() );
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# After list11 Fetch 3 from list10"<<endl;
VO_ListOfStr11.GetCFreeHeap().
Fetch( VO_ListOfStr10.GetCFreeHeap(), 3);
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add1"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add2"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add3"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add4"));
cout<<"# After add 4 in list11"<<endl;
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# After MakeEqual() : list10 and list11"<<endl;
VO_ListOfStr10.GetCFreeHeap().MakeEqual( VO_ListOfStr11.GetCFreeHeap() );
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# list11 IterElemRev ####" <<endl;
{
VO_ListOfStr11.IterElemRev(&ShowDataInNode);
}/*
cout<<"# list11 IterElemRev ####" <<endl;*/
VO_ListOfStr11.RotateBack();
cout<<"# list11 IterElemRev after RotateBack"<<endl;
cout<<"# list11 IterElemRev ####" <<endl;
{
VO_ListOfStr11.IterElemRev(&ShowDataInNode);
}/*
cout<<"# list11 IterElemRev ####" <<endl;*/
VO_ListOfStr10 = VO_ListOfStr11 ;
cout<<"# list10 IterElement after list10 = list11"<<endl;
VO_ListOfStr10.IterElement(&ShowDataInNode);
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
VO_ListOfStr11.AddHead(VO_CStringBase("list11 add99"));
VO_ListOfStr10 = VO_ListOfStr11 ;
cout<<"# list10 IterElement after list11.addhead, list10 = list11"<<endl;
VO_ListOfStr10.IterElement(&ShowDataInNode);
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
int VI_CallCnt=0;
cout<<"# list10 IterElemLink ################"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1_2, ZftMCP(VI_CallCnt=0));
cout<<"# list10 2th link to list11 tail"<<endl;
VO_ListOfStr10.SendOutTail(*VO_ListOfStr10.GetLinkPtr(2), VO_ListOfStr11);
cout<<"# list10 IterElemLink ################"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1_2, ZftMCP(VI_CallCnt=0));
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_2, ZftMCP(VI_CallCnt=0));
cout<<"# list10 1th link to list10 head"<<endl;
VO_ListOfStr10.SendOutHead(*VO_ListOfStr10.GetLinkPtr(1), VO_ListOfStr11);
cout<<"# list10 IterElemLink ################"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr11.IterElemLink(&Append1);
VO_ListOfStr11.SendRangeOutAfter
(
*VO_ListOfStr11.GetLinkPtr(2)
, *VO_ListOfStr11.GetLinkPtr(3)
, 2
, RR(VO_ListOfStr10)
, VO_ListOfStr10.GetLinkOpt(2)
);
cout<<"# list11's 2th ~ 3th link to list10's 2th link after"<<endl;
cout<<"# list10 IterElemLink ################"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr10.SendRangeOutBefore
(
*VO_ListOfStr10.GetLinkPtr(3)
, *VO_ListOfStr10.GetLinkPtr(4)
, 2
, RR(VO_ListOfStr11)
, VO_ListOfStr11.GetLinkOpt(1)
);
cout<<"# list10's 3th ~ 4th link to list11's 1th link before"<<endl;
cout<<"# list10 IterElemLink ################"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr11.Rotate();
cout<<"# list11 Rotate() ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
cout<<"# list11 IterElemLinkRev() ################"<<endl;
VO_ListOfStr11.IterElemLinkRev(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ListOfStr11.MoveLinkIn
(
*VO_ListOfStr11.GetLinkPtr(1)
, *VO_ListOfStr11.GetLinkPtr(7)
, true
);
cout<<"# list11 MoveLinkIn(1th, 7th, after)"<<endl;
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr11.MoveLinkIn
(
*VO_ListOfStr11.GetLinkPtr(5)
, *VO_ListOfStr11.GetLinkPtr(1)
, false
);
cout<<"# list11 MoveLinkIn(5th, 1th, before)"<<endl;
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr11.MoveLinkIn
(
*VO_ListOfStr11.GetLinkPtr(6)
, *VO_ListOfStr11.GetLinkPtr(7)
, true
);
cout<<"# list11 MoveLinkIn(6th, 7th, after)"<<endl;
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
VO_ListOfStr11.MoveRangeIn
(
*VO_ListOfStr11.GetLinkPtr(1)
, *VO_ListOfStr11.GetLinkPtr(2)
, *VO_ListOfStr11.GetLinkPtr(7)
, true
);
cout<<"# list11 MoveRangeIn(1th, 2th, 7th, after)"<<endl;
cout<<"# list11 IterElemLink ################"<<endl;
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
typedef CStringList1::iterator iterator1 ;
//typedef CStringList1::ZCLinkPointEx iteratorEx1;
typedef CStringList1::ZCNodePointN iteratorN1 ;
iterator1 VO_Iter1 = VO_ListOfStr11.end();
//iteratorEx1 VO_IterEx1 = VO_ListOfStr11.end();
iteratorN1 VO_IterN1(VO_Iter1);
__for_itc (CStringList1, VO_ListOfStr11, VO_NowIter)
{
cout<<"(by for_itc ) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
}
__for_it_r(CStringList1, VO_ListOfStr11, VO_NowIter)
{
cout<<"(by for_it_r) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
}
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCObjList*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCObjList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCObjList_000.exe ZtCObjList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCObjList_000_D.exe ZtCObjList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCObjList_000_mw.exe ZtCObjList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder -Wno-unknown-pragmas
g++.exe -o ZtCObjList_000_mw_D.exe ZtCObjList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder -Wno-unknown-pragmas -D_DEBUG
./ZtCObjList_000_mw.exe
./ZtCObjList_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCObjList_000.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder
g++ -std=c++98 -o ZtCObjList_000_D.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCObjList_000.exe
./ZtCObjList_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,337 @@

#include <iostream>
#include "ZCppMain/ZtCSimList.H"
#include "ZCppMain/ZtCStringEx.H"
using namespace std ;
using namespace ZNsMain ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamCSimList
{
public:
typedef ZtCStringBase<char> CStringBase ;
typedef const CStringBase CCStringBase;
/* 아래 자료형에 대해, CStringBase::Fetch() 호출 여부 실험.
ZtCSimList<CStringBase&, CCStringBase&>
ZtCSimList<CStringBase&, CCCStringBase&>
*/
typedef ZtCSimList
<CStringBase, CStringBase&> CStringList1 ;
typedef ZtCSimList
<CStringBase, CCStringBase&> CStringList2 ;
class CHelpObj
{
public:
int mi_CallNo;
public:
CHelpObj() : mi_CallNo(0)
{
cout<<"* CHelpObj()"<<endl;
}
CHelpObj(const CHelpObj& rhs) : mi_CallNo(0)
{
cout<<"* CHelpObj(const CHelpObj& rhs)"<<endl;
}
void operator()( CStringBase& AR_DataCStr)
{ cout<<"# CallNo="<<++mi_CallNo<<" : "<<AR_DataCStr<<endl; }
void operator()(CCStringBase& AR_DataCStr)
{ cout<<"# CallNo="<<++mi_CallNo<<" : "<<AR_DataCStr<<endl; }
public:
};/*
class CHelpObj*/
struct StFunctor
{
static void ShowElement(int ArgiValue){cout<<"#1 Value="<<ArgiValue<<endl;}
};
struct StFunctor2
{
static void ShowElement(int ArgiValue, CHelpObj)
{cout<<"#2 Value="<<ArgiValue<<", CHelpObj Addr=None"<<" With CHelpObj"<<endl;}
};
struct StFunctor3
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#3 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref"<<endl;}
};
struct StFunctor4
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
{cout<<"#4 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj in Ptr"<<endl;}
};
struct StFunctor5
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj& AR_CHelpObj2)
{cout<<"#5 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref 2"<<endl;}
};
struct StFunctor6
{
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj AO_CHelpObj2)
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
};
public:
static void ShowDataInNode(const CStringBase& AR_Data)
{
cout<<"* Data : "<<AR_Data<<endl;
}/*
static void ShowDataInNode(const CStringBase& AR_Data)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
CStringBase VO_CStringBase;
CStringList1 VO_ListOfStr10 ;
CStringList2 VO_ListOfStr20 ;
VO_ListOfStr10.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr10.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
cout<<"# 1th IterElement ####" <<endl;
{
VO_ListOfStr10.IterElement(&ShowDataInNode);
}
/*///////////////////////////////////*/
cout<<endl;
VO_ListOfStr20.AddTail(VO_CStringBase("data 10"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 20"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 40"));
VO_ListOfStr20.AddTail(VO_CStringBase("data 04"));
cout<<"# VO_CStringBase data : " <<VO_CStringBase<<endl;
cout<<"# 2th IterElement ####" <<endl;
{
VO_ListOfStr20.IterElement(&ShowDataInNode);
}
/*///////////////////////////////////*/
typedef ZtCSimList<int> CIntList;
CHelpObj VO_CHelpObj;
CIntList VO_CIntList;
VO_CIntList.AddTail(10);
VO_CIntList.AddTail(20);
VO_CIntList.AddTail(30);
VO_CIntList.AddTail(40);
cout<<endl<<"#### Show CIntList Element ####"<<endl<<endl;
VO_CIntList.IterElement(StFunctor ::ShowElement);
VO_CIntList.IterElement(StFunctor2::ShowElement, VO_CHelpObj );
VO_CIntList.IterElement(StFunctor3::ShowElement, ZftMCR(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor4::ShowElement, ZftMCP(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor5::ShowElement, ZftMCP(VO_CHelpObj), ZftMCP(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
CStringList1 VO_ListOfStr11 ;
cout<<"# add 2 elements and clear in VO_ListOfStr11"<<endl;
VO_ListOfStr11.AddTail(VO_CStringBase("lsit 11 data 01"));
VO_ListOfStr11.AddTail(VO_CStringBase("lsit 11 data 02"));
VO_ListOfStr11.clear();
cout<<"# After list10 Fetch from list11"<<endl;
VO_ListOfStr10.GetCFreeHeap().Fetch( VO_ListOfStr11.GetCFreeHeap() );
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# After list11 Fetch 3 from list10"<<endl;
VO_ListOfStr11.GetCFreeHeap().
Fetch( VO_ListOfStr10.GetCFreeHeap(), 3);
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add1"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add2"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add3"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add4"));
cout<<"# After add 4 in list11"<<endl;
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
VO_ListOfStr11.GetCFreeHeap().AddHeap(2);
VO_ListOfStr10.GetCFreeHeap().MakeEqual( VO_ListOfStr11.GetCFreeHeap() );
cout<<"# After adding free 2 in list11 and MakeEqual() : list10 and list11"<<endl;
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# list11 IterElement ####" <<endl;
{
VO_ListOfStr11.IterElement(&ShowDataInNode);
}/*
cout<<"# list11 IterElement ####" <<endl;*/
cout<<"# list11 IterElement : ZftMCR(CHelpObj)" <<endl;
VO_ListOfStr11.IterElement(ZftMCR(VO_CHelpObj));
cout<<"# list11 IterElement : ZftMCP(CHelpObj)" <<endl;
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
VO_ListOfStr11 = VO_ListOfStr10 ;
cout<<"# list11 IterElement : after list11=list10" <<endl;
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCSimList*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCSimList<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCSimList_000.exe ZtCSimList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCSimList_000_D.exe ZtCSimList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCSimList_000_mw.exe ZtCSimList_000.cpp -I../ -lWs2_32
g++.exe -o ZtCSimList_000_mw_D.exe ZtCSimList_000.cpp -I../ -lWs2_32 -D_DEBUG
./ZtCSimList_000_mw.exe
./ZtCSimList_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCSimList_000.exe ZtCSimList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCSimList_000_D.exe ZtCSimList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCSimList_000.exe
./ZtCSimList_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,308 @@
#include <string>
#include <iostream>
#include "ZCppMain/ZtCStringEx.H"
#include "ZCppMain/ZtCStringStd.H"
using namespace std;
namespace ZNsMain
{
namespace ZNsExam
{
typedef ZtCStringStd<string> ZCStringStd ;
typedef ZtCStringStd<wstring> ZCStringStdW ;
typedef ZtCStringBase<char> ZCStringBase ;
typedef ZtCStringBase<wchar_t> ZCStringBaseW ;
typedef ZCStringBase ::ZCCharView ZCCharView ;
typedef ZCStringBaseW::ZCCharView ZCCharViewW ;
typedef ZCStringStd ::ZCCharView ZCCharViewS ;
typedef ZCStringStdW ::ZCCharView ZCCharViewSW ;
typedef ZtCCharType<ZCStringBase> ZCCharType ;
typedef ZtCCharType<ZCStringBaseW> ZCCharTypeW ;
typedef ZtCCharType<ZCStringStd > ZCCharTypeS ;
typedef ZtCCharType<ZCStringStdW> ZCCharTypeSW ;
typedef ZCCharType ::TypeChar TypeChar ;
typedef ZCCharTypeW ::TypeChar TypeCharW ;
typedef ZCCharType ::TypeInt TypeCharInt ;
typedef ZCCharTypeW ::TypeInt TypeCharIntW ;
typedef ZCCharTypeS ::TypeChar TypeCharS ;
typedef ZCCharTypeSW::TypeChar TypeCharSW ;
typedef ZCCharTypeS ::TypeInt TypeCharIntS ;
typedef ZCCharTypeSW::TypeInt TypeCharIntSW ;
const int CI_ByteSize = ZCCharType ::CI_ByteSize;
const int CI_ByteSizeW = ZCCharTypeW ::CI_ByteSize;
const int CI_ByteSizeS = ZCCharTypeS ::CI_ByteSize;
const int CI_ByteSizeSW = ZCCharTypeSW::CI_ByteSize;
template<typename TDummy=void*> class ZtCExamCStringBase_000
{
public:
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
cout<<"# TypeChar ="<<typeid(TypeChar ).name()<<endl;
cout<<"# TypeCharW ="<<typeid(TypeCharW ).name()<<endl;
cout<<"# TypeCharInt ="<<typeid(TypeCharInt ).name()<<endl;
cout<<"# TypeCharIntW ="<<typeid(TypeCharIntW ).name()<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# TypeCharS ="<<typeid(TypeCharS ).name()<<endl;
cout<<"# TypeCharSW ="<<typeid(TypeCharSW ).name()<<endl;
cout<<"# TypeCharIntS ="<<typeid(TypeCharIntS ).name()<<endl;
cout<<"# TypeCharIntSW="<<typeid(TypeCharIntSW).name()<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# CI_ByteSize ="<<CI_ByteSize <<endl;
cout<<"# CI_ByteSizeW ="<<CI_ByteSizeW <<endl;
cout<<"# CI_ByteSizeS ="<<CI_ByteSizeS <<endl;
cout<<"# CI_ByteSizeSW="<<CI_ByteSizeSW <<endl;
cout<<"*****************************************************"<<endl;
cout<<"# ZCStringBase ::TypeCharInt="<<typeid(ZCStringBase ::TypeCharInt).name()<<endl;
cout<<"# ZCStringBaseW::TypeCharInt="<<typeid(ZCStringBaseW::TypeCharInt).name()<<endl;
cout<<"# ZCStringBase ::size_type ="<<typeid(ZCStringBase ::size_type ).name()<<endl;
cout<<"# ZCStringBaseW::size_type ="<<typeid(ZCStringBaseW::size_type ).name()<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# ZCStringStd ::TypeCharInt="<<typeid(ZCStringStd ::TypeCharInt).name()<<endl;
cout<<"# ZCStringStdW ::TypeCharInt="<<typeid(ZCStringStdW ::TypeCharInt).name()<<endl;
cout<<"# ZCStringStd ::size_type ="<<typeid(ZCStringStd ::size_type ).name()<<endl;
cout<<"# ZCStringStdW ::size_type ="<<typeid(ZCStringStdW ::size_type ).name()<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# ZCStringBase ::traits_type::char_type="<<typeid(ZCStringBase ::traits_type::char_type).name()<<endl;
cout<<"# ZCStringBaseW::traits_type::char_type="<<typeid(ZCStringBaseW::traits_type::char_type).name()<<endl;
cout<<"# ZCStringBase ::traits_type::int_type ="<<typeid(ZCStringBase ::traits_type::int_type ).name()<<endl;
cout<<"# ZCStringBaseW::traits_type::int_type ="<<typeid(ZCStringBaseW::traits_type::int_type ).name()<<endl;
cout<<"# ZCStringBase ::traits_type="<<typeid(ZCStringBase ::traits_type).name()<<endl;
cout<<"# ZCStringBaseW::traits_type="<<typeid(ZCStringBaseW::traits_type).name()<<endl;
cout<<"*****************************************************"<<endl;
ZCStringBaseW VO_ZCStringBaseW;
ZCStringStdW VO_ZCStringStdW ;
cout<<"# '.' ascii code ="<<int('.')<<endl;
cout<<"*****************************************************"<<endl;
VO_ZCStringBaseW=123;
cout<<"* after VO_ZCStringBaseW=123"<<endl;
cout<<"# VO_ZCStringBaseW[0]="<<int(VO_ZCStringBaseW[0])<<endl;
cout<<"# VO_ZCStringBaseW[1]="<<int(VO_ZCStringBaseW[1])<<endl;
cout<<"# VO_ZCStringBaseW[2]="<<int(VO_ZCStringBaseW[2])<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# VO_ZCStringBaseW.GetLong()="<<VO_ZCStringBaseW.GetLong()<<endl;
cout<<"*****************************************************"<<endl;
VO_ZCStringBaseW=2.3;
cout<<"* after VO_ZCStringBaseW=2.3"<<endl;
cout<<"# VO_ZCStringBaseW[0]="<<int(VO_ZCStringBaseW[0])<<endl;
cout<<"# VO_ZCStringBaseW[1]="<<int(VO_ZCStringBaseW[1])<<endl;
cout<<"# VO_ZCStringBaseW[2]="<<int(VO_ZCStringBaseW[2])<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# VO_ZCStringBaseW.GetDouble()="<<VO_ZCStringBaseW.GetDouble()<<endl;
cout<<"*****************************************************"<<endl;
VO_ZCStringStdW=1.2;
cout<<"* after VO_ZCStringStdW=1.2"<<endl;
cout<<"# VO_ZCStringStdW [0]="<<int(VO_ZCStringStdW[0])<<endl;
cout<<"# VO_ZCStringStdW [1]="<<int(VO_ZCStringStdW[1])<<endl;
cout<<"# VO_ZCStringStdW [2]="<<int(VO_ZCStringStdW[2])<<endl;
cout<<"*****************************************************"<<endl;
cout<<"# VO_ZCStringStdW.GetDouble()="<<VO_ZCStringStdW.GetDouble()<<endl;
cout<<"*****************************************************"<<endl;
const ZCCharView CO_ZCCharView("1234AA5678AA90abcAAss");
ZCStringBase VO_ZCStringStd(CO_ZCCharView);
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"* after VO_ZCStringStd.Replace('12', '***')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("12"), ZCCharView("***"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after VO_ZCStringStd=CO_ZCCharView"<<endl;
VO_ZCStringStd=CO_ZCCharView;
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('AA', '___')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("AA"), ZCCharView("___"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('12', '###')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("12"), ZCCharView("###"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('##', 'T')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("##"), ZCCharView("T"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('ss', '')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("ss"), ZCCharView(""));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
ZftMakeStr(VO_ZCStringStd , ZTypIntULL(1234));
ZftMakeStr(VO_ZCStringStd , ZCCharView("--"));
ZftMakeStr(VO_ZCStringStd , double(10.01));
ZftMakeStr(VO_ZCStringStd , true);
ZftMakeStr(VO_ZCStringStd , 'Z');
ZftMakeStr(VO_ZCStringStd , ZCCharView("_Z_"));
ZftMakeStr(VO_ZCStringStdW, ZTypIntULL(1234));
ZftMakeStr(VO_ZCStringStdW, ZCCharViewSW(L"--"));
ZftMakeStr(VO_ZCStringStdW, double(10.01));
ZftMakeStr(VO_ZCStringStdW, true);
ZftMakeStr(VO_ZCStringStdW, L'Z');
ZftMakeStr(VO_ZCStringStdW, ZCCharViewSW(L"_Z_"));
VO_ZCStringStdW(false);
cout<<"* after ZftMakeStr(VO_ZCStringStd, ~)"<<endl;
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after ZftMakeStr(VO_ZCStringStdW, ~)"<<endl;
cout<<"# "<<VO_ZCStringStdW<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after VO_ZCStringStd.Replace('T#', '')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("T#"), ZCCharView(""));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('Z_', 'Z@%')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("Z_"), ZCCharView("Z@%"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('true', '_TRUE_')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("true"), ZCCharView("_TRUE_"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after Replace('_', '~&')"<<endl;
VO_ZCStringStd.Replace(ZCCharView("_"), ZCCharView("~&"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
cout<<"* after ()(ZCCharViewW('_AZ'))"<<endl;
VO_ZCStringStd(ZCCharView("_AZ"));
cout<<"# "<<VO_ZCStringStd<<endl;
cout<<"*****************************************************"<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamCStringBase_000*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamCStringBase_000<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCStringBase_000.exe ZtCStringBase_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCStringBase_000_D.exe ZtCStringBase_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o ZtCStringBase_000_mw.exe ZtCStringBase_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation
g++.exe -o ZtCStringBase_000_mw_D.exe ZtCStringBase_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
./ZtCStringBase_000_mw.exe
./ZtCStringBase_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCStringBase_000.exe ZtCStringBase_000.cpp -I../
g++ -std=c++98 -o ZtCStringBase_000_D.exe ZtCStringBase_000.cpp -I../ -D_DEBUG
g++ -std=c++98 -o ZtCStringBase_000.exe ZtCStringBase_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCStringBase_000_D.exe ZtCStringBase_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCStringBase_000.exe
./ZtCStringBase_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,232 @@

#ifndef _REENTRANT_EX
#define _REENTRANT_EX
#endif
#include <iostream>
#include "ZCppMain/ZCStringStd.H"
#include "ZCppMain/ZCProcess.H"
using namespace std ;
using namespace ZNsMain;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamThread
{
public:
class CThreadMy : public ZNsMain::ZtCThreadEx<CThreadMy>
{
public :
typedef ZNsMain::ZtCThreadEx<CThreadMy> TypeBase;
public :
friend class ZNsMain:: ZtCThreadEx<CThreadMy>;
private:
void Init()
{
this->TypeBase::Init(); cout<<"* Init0()"<<endl;
}
void Exec()
{
this->TypeBase::Exec(); cout<<"* Exec0()"<<endl;
}
void Fini()
{
this->TypeBase::Fini(); cout<<"* Fini0()"<<endl;
}
void Init(ZCStringStd& AR_KeyCStr)
{
this->TypeBase::template Init<ZCStringStd&>(AR_KeyCStr); cout<<"* Init1() : "<<AR_KeyCStr<<endl;
}
void Exec(ZCStringStd& AR_KeyCStr)
{
this->TypeBase::template Exec<ZCStringStd&>(AR_KeyCStr); cout<<"* Exec1() : "<<AR_KeyCStr<<endl;
}
void Fini(ZCStringStd& AR_KeyCStr)
{
this->TypeBase::template Fini<ZCStringStd&>(AR_KeyCStr); cout<<"* Fini1() : "<<AR_KeyCStr<<endl;
}
void Init(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2)
{
this->TypeBase::template Init
<ZCStringStd&, ZCStringStd&>(AR_KeyCStr, AR_KeyCStr2);
cout<<"* Init2() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<endl;
}
void Exec(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2)
{
this->TypeBase::template Exec
<ZCStringStd&, ZCStringStd&>(AR_KeyCStr, AR_KeyCStr2);
cout<<"* Init2() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<endl;
}
void Fini(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2)
{
this->TypeBase::template Fini
<ZCStringStd&, ZCStringStd&>(AR_KeyCStr, AR_KeyCStr2);
cout<<"* Init2() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<endl;
}
void Init(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2, ZCStringStd& AR_KeyCStr3)
{
this->TypeBase::template Init
<ZCStringStd&, ZCStringStd&, ZCStringStd&>
( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ;
cout<<"* Init3() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<", "<<AR_KeyCStr3<<endl;
}
void Exec(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2, ZCStringStd& AR_KeyCStr3)
{
this->TypeBase::template Exec
<ZCStringStd&, ZCStringStd&, ZCStringStd&>
( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ;
cout<<"* Init3() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<", "<<AR_KeyCStr3<<endl;
}
void Fini(ZCStringStd& AR_KeyCStr, ZCStringStd& AR_KeyCStr2, ZCStringStd& AR_KeyCStr3)
{
this->TypeBase::template Fini
<ZCStringStd&, ZCStringStd&, ZCStringStd&>
( AR_KeyCStr, AR_KeyCStr2, AR_KeyCStr3 ) ;
cout<<"* Init3() : "<<AR_KeyCStr<<", "<<AR_KeyCStr2<<", "<<AR_KeyCStr3<<endl;
}
private:
};/*
class CThreadMy : public ZNsMain::ZtCThreadEx<CThreadMy>*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
CThreadMy VO_CThreadMy1 ;
CThreadMy VO_CThreadMy2 ;
CThreadMy VO_CThreadMy3 ;
CThreadMy VO_CThreadMy4 ;
ZCStringStd VO_ZCStringStd1("Help Data1");
ZCStringStd VO_ZCStringStd2("Help Data2");
ZCStringStd VO_ZCStringStd3("Help Data3");
VO_CThreadMy1.Make();
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy2.Make(ZftMCP(VO_ZCStringStd1));
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy3.Make(ZftMCP(VO_ZCStringStd1), ZftMCP(VO_ZCStringStd2));
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy4.Make(ZftMCP(VO_ZCStringStd1), ZftMCP(VO_ZCStringStd2), ZftMCP(VO_ZCStringStd3));
cout<<"# Press Enter to continue."<<endl; cin.get();
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamThread*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamThread<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCThreadEx_000.exe ZtCThreadEx_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCThreadEx_000_D.exe ZtCThreadEx_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -std=c++98 -o ZtCThreadEx_000_mw.exe ZtCThreadEx_000.cpp -I../
g++.exe -std=c++98 -o ZtCThreadEx_000_mw_D.exe ZtCThreadEx_000.cpp -I../ -D_DEBUG
./ZtCThreadEx_000_mw.exe
./ZtCThreadEx_000_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCThreadEx_000.exe ZtCThreadEx_000.cpp -I../ -lpthread
g++ -std=c++98 -o ZtCThreadEx_000_D.exe ZtCThreadEx_000.cpp -I../ -lpthread -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCThreadEx_000.exe
./ZtCThreadEx_000_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,231 @@

#ifndef _REENTRANT_EX
#define _REENTRANT_EX
#endif
#include <iostream>
#include "ZCppMain/ZCProcess.H"
using namespace std ;
using namespace ZNsMain;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamThread_001
{
public:
class ZCThreadMy : public ZNsMain::ZtCThreadEx<ZCThreadMy>
{
public :
typedef ZNsMain::ZtCThreadEx<ZCThreadMy> TypeBase;
public :
friend class ZNsMain:: ZtCThreadEx<ZCThreadMy>;
public :
static int GI_CallCnt;
private:
void Init()
{
this->TypeBase::Init(); cout<<"* Init0() : "<<++ZCThreadMy::GI_CallCnt<<endl;
}
void Exec()
{
this->TypeBase::Exec(); cout<<"* Exec0() : "<<++ZCThreadMy::GI_CallCnt<<endl;
}
void Fini()
{
this->TypeBase::Fini(); cout<<"* Fini0() : "<<++ZCThreadMy::GI_CallCnt<<endl;
}
void Init(int& ARRI_CallCnt)
{
this->TypeBase::template Init<int&>(ARRI_CallCnt); cout<<"* Init1() : "<<++ARRI_CallCnt<<endl;
}
void Exec(int& ARRI_CallCnt)
{
this->TypeBase::template Exec<int&>(ARRI_CallCnt); cout<<"* Exec1() : "<<++ARRI_CallCnt<<endl;
}
void Fini(int& ARRI_CallCnt)
{
this->TypeBase::template Fini<int&>(ARRI_CallCnt); cout<<"* Fini1() : "<<++ARRI_CallCnt<<endl;
}
void Init(int& ARRI_CallCnt, int& ARRI_CallCnt2)
{
this->TypeBase::template Init
<int&, int&>(ARRI_CallCnt, ARRI_CallCnt2);
cout<<"* Init2() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<endl;
}
void Exec(int& ARRI_CallCnt, int& ARRI_CallCnt2)
{
this->TypeBase::template Exec
<int&, int&>(ARRI_CallCnt, ARRI_CallCnt2);
cout<<"* Init2() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<endl;
}
void Fini(int& ARRI_CallCnt, int& ARRI_CallCnt2)
{
this->TypeBase::template Fini
<int&, int&>(ARRI_CallCnt, ARRI_CallCnt2);
cout<<"* Init2() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<endl;
}
void Init(int& ARRI_CallCnt, int& ARRI_CallCnt2, int& ARRI_CallCnt3)
{
this->TypeBase::template Init<int&, int&, int&>
( ARRI_CallCnt, ARRI_CallCnt2, ARRI_CallCnt3 ) ;
cout<<"* Init3() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<", "<<ARRI_CallCnt3<<endl;
}
void Exec(int& ARRI_CallCnt, int& ARRI_CallCnt2, int& ARRI_CallCnt3)
{
this->TypeBase::template Exec<int&, int&, int&>
( ARRI_CallCnt, ARRI_CallCnt2, ARRI_CallCnt3 ) ;
cout<<"* Init3() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<", "<<ARRI_CallCnt3<<endl;
}
void Fini(int& ARRI_CallCnt, int& ARRI_CallCnt2, int& ARRI_CallCnt3)
{
this->TypeBase::template Fini<int&, int&, int&>
( ARRI_CallCnt, ARRI_CallCnt2, ARRI_CallCnt3 ) ;
cout<<"* Init3() : "<<++ARRI_CallCnt<<", "<<ARRI_CallCnt2<<", "<<ARRI_CallCnt3<<endl;
}
private:
};/*
class ZCThreadMy : public ZNsMain::ZtCThreadEx<ZCThreadMy>*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZCThreadMy VO_CThreadMy1 ;
ZCThreadMy VO_CThreadMy2 ;
ZCThreadMy VO_CThreadMy3 ;
ZCThreadMy VO_CThreadMy4 ;
VO_CThreadMy1.Make();
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy2.Make(ZftMCP(ZCThreadMy::GI_CallCnt));
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy3.Make(ZftMCP(ZCThreadMy::GI_CallCnt), ZftMCP(ZCThreadMy::GI_CallCnt));
cout<<"# Press Enter to continue."<<endl; cin.get();
VO_CThreadMy4.Make(ZftMCP(ZCThreadMy::GI_CallCnt), ZftMCP(ZCThreadMy::GI_CallCnt), ZftMCP(ZCThreadMy::GI_CallCnt));
cout<<"# Press Enter to continue."<<endl; cin.get();
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamThread_001*/
template<typename TDummy> int
ZtCExamThread_001<TDummy>::ZCThreadMy::GI_CallCnt =0 ;
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamThread_001<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCThreadEx_001.exe ZtCThreadEx_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCThreadEx_001_D.exe ZtCThreadEx_001.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -std=c++98 -o ZtCThreadEx_001_mw.exe ZtCThreadEx_001.cpp -I../
g++.exe -std=c++98 -o ZtCThreadEx_001_mw_D.exe ZtCThreadEx_001.cpp -I../ -D_DEBUG
./ZtCThreadEx_001_mw.exe
./ZtCThreadEx_001_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCThreadEx_001.exe ZtCThreadEx_001.cpp -I../ -lpthread
g++ -std=c++98 -o ZtCThreadEx_001_D.exe ZtCThreadEx_001.cpp -I../ -lpthread -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCThreadEx_001.exe
./ZtCThreadEx_001_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,237 @@

#ifndef _REENTRANT_EX
#define _REENTRANT_EX
#endif
#include <iostream>
#include "ZCppMain/ZCProcess.H"
#include "ZCppMain/ZMainHeadEx.H"
using namespace std ;
using namespace ZNsMain;
const int CI_RepeatCnt = 3 ;
const int CI_WaitMilli = 1000 ;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TDummy=void*> class ZtCExamThread_002
{
public:
typedef ZtCMutexCondData<> ZCMutexCondData;
public:
class ZCThreadMy : public ZNsMain::ZtCThreadEx<ZCThreadMy>
{
public :
typedef ZNsMain::ZtCThreadEx<ZCThreadMy> TypeBase;
public :
friend class ZNsMain:: ZtCThreadEx<ZCThreadMy>;
private:
void Init(ZCMutexCondData& AR_CMutexCond)
{
this->TypeBase::template Init<ZCMutexCondData&>(AR_CMutexCond);
/*@@@@@@@@@*/ AR_CMutexCond.Lock(); /*@@@@@@@@@*/
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"# *** Thread Init "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
/*::::::::::::::::::::::::*/
}
AR_CMutexCond.WakeCond();
AR_CMutexCond.WaitCond();
}/*
void Init(ZCMutexCondData& AR_CMutexCond)*/
void Exec(ZCMutexCondData& AR_CMutexCond)
{
this->TypeBase::template Exec<ZCMutexCondData&>(AR_CMutexCond);
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"# >>> Thread Exec "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
/*::::::::::::::::::::::::*/
}
AR_CMutexCond.WakeCond();
AR_CMutexCond.WaitCond();
}/*
void Exec(ZCMutexCondData& AR_CMutexCond)*/
void Fini(ZCMutexCondData& AR_CMutexCond)
{
this->TypeBase::template Fini<ZCMutexCondData&>(AR_CMutexCond);
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"# *** Thread Fini "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
/*::::::::::::::::::::::::*/
}
AR_CMutexCond.WakeCond();
/*@@@@@@@@@*/ AR_CMutexCond.UnLock(); /*@@@@@@@@@*/
}/*
void Fini(ZCMutexCondData& AR_CMutexCond)*/
private:
};/*
class ZCThreadMy : public ZNsMain::ZtCThreadEx<ZCThreadMy>*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZCMutexCondData VO_CMutexCond;
ZCThreadMy VO_CThreadMy ;
VO_CMutexCond.InitCond();
cout<<"- Mutex Init Cond" <<endl;
VO_CMutexCond.Lock ();
{
VO_CThreadMy.Make(ZftMCP(VO_CMutexCond));
cout<<"- Wait Thread Init"<<endl;
VO_CMutexCond.WaitCond();
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"- Ack Thread Init "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
}
VO_CMutexCond.WakeCond();
cout<<"- Wait Thread Exec"<<endl;
VO_CMutexCond.WaitCond();
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"- Ack Thread Exec "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
/*::::::::::::::::::::::::*/
}
VO_CMutexCond.WakeCond();
cout<<"- Wait Thread Fini"<<endl;
VO_CMutexCond.WaitCond();
{
__for1(int, i, CI_RepeatCnt)
{
cout<<"- Ack Thread Fini "<<i<<endl; ZfSuspendExec(CI_WaitMilli);
}
/*::::::::::::::::::::::::*/
}
}
VO_CMutexCond.UnLock();
VO_CMutexCond.FiniCond(); cout<<"- Mutex Fini Cond" <<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
public:
};/*
template<typename TDummy=void*> class ZtCExamThread_002*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::
ZtCExamThread_002<>::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o ZtCThreadEx_002_MutexCond.exe ZtCThreadEx_002_MutexCond.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o ZtCThreadEx_002_MutexCond_D.exe ZtCThreadEx_002_MutexCond.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -std=c++98 -o ZtCThreadEx_002_MutexCond_mw.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lWs2_32
g++.exe -std=c++98 -o ZtCThreadEx_002_MutexCond_mw_D.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lWs2_32 -D_DEBUG
g++.exe -std=c++98 -o ZtCThreadEx_002_MutexCond_mw.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lWs2_32
g++.exe -std=c++98 -o ZtCThreadEx_002_MutexCond_mw_D.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lWs2_32 -D_DEBUG
./ZtCThreadEx_002_MutexCond_mw.exe
./ZtCThreadEx_002_MutexCond_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o ZtCThreadEx_002_MutexCond.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lpthread -Wall -Wno-unused-function -Wno-misleading-indentation
g++ -std=c++98 -o ZtCThreadEx_002_MutexCond_D.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lpthread -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./ZtCThreadEx_002_MutexCond.exe
./ZtCThreadEx_002_MutexCond_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,57 @@

#include<iostream>
using namespace std;
int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
{
cout<<"Call Main()"<<endl; return 0;
}/*
int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*################################################################################
■ mingw 컴파일
g++ -o c++_test_000.exe c++_test_000.cpp -I../
■ linux 컴파일
g++ -o c++_test_000.exe c++_test_000.cpp -I../
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ g++ -o c++_test_000.exe c++_test_000.cpp -I../
c++_test_000.cpp: In function int main(int, char**):
c++_test_000.cpp:18:28: error: invalid conversion from char** to const char** [-fpermissive]
18 | return Main(AI_ArgCnt, APP_ArgVal);
| ^~~~~~~~~~
| |
| char**
c++_test_000.cpp:9:39: note: initializing argument 2 of int Main(int, const char**)
9 | int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
| ~~~~~~~~~~~~^~~~~~~~~~~~~~
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Mon Aug 25 01:39:11 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
################################################################################*/

View File

@ -0,0 +1,134 @@
#include <iostream>
#include "ZCppMain/ZMainHead.H"
using namespace std;
namespace ZNsMain
{
namespace ZNsExam
{
static void ShowFunctor(int AI_Data)
{
cout<<"* Show Data : "<<AI_Data<<endl;
}/*
static void ShowFunctor(int AI_Data)*/
template<typename TFunctor> static void
CallFunctor(TFunctor AO_Functor, int AI_Data)
{
AO_Functor(AI_Data);
}/*
template<typename TFunctor> static void
CallFunctor(TFunctor AO_Functor, int AI_Data)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
_FUNC_IN_FUNC_START_(My)(int ArgiData)
{
cout<<"# Show My() In Func : i = "<<ArgiData<<endl;
}
_FUNC_IN_FUNC_CLOSE_(My) /////////////
CallFunctor(&My::Exec, 1) ;
CallFunctor(&My::Exec, 2) ;
CallFunctor(&ShowFunctor, 10) ;
CallFunctor(&ShowFunctor, 20) ;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o c++_test_005.exe c++_test_005.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o c++_test_005_D.exe c++_test_005.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o c++_test_005_mw.exe c++_test_005.cpp -I../
g++.exe -o c++_test_005_mw_D.exe c++_test_005.cpp -I../ -D_DEBUG
./c++_test_005_mw.exe
./c++_test_005_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o c++_test_005.exe c++_test_005.cpp -I../
g++ -std=c++98 -o c++_test_005_D.exe c++_test_005.cpp -I../ -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./c++_test_005.exe
./c++_test_005_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/

View File

@ -0,0 +1,317 @@
#include <iostream>
#include <string>
#include "ZCppMain/ZMainHead.H"
using namespace std ;
using namespace ZNsMain;
namespace ZNsMain
{
namespace ZNsExam
{
template<typename TType> class ZtCTest
{
public:
template<TType TTypeVar> class ZCTypeVar
{
public:
TType MO_TypeVar;
public:
ZCTypeVar()
{
MO_TypeVar=TTypeVar;
}
public:
};/*
template<TType TTypeVar> class ZCTypeVar*/
public:
};/*
template<typename TType> class ZtCTest*/
template<typename TType, TType TTypeVar> class ZtCTest2
{
public:
TType MO_TypeVar;
public:
ZtCTest2()
{
MO_TypeVar=TTypeVar;
}
public:
};/*
template<typename TType, TType TTypeVar> class ZtCTest2*/
class ZCTypeView
{
public:
ZCTypeView()
{
cout<<"# ZCTypeView()"<<endl;
}
ZCTypeView(const ZCTypeView& rhs)
{
cout<<"ZCTypeView(const ZCTypeView& rhs)"<<endl;
}
~ZCTypeView()
{
cout<<"# ~ZCTypeView()"<<endl;
}
template<typename TTypChain> void OnMeetType()
{
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetType(TTypHelp& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain> void OnMeetTypeVal()
{
cout<<"* Val="<<TTypChain::GetData()<<", ETypeNo="<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetTypeVal(TTypHelp& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : Val="<<TTypChain::GetData()<<", ETypeNo="<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TObjtChain> void OnMeetData(TObjtChain& AR_NowChain)
{
cout<<"* Type No="<<AR_NowChain.GetNo()<<" : "<<AR_NowChain.GetData()<<endl;
}
template<typename TObjtChain> void OnMeetData(TObjtChain& AR_NowChain, int& ARI_CallNo)
{
cout<<"# CallNo="<<++ARI_CallNo<<" : Type No="<<AR_NowChain.GetNo()<<" : "<<AR_NowChain.GetData()<<endl;
}
};/*
class ZCTypeView*/
template<typename TType> class ZCShowType
{
public:
ZCShowType()
{
cout<<"# TType typename="<<typeid(TType).name()<<endl;
}
};
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
ZCShowType<int> myShowType1;
ZCShowType<double> myShowType2;
ZCShowType<ZTypLLong> myShowType3;
//ZCShowType<"abc"> myShowType4; //error
const int CI_Var1=10;
const int CI_Var2=20;
const int CI_Var3=30;
ZtCTest<int>::ZCTypeVar<CI_Var1> myintvar1 ;
ZtCTest2<int, CI_Var2> myintvar2 ;
ZtCTest2<ZTypLLong, CI_Var3> myintvar3 ;
cout<<myintvar1.MO_TypeVar<<endl;
cout<<myintvar2.MO_TypeVar<<endl;
cout<<myintvar3.MO_TypeVar<<endl;
typedef ZtCMiniValChain
<
char , 'a' , ZtCMiniValChain<
char , 'b' , ZtCMiniValChain<
char , 'c' , ZtCMiniValChain<
//double, 10.2 , ZtCMiniValChain< // error in linux
//string, string("123") , ZtCMiniValChain< // error
long , 10 , ZtCMiniValChain<
int , 19 ,
ZCEmpty > > > >
> ZCMiniValChain; ZCTypeView VO_ZCTypeView; int VI_CallNo = 0;
cout<<"# ZCMiniValChain.size()="<<ZCMiniValChain::size()<<endl;
ZCMiniValChain::ZtCIterChain<ZCTypeView&>::IterHead(VO_ZCTypeView);
cout<<"************************************"<<endl;
ZCMiniValChain::ZtCIterChain<ZCTypeView&>::IterTail(VO_ZCTypeView);
cout<<"************************************"<<endl;
ZCMiniValChain::ZtCIterChain<ZCTypeView&>::IterHead(VO_ZCTypeView, ZftMCP(VI_CallNo = 0));
cout<<"************************************"<<endl;
ZCMiniValChain::ZtCIterChain<ZCTypeView&>::IterTail(VO_ZCTypeView, ZftMCP(VI_CallNo = 0));
cout<<"************************************"<<endl;
typedef ZtCTypeChain
<
double , ZtCTypeChain<
int , ZtCTypeChain<
wchar_t, ZtCTypeChain<
char ,
ZCEmpty > > >
> ZCTypeChain;
cout<<"tmpl chain size = "<<ZCTypeChain::Size()<<endl;
ZftIterTypeChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
cout<<"@** call start : ZCTypeView(rhs) **********@"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterHead(VO_ZCTypeView);
cout<<"@******************************************@"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterTail(VO_ZCTypeView);
cout<<"@*** call close : ZCTypeView(rhs) *********@"<<endl;
ZftIterTypeChainHead<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZftIterTypeChainTail<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView&>::
IterHead(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView&>::
IterTail(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
cout<<"************************************"<<endl;
typedef ZtCDataRing<std::string> ZCDataRing;
ZCDataRing VO_CDataRing = string("123");
VO_CDataRing.AddTail(string("ABC"));
VO_CDataRing.AddTail(string("XYZ"));
cout<<"# VO_CDataRing Size = "<<VO_CDataRing.size()<<endl;
cout<<"# VO_CDataRing Data = "<<VO_CDataRing <<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThis = "<<endl;
VO_CDataRing.IterThis(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterHead = "<<endl;
VO_CDataRing.IterHead(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterTail = "<<endl;
VO_CDataRing.IterTail(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThisRev = "<<endl;
VO_CDataRing.IterThisRev(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThisRev(HelpType char(',')) = "<<endl;
VO_CDataRing.IterThisRev(&ZftPrint<string, char>, char(',')); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterTail(HelpType char(',')) = "<<endl;
VO_CDataRing.IterTail (&ZftPrint<string, char>, char(',')); cout<<endl;
cout<<"************************************"<<endl;
typedef ZtCDataRing<ZCTypeView> ZCViewRing;
ZCViewRing VO_ZCViewRing;
VO_ZCViewRing.AddTail();
VO_ZCViewRing.AddTail();
VO_ZCViewRing.DeleteAll();
cout<<"************************************"<<endl;
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
}/*
namespace ZNsExam*/
}/*
namespace ZNsMain*/
int main(int AI_ArgCnt, char* APP_ArgVal[])
{
return ZNsMain::ZNsExam::Main(AI_ArgCnt, APP_ArgVal);
}/*
int main(int AI_ArgCnt, char* APP_ArgVal[])*/
/*////////////////////////////////////////////////////////////////////////////////////////
■ cygwin 컴파일
// g++ -mno-cygwin -o c++_test_006.exe c++_test_006.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300
// g++ -mno-cygwin -o c++_test_006_D.exe c++_test_006.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG
■ mingw 컴파일
g++.exe -o c++_test_006_mw.exe c++_test_006.cpp -I../
g++.exe -o c++_test_006_mw_D.exe c++_test_006.cpp -I../ -D_DEBUG
./c++_test_006_mw.exe
./c++_test_006_mw_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date
Sun Aug 24 10:47:09 KST 2025
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# g++ --version
g++.exe (Rev2, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ Linux 컴파일
g++ -std=c++98 -o c++_test_006.exe c++_test_006.cpp -I../
g++ -std=c++98 -o c++_test_006_D.exe c++_test_006.cpp -I../ -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date
Sun Aug 24 00:05:51 DST 2025
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[sauron@q381-2657 ZCppMainTest]$ g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
■ 실행
./c++_test_006.exe
./c++_test_006_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/