Compare commits

294 Commits

Author SHA1 Message Date
/* User with id == 0 is a fake user from git author */ sauron
200b8583fc commit 2025-10-24 21:16 add ZtCObjtChain::GetChainByNo() in ZCppMain/ZMainHead.H 2025-10-24 21:16:51 +09:00
/* User with id == 0 is a fake user from git author */ sauron
2ad1e47820 commit 2025-10-23 20:02 add ZtCTypeByNo in ZCppMain/ZMainHead.H 2025-10-23 20:03:01 +09:00
/* User with id == 0 is a fake user from git author */ sauron
ff02649ca3 commit 2025-10-22 19:59 add ZtCObjtChain::SetDataRecur() ZCppMain/ZMainHead.H 2025-10-22 19:59:59 +09:00
/* 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
28 changed files with 16977 additions and 5328 deletions

View File

@ -1031,8 +1031,8 @@ namespace ZNsMain
class ZtCMutexCondDataVar : public TMutexCondData /////////////
{
public :
typedef TMutexCondData TypeData ;
typedef TMutexCondData CMutexCondData;
typedef TMutexCondData TypeData ;
typedef TMutexCondData ZCMutexCondData;
protected:
bool mb_MustWait;
bool mb_WaitCond;
@ -1101,6 +1101,16 @@ namespace ZNsMain
로 바뀌는 경우에, 쓰레드가 잠자고 있다면 깨운다. -- 2025-10-04 17:23
상태 this->mb_MustWait==true 를 만든 쓰레드는 '잠자는 쓰레드'이고
상태 this->mb_MustWait==false 를 만든 쓰레드는 '깨우는 쓰레드'이다.
다시 풀어 쓰면,
상태 this->mb_MustWait==true 를 만든 쓰레드는 '소비자 쓰레드'이고
상태 this->mb_MustWait==false 를 만든 쓰레드는 '생산자 쓰레드'이다.
-- 2025-10-06 18:29
////////////////////////////////////////////////////////////////*/
this->TMutexCondData::Lock();
@ -1178,6 +1188,17 @@ namespace ZNsMain
-- 2025-10-04 19:07
바꿔 말하면,
1번 쓰레드는 '소비자 쓰레드'이고, 2번 쓰레드는 '생산자 쓰레드'
이다. 그래서
WaitCondBoolSync() 는 '소비자 쓰레드'에서 호출하고
WakeCondBoolSync() 는 '생산자 쓰레드'에서 호출한다.
-- 2025-10-06 18:38
/////////////////////////////////////////////////////////////////////////////*/
template< typename TMutexCondData=ZNsMain::ZtCMutexCondData<>
@ -1185,21 +1206,24 @@ namespace ZNsMain
class ZtCMutexCondVar : public TMutexCondData /////////////////
{
public :
typedef TMutexCondData TypeData ;
typedef TMutexCondData CMutexCondData;
typedef TMutexCondData TypeData ;
typedef TMutexCondData ZCMutexCondData;
protected:
bool mb_WaitCond;
bool mb_WaitCond; // 지금 쓰레드가 작업이 없어서 잠잔다.
bool mb_WakeCond; // 어떤 쓰레드가 작업이 있어서 깨웠다.
public :
ZtCMutexCondVar()
{
mb_WaitCond= false;
mb_WakeCond= false;
}/*
ZtCMutexCondVar()*/
ZtCMutexCondVar(const ZtCMutexCondVar& rhs)
{
mb_WaitCond= false;
mb_WakeCond= false;
}/*
ZtCMutexCondVar(const ZtCMutexCondVar& rhs)*/
@ -1210,14 +1234,16 @@ namespace ZNsMain
ZtCMutexCondVar& operator=(const ZtCMutexCondVar& rhs)*/
_SY_ bool WaitCondOnExec()
_SY_ bool WaitCondBoolSync()
{
/* 이 TMutexCondData 에 접근해 작업을 처리한 쓰레드
(즉 '잠자는 쓰레드')는 작업이 끝나면 WaitCond()
에서 대기한다.
즉 잠자는 쓰레드, 소비자 쓰레드
는 작업이 끝나면 WaitCond() 에서 대기한다.
다만, 이 함수로 2개 이상의 쓰레드가 대기하는 것은
잘못된 설계이다. 어디까지나 1개 쓰레드 대기 용이다.
잘못된 설계이다. 어디까지나 1 개 쓰레드 대기용이다.
-- 2025-10-04 18:21
*/
@ -1225,36 +1251,51 @@ namespace ZNsMain
this->TMutexCondData::Lock();
{
if(!this->mb_WaitCond)
if(!this->mb_WakeCond && !this->mb_WaitCond)
{
this->mb_WaitCond = true ;
this->TMutexCondData::WaitCond();
this->mb_WaitCond = false;
this->mb_WakeCond = false;
VB_Return = true;
}/*
if(!this->mb_WaitCond)*/
if(!this->mb_WakeCond && !this->mb_WaitCond)*/
else // '작업'이 발생해 잠들지 않고 계속 작업하는 경우.
{
this->mb_WaitCond = false;
this->mb_WakeCond = false;
}/*
else // '작업'이 발생해 잠들지 않고 계속 작업하는 경우.*/
}
this->TMutexCondData::UnLock();
return VB_Return;
}/*
_SY_ bool WaitCondOnExec()*/
_SY_ bool WaitCondBoolSync()*/
_SY_ void WakeCondOnExec()
_SY_ void WakeCondBoolSync()
{
/* 작업이 발생해, 이 TMutexCondData 에 접근해 해당
쓰레드를 깨워 작업을 시키려는 쓰레드(깨우는 쓰레드)
쓰레드를 깨워 작업을 시키려는 쓰레드
즉 깨우는 쓰레드, 생산자 쓰레드
가 호출한다. -- 2025-10-04 19:01
*/
this->TMutexCondData::Lock();
{
if(this->mb_WaitCond==true) this->TMutexCondData::WakeCond();
if(!this->mb_WakeCond)
{
this->TMutexCondData::WakeCond(); this->mb_WakeCond=true;
}/*
if(!this->mb_WakeCond)*/
}
this->TMutexCondData::UnLock();
}/*
_SY_ void WakeCondOnExec()*/
_SY_ void WakeCondBoolSync()*/
bool DoWaitCond() const{return mb_WaitCond;}

View File

@ -3998,9 +3998,9 @@ namespace ZNsMain
///////////////////////////////////////////////////////////////*/
template< typename TData=ZNsMain::ZCEmpty
template< typename TData=ZNsMain::ZCEmpty /////////////////////
>
class ZtCMutexCondData : public TData
class ZtCMutexCondData : public TData ///////////////////////////
{
protected:
pthread_mutex_t mh_Mutex;
@ -4161,9 +4161,9 @@ namespace ZNsMain
public:
};/*
template< typename TData=ZNsMain::ZCEmpty
template< typename TData=ZNsMain::ZCEmpty /////////////////////
>
class ZtCMutexCondData : public TData ///*/
class ZtCMutexCondData : public TData ///////////////////*/
/*//////////////////////////////////////////////////////////////////
@ -4409,6 +4409,7 @@ namespace ZNsMain
>
class ZtCBarrier : public TData /////////*/
#endif // !defined(__USE_XOPEN2K) || defined(__USE_MUTEX_COND_FOR_BARRIER__)

View File

@ -1,420 +0,0 @@

#ifndef __ZCPPMAIIN_ZCSTRINGSTD_H__
#define __ZCPPMAIIN_ZCSTRINGSTD_H__
#include<string>
#include "ZCppMain/ZtCMainChars.H"
namespace ZNsMain
{
class ZCStringStd : public std::string
{
public:
typedef ZNsChars::ZNsType::ZtCTypeChars<char> ZCTypeChars;
typedef ZNsChars::ZtCMainChars<ZCTypeChars> ZCMainChars;
public:
typedef char TypeChar ;
typedef char* TypePChar ;
typedef const char* TypeCPChar;
typedef std::string TypeBase ;
typedef std::string TypeStrStd;
typedef ZTypLength TypeLength;
typedef ZTypLength TypeSize ;
public:
ZCStringStd(): TypeStrStd(){}
ZCStringStd(const ZCStringStd& rhs): TypeStrStd(rhs){}
ZCStringStd(const char* APC_Origin, TypeLength AL_Length): TypeStrStd(APC_Origin, AL_Length){}
ZCStringStd(const char* APC_Origin): TypeStrStd(APC_Origin){}
ZCStringStd& operator=(const ZCStringStd& rhs)
{
if(this==&rhs){ return *this; }
this->TypeStrStd::operator=(rhs); return *this;
}/*
ZCStringStd& operator=(const ZCStringStd& rhs)*/
ZCStringStd& operator=(const TypeBase& rhs)
{
if(this->data()==rhs.data()){ return *this; }
this->TypeStrStd::operator=(rhs); return *this;
}/*
ZCStringStd& operator=(const TypeBase& rhs)*/
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 ;
const char* 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
)
##########################################################*/
template<typename TPosList> ZCStringStd& ReplaceByPosList ///////////////////
(
TPosList& AR_CPosList ,
TypeCPChar APC_Replace ,
TypeLength AL_Replace ,
TypeLength AL_Searched
)
/*#########################################################################*/
{
// TPosList : ZNsMain::ZtCBaseList<TypeLength> etc
// AL_Replace : APC_Replace 의 길이
// AL_Searched : 이전에 찾은 길이
// ARR_SaveOut : AL_Replace>AL_Searched 인 경우에 여기에 저장한다.
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<char*>(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
);
/*::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
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
);
/*::::::::::::::::::::::::::::::::::::::::*/
}/*
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
);
/*::::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
if(VL_MemMoveSize>0)*/
VPC_DestStart = VPC_ThisStart + VL_SearchedPos + VL_DiffLength*(VL_PosListSize - i) ;
::memcpy /*::::::::::::::::::::::::::::::::::::::::*/
(
VPC_DestStart, APC_Replace, AL_Replace
);
/*::::::::::::::::::::::::::::::::::::::::::::::::::*/
VL_SearchedPre = VL_SearchedPos; --VL_NowEleNo;
AR_CPosList.ItPrev(VH_IterEasyID);
}/*
__for1(TypeLength, i, VL_PosListSize)*/
return *this;
}/*
template<typename TPosList> ZCStringStd& ReplaceByPosList ///////////////////
(
TPosList& AR_CPosList ,
TypeCPChar APC_Replace ,
TypeLength AL_Replace ,
TypeLength AL_Searched
)
###########################################################################*/
ZCStringStd& 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
);
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
}/*
ZCStringStd& Replace /*######################################################
(
TypeCPChar APC_Search, TypeCPChar APC_Replace,
TypeLength AL_Search , TypeLength AL_Replace , TypeLength AL_Offset=0
)
###########################################################################*/
ZCStringStd& 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);
}/*
ZCStringStd& Replace /*######################################################
(
TypeCPChar APC_Search, TypeCPChar APC_Replace, TypeLength AL_Offset=0
)
###########################################################################*/
ZCStringStd& operator()(ZCStringStd& rhs)
{
if(this==&rhs) return *this; this->append(rhs); return *this;
}/*
ZCStringStd& operator()(ZCStringStd& rhs)*/
ZCStringStd& operator()(TypeCPChar APC_Data, TypeLength AI_Length)
{
if(this->data()==APC_Data) return *this;
this->append(APC_Data, AI_Length); return *this;
}/*
ZCStringStd& operator()(TypeCPChar APC_Data, TypeLength AI_Length)*/
ZCStringStd& operator()(TypeCPChar APC_Data)
{
if(this->data()==APC_Data) return *this;
this->append(APC_Data); return *this;
}/*
ZCStringStd& operator()(TypeCPChar APC_Data)*/
ZCStringStd& operator()(TypeLength AI_Repeat, char AC_Data)
{
this->append(AI_Repeat, AC_Data); return *this;
}/*
ZCStringStd& operator()(char AC_Data, TypeLength AI_Repeat)*/
ZCStringStd& operator()(char AC_Data, TypeLength AI_Repeat=1)
{
this->append(AI_Repeat, AC_Data); return *this;
}/*
ZCStringStd& operator()(char AC_Data, TypeLength AI_Repeat=1)*/
ZCStringStd& operator()(int AI_IntParam)
{
const int CI_BuffSize=21; char VCA_BuffParam[CI_BuffSize];
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%d", AI_IntParam);
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(int AI_IntParam)*/
ZCStringStd& operator()(ZTypUInt AUI_UIntParam)
{
const int CI_BuffSize=21; char VCA_BuffParam[CI_BuffSize];
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%u", AUI_UIntParam);
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(ZTypUInt AUI_UIntParam)*/
ZCStringStd& operator()(long AL_LongParam)
{
const int CI_BuffSize=31; char VCA_BuffParam[CI_BuffSize];
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%ld", AL_LongParam);
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(long AL_LongParam)*/
ZCStringStd& operator()(ZTypULong AUL_ULongParam)
{
const int CI_BuffSize=31; char VCA_BuffParam[CI_BuffSize];
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%lu", AUL_ULongParam);
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(ZTypULong AUL_ULongParam)*/
ZCStringStd& operator()(ZTypLLong ALL_LLongParam)
{
const int CI_BuffSize=41; char VCA_BuffParam[CI_BuffSize];
#ifdef _WIN
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%I64d", ALL_LLongParam);
#else
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%lld" , ALL_LLongParam);
#endif
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(ZTypLLong ALL_LLongParam)*/
ZCStringStd& operator()(ZTypULLong AULL_LLongParam)
{
const int CI_BuffSize=41; char VCA_BuffParam[CI_BuffSize];
#ifdef _WIN
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%I64u", AULL_LLongParam);
#else
int VI_ResultSize = ::sprintf(VCA_BuffParam, "%llu" , AULL_LLongParam);
#endif
return (*this)(VCA_BuffParam, VI_ResultSize);
}/*
ZCStringStd& operator()(ZTypULLong AULL_LLongParam)*/
ZCStringStd& operator()(double AD_DoubleParam)
{
const int CI_BuffSize=51 ;
char VCA_BuffParam[CI_BuffSize];
int VI_ResultSize = ::sprintf
(
VCA_BuffParam, "%f", AD_DoubleParam
);
/////////////////////////////
return (*this)(VCA_BuffParam);
}/*
ZCStringStd& operator()(double AD_DoubleParam)*/
public:
};/*
class ZCStringStd : public std::string*/
std::ostream& operator <<
(std::ostream& AR_COStream, const ZCStringStd& AR_CStringBase)
{
AR_COStream<<static_cast<const std::string&>(AR_CStringBase); return AR_COStream;
}/*
std::ostream& operator <<
(std::ostream& AR_COStream, const ZCStringStd& AR_CStringBase)*/
}/*
namespace ZNsMain*/
#endif //__ZCPPMAIIN_ZCSTRINGSTD_H__

View File

@ -348,7 +348,7 @@ namespace ZNsMain
typename TEnvVar , //= ZNsMain::ZNsCGI::ZNsBase::ZtCEnvVar<TStringData>,
typename TEnvVarSet //= NsCPP::ZtCObjAVL<TEnvVar>
>
class ZtCTypeEnvVarSet /*############################################################*/
class ZtCTypeEnvVarSet ##############################################################*/
}/*
namespace NsType*/

View File

@ -1040,7 +1040,7 @@ namespace ZNsMain
int AI_Offset= 0 ,
const char* APC_Padd = ""
)
/*################################################################*/
##################################################################*/
template<typename TString> void ZftGetBinHexFormat /*#############*/
@ -1258,7 +1258,7 @@ namespace ZNsMain
int AI_Offset=0 ,
const char* APC_Padd =""
)
/*################################################################*/
##################################################################*/
template<typename TString> void ZftGetBinHexFormatEx( /*##########*/

File diff suppressed because it is too large Load Diff

View File

@ -1157,7 +1157,7 @@ namespace ZNsMain
{
time_t VI_TimeSec=ZNsMain::ZCTime::MakeTimeInt(AI_Year, AI_Month, AI_Day, AI_Hour, AI_Min, AI_Sec);
if(VI_TimeSec<1) return false; *this+=VI_TimeSec; return true ;
if(VI_TimeSec<1){return false;} *this+=VI_TimeSec; return true ;
}/*
bool GetDiffSec(time_t& ARRI_TimeGap, int AI_Year,int AI_Month,int AI_Day,int AI_Hour,int AI_Min,int AI_Sec)*/
@ -1388,15 +1388,15 @@ namespace ZNsMain
static string& GetUniqueID(string& ARR_CString)
{
const int CI_BuffSize=100 ;
static int SI_Count =0 ;
static long SI_Count =0 ;
const char* CPC_Gap ="_" ;
char VCA_Buff[CI_BuffSize] ;
::sprintf( VCA_Buff,
"%d%s%d%s%d" ,
"%ld%s%ld%s%ld" ,
(long)GetNowSec(), // (long) 가 없으면 메모리 오류가 난다.
CPC_Gap , GetTickCount() ,
CPC_Gap , (++SI_Count)+ ::GetCurrentProcessId()
CPC_Gap , (long)GetTickCount() ,
CPC_Gap , (++SI_Count)+long(::GetCurrentProcessId())
/*////*/ );
return ARR_CString = VCA_Buff ;
@ -3987,8 +3987,8 @@ namespace ZNsMain
if(VI_Index<0) return ARR_CStringExt;
return ARR_CStringExt(
APC_FileName+VI_Index+1, AI_Length-(VI_Index+1));
return ARR_CStringExt
( APC_FileName+VI_Index+1, AI_Length-(VI_Index+1) );
}/*
template<typename TString, typename TTypChar> ///////////////
static TString& GetExtName
@ -4000,19 +4000,23 @@ namespace ZNsMain
///////////////////////////////////////////////////////////*/
template<typename TString, typename TTypChar> static bool SetExtName(
const TTypChar* APC_FileName, ZTypLength AI_FileLen ,
const TTypChar* APC_FileExt , ZTypLength AI_ExtLength,
TString& ARR_CStringFileNew
/*#########*/ ) /*#################################################*/
template<typename TString, typename TTypChar> static bool SetExtName
(
const TTypChar* APC_FileName, ZTypLength AI_FileLen ,
const TTypChar* APC_FileExt , ZTypLength AI_ExtLength,
TString& ARR_CStringFileNew
)
/*################################################################*/
{
// APC_FileName 의 확장자를 APC_FileExt 으로 바꾼
// 새로운 파일명을 ARR_CStringFileNew 에 전달한다.
ZTypLength VL_ExtPos=ZCMainChars::FindPosFromEnd(
APC_FileName, ".",
AI_FileLen ,(ZTypLength)1
/*/////////*/ ); ////////////////////////////////
ZTypLength VL_ExtPos=ZCMainChars::FindPosFromEnd
(
APC_FileName, TTypChar(".") ,
AI_FileLen , (ZTypLength)1
);
/**********************************************/
if(VL_ExtPos<0 || VL_ExtPos==AI_FileLen-1)
{
@ -4027,34 +4031,54 @@ namespace ZNsMain
}/*
else if(VL_ExtPos==0)*/
ARR_CStringFileNew.append(APC_FileName, VL_ExtPos );
ARR_CStringFileNew+=".";
ARR_CStringFileNew.append(APC_FileExt , AI_ExtLength);
ARR_CStringFileNew.append(APC_FileName , VL_ExtPos );
ARR_CStringFileNew.append(TTypChar('.') );
ARR_CStringFileNew.append(APC_FileExt , AI_ExtLength );
return true;
}/*
template<typename TString, typename TTypChar> static bool SetExtName(
const TTypChar* APC_FileName, ZTypLength AI_FileLen ,
const TTypChar* APC_FileExt , ZTypLength AI_ExtLength,
TString& ARR_CStringFileNew
############# ) ###################################################*/
template<typename TString, typename TTypChar> static bool SetExtName
(
const TTypChar* APC_FileName, ZTypLength AI_FileLen ,
const TTypChar* APC_FileExt , ZTypLength AI_ExtLength,
TString& ARR_CStringFileNew
)
##################################################################*/
template<typename TString> static bool SetExtName(
const TString& AR_CStringFileNow, const TString& AR_CStringNewExt, TString& ARR_CStringFileNew)
{
return SetExtName( /////////////////////////////
AR_CStringFileNow.c_str(),
AR_CStringFileNow.size() ,
AR_CStringNewExt.c_str() ,
AR_CStringNewExt.size() ,
RR(ARR_CStringFileNew)
/*//////////*/ ); //////////////////////////////
return SetExtName /**************/
(
AR_CStringFileNow.data() ,
AR_CStringFileNow.size() ,
AR_CStringNewExt .data() ,
AR_CStringNewExt .size() ,
RR(ARR_CStringFileNew)
);
/********************************/
}/*
template<typename TString> static bool SetExtName(
const TString& AR_CStringFileNow, const TString& AR_CStringNewExt, TString& ARR_CStringFileNew) */
template<typename TString, typename TCharView> static bool SetExtName
(
const TCharView& AR_FileName, const TCharView& AR_FileExt, TString& ARR_CStringFileNew
)
/*#################################################################*/
{
return SetExtName /***************************/
(
AR_FileName.data(), AR_FileName.size(),
AR_FileExt .data(), AR_FileExt .size()
);
/*********************************************/
}
/*#################################################################*/
template<typename TString, typename TTypChar> static bool SetFileName
(
const TTypChar* APC_FileNow, ZTypLength AI_FileNowLen,
@ -4066,10 +4090,11 @@ namespace ZNsMain
/* 파일 APC_FileNow 의 확장자를 뺀 부분을 APC_FileNew 으로 바꾼,
새로운 파일명을 ARR_CStringFileNew 에 전달한다. */
ZTypLength VL_ExtPos=ZCMainChars::FindPos( /////////
APC_FileNow , ".",
AI_FileNowLen, 1
/*/////////*/ ); //////////////////////////////////
ZTypLength VL_ExtPos=ZCMainChars::FindPos
(
APC_FileNow , ".", AI_FileNowLen, 1
);
/***************************************/
if(VL_ExtPos<0)
{ ARR_CStringFileNew.append(APC_FileNew, AI_FileNewLen); return false; }
@ -4078,7 +4103,7 @@ namespace ZNsMain
/*else if(VL_ExtPos==0)*/
ARR_CStringFileNew.append(APC_FileNew, AI_FileNewLen);
ARR_CStringFileNew+=".";
ARR_CStringFileNew.append('.');
if(VL_ExtPos<AI_FileNowLen-1)
{
@ -4087,9 +4112,7 @@ namespace ZNsMain
APC_FileNow+VL_ExtPos+1, AI_FileNowLen-VL_ExtPos-1
);
}
/////////////////////////////
return true;
return true; /**************/
}/*
template<typename TString, typename TTypChar> static bool SetFileName
(
@ -4103,13 +4126,13 @@ namespace ZNsMain
template<typename TString> static bool SetFileName(
const TString& AR_CStringFileNow, const TString& AR_CStringNewExt, TString& ARR_CStringFileNew)
{
return SetFileName( ///////////////////////////
AR_CStringFileNow.data(),
AR_CStringFileNow.size(),
AR_CStringNewExt .data(),
AR_CStringNewExt .size(),
RR(ARR_CStringFileNew)
/*//////////*/ ); /////////////////////////////
return SetFileName /**************************************/
(
AR_CStringFileNow.data(), AR_CStringFileNow.size(),
AR_CStringNewExt .data(), AR_CStringNewExt .size(),
RR(ARR_CStringFileNew)
);
/*********************************************************/
}/*
template<typename TString> static bool SetFileName(
const TString& AR_CStringFileNow, const TString& AR_CStringNewExt, TString& ARR_CStringFileNew) */
@ -4144,13 +4167,12 @@ namespace ZNsMain
return APC_PathName+VL_FindPos+1;
}/*
template<typename TTypChar>
static const TTypChar* GetFileNameInPath ///////////////////////
(
const TTypChar* APC_PathName,
ZTypLength AI_Length ,
ZTypLength& ARRI_FileName
)
template<typename TTypChar> static const TTypChar* GetFileNameInPath
(
const TTypChar* APC_PathName,
ZTypLength AI_Length ,
ZTypLength& ARRI_FileName
)
//////////////////////////////////////////////////////////////////*/
template<typename TString, typename TTypChar>
@ -4179,7 +4201,7 @@ namespace ZNsMain
static TString& GetFileNameInPath(const TChars& AR_PathName, TString& ARR_FileNameCStr) */
static bool RmAnyDir /*###############################################################*/
static bool RmAnyDir ///////////////////////////////////////////////////////////////////
( ZTypCPCh AP_DirName, void (*APF_ExceptHandle)
(
ZTypCPCh AP_FileName, ZCFileData& AR_CFileData, ZTypCPCCh AP_Message
@ -4246,7 +4268,7 @@ namespace ZNsMain
VB_RemoveFail=false;
}
while(VB_IsSearched = ::FindNextFileA(VH_File, &VO_CFileData));
while((VB_IsSearched = ::FindNextFileA(VH_File, &VO_CFileData))==TRUE);
::FindClose(VH_File);
@ -4466,7 +4488,7 @@ namespace ZNsMain
#endif //!defined(_WIN) && !defined(_REENTRANT)
}/*
static bool RmAnyDir ################################################################@#
static bool RmAnyDir //////////////////////////////////////////////////////////////////
(
ZTypCPCh AP_DirName ,
void (*APF_ExceptHandle)
@ -5027,7 +5049,7 @@ namespace ZNsMain
ZCFileData VO_CFileData;
#if defined(_REENTRANT) && !defined(_NO_USE_REEDDIR_R_)
dirent VO_DirEnt;
dirent VO_DirEnt ;
#endif
dirent* VP_DirEnt;
TypeDirID VH_File= ::opendir(APC_DirPath);
@ -5268,7 +5290,7 @@ namespace ZNsMain
ZNsMain::ZNsEnum::ZERun (*APF_EachFile)(ZTypCPCh APC_NowPath, ZCFileData& AR_CFileData, void* APC_VoidKey),
ZNsMain::ZNsEnum::ZERun (*APF_EachDir )(ZTypCPCh APC_NowPath, ZCFileData& AR_CFileData, void* APC_VoidKey)=0
)
/*##########################################################################*/
############################################################################*/
/*////////////////////////////////////////////////////
@ -5740,11 +5762,11 @@ namespace ZNsMain
char* VP_NowDir = ::getcwd
((char*)ARR_CStringDir.data(), CI_BuffSize);
if(VP_NowDir==0) return false; ARR_CStringDir.
if(VP_NowDir==0){return false;} ARR_CStringDir.
resize(ZNsMain::ZftLength(VP_NowDir), ' ') ;
return true; /********************************/
return true; /*********************************/
}/*
if(false==AB_DoKeepPrev)*/
@ -7114,7 +7136,6 @@ namespace ZNsMain
{
return VI_EmptyBuffCnt;
}
////////////////
}
else // AL_Length<ZNsMain::ZTypInt(VP_IOBuff->iov_len)
{
@ -7145,12 +7166,10 @@ namespace ZNsMain
void MoveFirst()
{
if(mi_HeadPos<1) return;
if(mi_HeadPos<1) return ;
int VI_Index=0 ;
int i =mi_HeadPos;
int VI_ValidBuffCnt=GetSize();
int VI_Index= 0, i = mi_HeadPos;
int VI_ValidBuffCnt = GetSize() ;
for(; i<=mi_TailPos; ++i)
{
@ -7167,8 +7186,7 @@ namespace ZNsMain
}/*
for(i=0; i<mi_HeadPos; ++i)*/
mi_HeadPos=0 ;
mi_TailPos=VI_ValidBuffCnt-1;
mi_HeadPos= 0 ; mi_TailPos= VI_ValidBuffCnt-1;
}/*
void MoveFirst()*/
@ -7253,7 +7271,7 @@ namespace ZNsMain
#######################################################################################################*/
static bool ZfWriteFileRaw /*##########################################################################*/
static bool ZfWriteFileRaw /*//////////////////////////////////////////////////////////////////////////*/
(
ZTypCPCh APC_FileName , ZTypCPCh APC_Content ,
ZTypLength AL_ContentLen, bool AB_DoAppend=true, int AI_RightMode=-1
@ -7340,15 +7358,15 @@ namespace ZNsMain
#endif //!defined(_WIN)
}/*
static bool ZfWriteFileRaw( #############################################################################
static bool ZfWriteFileRaw( /////////////////////////////////////////////////////////////////////////////
(
ZTypCPCh APC_FileName , ZTypCPCh APC_Content ,
ZTypLength AL_ContentLen, bool AB_DoAppend=true, int AI_RightMode=-1
)
/*#####################################################################################################*/
#######################################################################################################*/
template<typename TStringData> bool ZftLoadFile /*############################*/
template<typename TStringData> bool ZftLoadFile /*////////////////////////////*/
(
TStringData& ARR_SaveCStr , ZTypCPCChar APC_FileName ,
ZTypLength AL_LoadSize=0 , ZTypLength AL_Offset =0,
@ -7360,6 +7378,9 @@ namespace ZNsMain
if(AL_Offset<0) AL_Offset=0;
typedef ZtCCharType<TStringData> ZCCharType;
typedef typename ZCCharType::TypeChar Typechar ;
#ifndef _WIN
int AH_FileDesc = ::open
@ -7373,10 +7394,8 @@ namespace ZNsMain
(AH_FileDesc, 0/*Offset*/, SEEK_END); // 실패시 -1
if(VL_LastPos == -1 || VL_LastPos<=AL_Offset)
{
::close(AH_FileDesc); return false;
}/*
if(VL_LastPos == -1 || VL_LastPos<=AL_Offset)*/
{ ::close(AH_FileDesc); return false; }
/*******************************************/
VL_LastPos -= AL_Offset;
@ -7399,17 +7418,19 @@ namespace ZNsMain
ZTypLength VL_ReadSize = 0 ;
ZTypCPChar VP_CopyStart =
const_cast<ZTypPChar>(ARR_SaveCStr.c_str())+VL_PrevSize ;
const_cast<ZTypPChar>(ARR_SaveCStr.data())+VL_PrevSize ;
if((VL_ReadSize = read(AH_FileDesc, VP_CopyStart, VL_LastPos))<0)
if((VL_ReadSize = ::read(AH_FileDesc, VP_CopyStart, VL_LastPos))<0)
{
ARR_SaveCStr.resize(VL_PrevSize, ' '); ::close(AH_FileDesc); return true;
ARR_SaveCStr.resize(VL_PrevSize, Typechar(0));
::close(AH_FileDesc); return true; /*********/
}
/*/////////////////////////////////////////////////////////////*/
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
ARR_SaveCStr.resize(VL_PrevSize+VL_ReadSize, ' ');
ARR_SaveCStr.resize(VL_PrevSize+VL_ReadSize, Typechar(0));
::close(AH_FileDesc); return true; /*:::::::::::*/
::close(AH_FileDesc); return true; /*********************/
#else //defined(_WIN)
@ -7446,27 +7467,27 @@ namespace ZNsMain
::SetFilePointer(VH_File, AL_Offset, NULL, FILE_BEGIN);
ZTypCPChar VP_CopyStart =
const_cast<ZTypPChar>(ARR_SaveCStr.c_str())+VL_PrevSize ;
const_cast<ZTypPChar>(ARR_SaveCStr.data())+VL_PrevSize ;
if(::ReadFile(VH_File, (LPVOID)VP_CopyStart, dwRead, &dwRead2, NULL)==FALSE)
{
ARR_SaveCStr.resize(VL_PrevSize+dwRead2, ' ');
ARR_SaveCStr.resize(VL_PrevSize+dwRead2, Typechar(0));
CloseHandle(VH_File); return false;
::CloseHandle(VH_File); return false; /**************/
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
::CloseHandle(VH_File);
if(dwRead2>0)
ARR_SaveCStr.resize(VL_PrevSize+dwRead2, ' ');
else ARR_SaveCStr.resize(VL_PrevSize , ' ');
ARR_SaveCStr.resize(VL_PrevSize+dwRead2, Typechar(0));
else ARR_SaveCStr.resize(VL_PrevSize , Typechar(0));
return true;
#endif //defined(_WIN)
}/*
template<typename TStringData> bool ZftLoadFile ################################
template<typename TStringData> bool ZftLoadFile ////////////////////////////////
(
TStringData& ARR_SaveCStr , ZTypCPCChar APC_FileName ,
ZTypLength AL_LoadSize=0 , ZTypLength AL_Offset =0,

View File

@ -17,84 +17,289 @@ namespace ZNsMain
class ZtCArray //////////////////////////
{
public:
typedef TType Type ;
typedef TType TypeData;
typedef TTypArg TypeArg ;
typedef TSize TypeSize;
typedef ZtCArray ZCArray ;
typedef TType Type ;
typedef TType TypeData ;
typedef TTypArg TypeArg ;
typedef TSize TypeSize ;
public:
class ZCIterator;
class ZCNodePoint; class ZCNodePointN ;
public:
typedef Type* IterEasy;
typedef ZCIterator iterator;
typedef const ZCIterator const_iterator;
typedef TypeData* IterEasy ;
typedef TypeData* TypeNode ; // ZCLinkPoint::GetNode() 의 반환형.
typedef ZCNodePoint TypeIter ;
typedef ZtCArray TypeThis ;
typedef const TypeThis TypeThisC ;
typedef const TypeData TypeDataC ;
typedef const TypeData* TypeNodeC ; // ZCLinkPoint::GetNode() const 의 반환형.
typedef const TypeIter TypeIterC ;
typedef const TypeData* IterEasyC ;
/**********************************************/
typedef const ZCNodePoint ZCNodePointC;
typedef const ZCNodePoint iteratorC ;
/**********************************************/
typedef ZCNodePoint iterator ;
typedef ZCNodePointN const_iterator;
typedef ZCNodePointN iteratorN ;
typedef ZCNodePointN TypeIterN ;
public:
class ZCIterator
class ZCNodePoint
{
private: mutable
Type* mp_Data ; mutable
TSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치
ZCArray* mp_CArray;
private:
ZtCArray& mr_CArray; mutable
TypeData* mp_Data ; mutable
TypeSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치
public:
ZCIterator()
static ZCNodePoint MakeTailPoint(ZtCArray & AR_CArray)
{
mp_Data =0;
mp_CArray=0;
ml_ElePos=0;
}/*
ZCIterator()*/
ZCNodePoint VO_ZCLinkPoint(AR_CArray);
ZCIterator(ZCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)
if(AR_CArray.size()>0) /****************************/
{
VO_ZCLinkPoint.mp_Data = AR_CArray.mp_TypeArr+AR_CArray.size()-1 ;
VO_ZCLinkPoint.ml_ElePos = AR_CArray.size() ;
}
return VO_ZCLinkPoint; /****************************/
}/*
static ZCNodePoint MakeTailPoint(ZtCArray & AR_CArray)*/
static ZCNodePoint MakeTailPoint(TypeIterC& AR_TypeIter)
{
ZCNodePoint VO_ZCLinkPoint(AR_TypeIter);
const TypeSize VL_ArrSize = AR_TypeIter.mr_CArray.size();
if(VL_ArrSize>0) /**********************************/
{
VO_ZCLinkPoint.mp_Data = AR_TypeIter.mr_CArray+VL_ArrSize-1 ;
VO_ZCLinkPoint.ml_ElePos = VL_ArrSize ;
}
return VO_ZCLinkPoint; /****************************/
}/*
static ZCNodePoint MakeTailPoint(TypeIterC& AR_TypeIter)*/
public:
ZCNodePoint(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) :
mr_CArray(AR_CArray)
/*****************************************************************/
{
mp_Data =&AR_CData ;
mp_CArray=&AR_CArray;
ml_ElePos=AL_ElePos ;
}/*
ZCIterator(ZCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/
ZCNodePoint(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/
ZCIterator(ZCArray& AR_CArray)
ZCNodePoint(ZtCArray& AR_CArray) : mr_CArray(AR_CArray)
{
mp_Data = AR_CArray.mp_TypeArr ;
mp_CArray=&AR_CArray ;
ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ;
}/*
ZCIterator(ZCArray& AR_CArray)*/
ZCNodePoint(ZtCArray& AR_CArray)*/
ZCIterator(const ZCArray& AR_CArray)
ZCNodePoint(const ZCNodePoint& rhs) : mr_CArray(rhs.mr_CArray)
{
mp_Data = AR_CArray.mp_TypeArr ;
mp_CArray= const_cast<ZCArray*>(&AR_CArray) ;
ml_ElePos= (AR_CArray.size()>0 ? 1 : 0 ) ;
mp_Data = rhs.mp_Data ;
ml_ElePos= (mr_CArray.size()>0 ? 1 : 0 );
}/*
ZCIterator(const ZCArray& AR_CArray)*/
ZCNodePoint(const ZCNodePoint& rhs)*/
Type& operator*( ){return *mp_Data;}
Type* operator->(){return mp_Data;}
const Type& operator* () const{return *mp_Data;}
const Type* operator->() const{return mp_Data;}
TypeThis & GetMain() {return mr_CArray ;}
TypeNode GetNode() {return mp_Data ;}
ZCIterator& operator++( ){++mp_Data; ++ml_ElePos; return *this;}
ZCIterator operator++(int){++mp_Data; ++ml_ElePos; return *this;}
TypeThisC& GetMain() const{return mr_CArray ;}
TypeNodeC GetNode() const{return mp_Data ;}
const ZCIterator& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;}
const ZCIterator operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
TypeSize GetPos () const{return ml_ElePos ;}
TypeSize size () const{return mr_CArray.size();}
ZCIterator operator+(TSize AL_AddPos) const
TypeData & operator* () {return *mp_Data;}
TypeData * operator->() {return mp_Data;}
TypeDataC& operator* () const{return *mp_Data;}
TypeDataC* operator->() const{return mp_Data;}
TypeIter & operator++( ) {++mp_Data; ++ml_ElePos; return *this;}
TypeIter operator++(int) {++mp_Data; ++ml_ElePos; return *this;}
TypeIter & operator--( ) {--mp_Data; --ml_ElePos; return *this;}
TypeIter operator--(int) {--mp_Data; --ml_ElePos; return *this;}
ZCNodePointC& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;}
ZCNodePointC operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
ZCNodePointC& operator--( ) const{--mp_Data; --ml_ElePos; return *this;}
ZCNodePointC operator--(int) const{--mp_Data; --ml_ElePos; return *this;}
TypeIter operator+(TSize AL_AddPos) const
{
return ZCIterator(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos);
return ZCNodePoint(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos);
}/*
ZCIterator operator+(TSize AL_AddPos) const*/
TypeIter operator+(TSize AL_AddPos) const*/
bool operator == (ZCNodePointC& rhs) const
{ return ml_ElePos == rhs.ml_ElePos; }
bool operator != (ZCNodePointC& rhs) const
{ return ml_ElePos != rhs.ml_ElePos; }
bool operator > (ZCNodePointC& rhs) const
{ return ml_ElePos > rhs.ml_ElePos; }
bool operator >= (ZCNodePointC& rhs) const
{ return ml_ElePos >= rhs.ml_ElePos; }
bool operator < (ZCNodePointC& rhs) const
{ return ml_ElePos < rhs.ml_ElePos; }
bool operator <= (ZCNodePointC& rhs) const
{ return ml_ElePos <= rhs.ml_ElePos; }
bool operator == (TypeSize AL_Size) const
{ return ml_ElePos == AL_Size; }
bool operator != (TypeSize AL_Size) const
{ return ml_ElePos != AL_Size; }
bool operator > (TypeSize AL_Size) const
{ return ml_ElePos > AL_Size; }
bool operator >= (TypeSize AL_Size) const
{ return ml_ElePos >= AL_Size; }
bool operator < (TypeSize AL_Size) const
{ return ml_ElePos < AL_Size; }
bool operator <= (TypeSize AL_Size) const
{ return ml_ElePos <= AL_Size; }
public:
};/*
class ZCIterator
class ZCNodePoint*/
public :*/
class ZCNodePointN
{
private:
mutable TypeData* mp_Data ;
mutable TypeSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치
const ZtCArray& mr_CArray;
public:
static ZCNodePointN MakeTailPoint(ZtCArray & AR_CArray)
{
ZCNodePointN VO_ZCLinkPoint(AR_CArray);
if(AR_CArray.size()>0) /****************************/
{
VO_ZCLinkPoint.mp_Data = AR_CArray.mp_TypeArr+AR_CArray.size()-1 ;
VO_ZCLinkPoint.ml_ElePos = AR_CArray.size() ;
}
return VO_ZCLinkPoint; /****************************/
}/*
static ZCNodePointN MakeTailPoint(ZtCArray & AR_CArray)*/
static ZCNodePointN MakeTailPoint(TypeIterC& AR_TypeIter)
{
ZCNodePointN VO_ZCLinkPoint(AR_TypeIter);
const TypeSize VL_ArrSize = AR_TypeIter.mr_CArray.size();
if(VL_ArrSize>0) /**********************************/
{
VO_ZCLinkPoint.mp_Data = AR_TypeIter.mr_CArray+VL_ArrSize-1 ;
VO_ZCLinkPoint.ml_ElePos = VL_ArrSize ;
}
return VO_ZCLinkPoint; /****************************/
}/*
static ZCNodePointN MakeTailPoint(TypeIterC& AR_TypeIter)*/
static ZCNodePointN MakeTailPoint(TypeIterN& AR_TypeIter)
{
ZCNodePointN VO_ZCLinkPoint(AR_TypeIter);
const TypeSize VL_ArrSize = AR_TypeIter.mr_CArray.size();
if(VL_ArrSize>0) /**********************************/
{
VO_ZCLinkPoint.mp_Data = AR_TypeIter.mr_CArray+VL_ArrSize-1 ;
VO_ZCLinkPoint.ml_ElePos = VL_ArrSize ;
}
return VO_ZCLinkPoint; /****************************/
}/*
static ZCNodePointN MakeTailPoint(TypeIterN& AR_TypeIter)*/
public:
ZCNodePointN(const ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) :
mr_CArray(AR_CArray)
/*****************************************************************/
{
mp_Data =&AR_CData ;
ml_ElePos=AL_ElePos ;
}/*
ZCNodePointN(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/
ZCNodePointN(ZtCArray& AR_CArray) : mr_CArray(AR_CArray)
{
mp_Data = AR_CArray.mp_Data ;
ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ;
}/*
ZCNodePointN(ZtCArray& AR_CArray)*/
ZCNodePointN(const ZCNodePointN& rhs) : mr_CArray(rhs.mr_CArray)
{
mp_Data = rhs.mp_Data ;
ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ;
}/*
ZCNodePointN(const ZCNodePointN& rhs)*/
ZCNodePointN(const ZCNodePoint & rhs) : mr_CArray(rhs.mr_CArray)
{
mp_Data = rhs.mp_Data ;
ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ;
}/*
ZCNodePointN(const ZCNodePoint & rhs)*/
TypeSize size () const{return mr_CArray.size();}
TypeSize GetPos() const{return ml_ElePos ;}
TypeDataC& operator* () const{return *mp_Data;}
TypeDataC* operator->() const{return mp_Data;}
TypeIterN& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;}
TypeIterN operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
TypeIterN operator+(TSize AL_AddPos) const
{
return ZCNodePointN(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos);
}/*
TypeIterN operator+(TSize AL_AddPos) const*/
bool operator == (const ZCNodePointN& rhs) const
{ return ml_ElePos == rhs.ml_ElePos; }
bool operator != (const ZCNodePointN& rhs) const
{ return ml_ElePos != rhs.ml_ElePos; }
bool operator > (const ZCNodePointN& rhs) const
{ return ml_ElePos > rhs.ml_ElePos; }
bool operator >= (const ZCNodePointN& rhs) const
{ return ml_ElePos >= rhs.ml_ElePos; }
bool operator < (const ZCNodePointN& rhs) const
{ return ml_ElePos < rhs.ml_ElePos; }
bool operator <= (const ZCNodePointN& rhs) const
{ return ml_ElePos <= rhs.ml_ElePos; }
bool operator == (TypeSize AL_Size) const
{ return ml_ElePos == AL_Size; }
bool operator != (TypeSize AL_Size) const
{ return ml_ElePos != AL_Size; }
bool operator > (TypeSize AL_Size) const
{ return ml_ElePos > AL_Size; }
bool operator >= (TypeSize AL_Size) const
{ return ml_ElePos >= AL_Size; }
bool operator < (TypeSize AL_Size) const
{ return ml_ElePos < AL_Size; }
bool operator <= (TypeSize AL_Size) const
{ return ml_ElePos <= AL_Size; }
public:
};/*
class ZCNodePointN*/
public :
/**************************************************************************/
protected:
enum{ZEAddSize=20};
protected:
@ -137,7 +342,7 @@ namespace ZNsMain
}/*
~ZtCArray()*/
ZCArray& operator=(const ZCArray& rhs)
ZtCArray& operator=(const ZtCArray& rhs)
{
if(this==&rhs) return *this ;
@ -154,13 +359,13 @@ namespace ZNsMain
return *this;
}/*
ZCArray& operator=(const ZCArray& rhs)*/
ZtCArray& operator=(const ZtCArray& rhs)*/
ZCArray& operator()(TypeArg AR_TypeArg)
ZtCArray& operator()(TypeArg AR_TypeArg)
{
AddTail(AR_TypeArg); return *this;
}/*
ZCArray& operator()(TypeArg AR_TypeArg)*/
ZtCArray& operator()(TypeArg AR_TypeArg)*/
void Delete()
@ -184,8 +389,8 @@ namespace ZNsMain
TypeSize GetUseSize() const{return ml_UseSize;}
TypeSize GetAddSize() const{return ml_AddSize;}
TypeSize size () const{return ml_UseSize;}
TypeSize capacity() const{return ml_AllSize;}
TypeSize size () const{return ml_UseSize;}
TypeSize capacity () const{return ml_AllSize;}
void SetAddSize(TypeSize AL_NewAddSize)
@ -259,44 +464,12 @@ namespace ZNsMain
Type& operator[](TypeSize AL_Index)
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'Type& operator[](TypeSize AL_Index)"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<", "<<AL_Index<<">="<<ml_UseSize<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
Type& operator[](TypeSize AL_Index)*/
const Type& operator[](TypeSize AL_Index) const
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt", std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'const Type& operator[](TypeSize AL_Index) const"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
const Type& operator[](TypeSize AL_Index) const*/
@ -304,44 +477,12 @@ namespace ZNsMain
Type& GetData(TypeSize AL_Index)
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'Type& GetData(TypeSize AL_Index)"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
Type& GetData(TypeSize AL_Index)*/
const Type& GetData(TypeSize AL_Index) const
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'const Type& GetData(TypeSize AL_Index) const"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index];
}/*
const Type& GetData(TypeSize AL_Index) const*/
@ -354,8 +495,8 @@ namespace ZNsMain
for(TypeSize i=ml_UseSize-2; i>=0; --i)
{
mp_TypeArr[i+1]=mp_TypeArr[i] ;
}/*
for(TypeSize i=ml_UseSize-2; i>=0; --i)*/
}
/*:::::::::::::::::::::::::::::::::::*/
mp_TypeArr[0]=AR_TypeArg ;
}/*
@ -370,8 +511,8 @@ namespace ZNsMain
for(TypeSize i=ml_UseSize-2; i>=0; --i)
{
mp_TypeArr[i+1]=mp_TypeArr[i] ;
}/*
for(TypeSize i=ml_UseSize-2; i>=0; --i)*/
}
/*:::::::::::::::::::::::::::::::::::*/
return mp_TypeArr[0] ;
}/*
@ -401,11 +542,17 @@ namespace ZNsMain
void push_front(TypeArg AR_TypeArg){AddHead(AR_TypeArg);}
void push_back (TypeArg AR_TypeArg){AddTail(AR_TypeArg);}
Type& push_front(){return AddHead();}
Type& push_back (){return AddTail();}
TypeData& push_front(){return AddHead();}
TypeData& push_back (){return AddTail();}
ZCIterator begin() {return ZCIterator(*this);}
const ZCIterator begin() const{return ZCIterator(*this);}
TypeIter begin () {return ZCNodePoint (*this);}
TypeIterN begin () const{return ZCNodePointN(*this);}
iterator end () { return ZCNodePoint ::MakeTailPoint(*this); }
iteratorN end () const{ return ZCNodePointN::MakeTailPoint(*this); }
iteratorN cbegin() const{ return ZCNodePointN(*this); }
iteratorN cend () const{ return ZCNodePointN::MakeTailPoint(*this); }
template<typename TFunctor> void IterElement(TFunctor AO_Functor)
@ -418,10 +565,6 @@ namespace ZNsMain
GetObjRef(AO_Functor)( *VP_TypeArr );
++VP_TypeArr; //////////////////
/* ZtCTypeData 으로 인해서, AO_Functor 이 함수일 때뿐이 아니라,
operator() 연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다.
*/
}/*
__for0(TypeSize, i, ml_UseSize)*/
}/*
@ -449,35 +592,20 @@ namespace ZNsMain
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)*/
template
<typename TFunctor, typename TTypeHelp1, typename TTypeHelp2>
template /*#####################################################*/
<
typename TFunctor ,
typename TTypeHelp1 ,
typename TTypeHelp2
>
void IterElement
(TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2)
(
TFunctor AO_Functor ,
TTypeHelp1 AO_TypeHelp1 ,
TTypeHelp2 AO_TypeHelp2
)
/*##############################################################*/
{
/*/////////////////////////////////////////////////////////////////////////////
■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면,
IterElement<myFunctor, myClass&>(myFunctor_obj, myClass_Obj);
의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여,
myClass myClass_Obj; ZNsMain::ZtCObjectPtr<myClass> myCObjPtr(myClass_Obj);
IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr<myClass>(myClass_Obj));
형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00
ZCCheckRef::PassData() 으로 인해, 인수를 ZtCRef 클래스를 이용해 인수를 참조
로 넘길 수 있게 되었다. -- 2021-03-10 16:56
이제는 ZtCRef 과 ZCCheckRef 클래스 템플릿을 사용하면 된다. -- 2021-03-11 11:00
/////////////////////////////////////////////////////////////////////////////*/
typedef ZNsMain::ZtCCheckRef<TTypeHelp1> ZCCheckRef1;
typedef ZNsMain::ZtCCheckRef<TTypeHelp2> ZCCheckRef2;
@ -495,10 +623,19 @@ namespace ZNsMain
}/*
__for0(TypeSize, i, ml_UseSize)*/
}/*
template
<typename TFunctor, typename TTypeHelp1, typename TTypeHelp2>
template #########################################################
<
typename TFunctor ,
typename TTypeHelp1 ,
typename TTypeHelp2
>
void IterElement
(TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2)*/
(
TFunctor AO_Functor ,
TTypeHelp1 AO_TypeHelp1 ,
TTypeHelp2 AO_TypeHelp2
)
################################################################*/
/*///////////////////////////////////////////////////////////////////////////
@ -610,103 +747,97 @@ namespace ZNsMain
-- 2011-06-12 20:42:00
GetDataInIter() 를 ItD() 로 대체. -- 2025-10-15 15:49
///////////////////////////////////////////////////////////////////////////*/
Type* GetHeadIterEasy (){return mp_TypeArr ;}
Type* GetTailIterEasy (){return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID GetHeadIterEasyID(){return (IterEasyID) mp_TypeArr ;}
IterEasyID GetTailIterEasyID(){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
TypeData * GetHeadIterEasy () {return mp_TypeArr ;}
TypeData * GetTailIterEasy () {return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID GetHeadIterEasyID () {return (IterEasyID ) mp_TypeArr ;}
IterEasyID GetTailIterEasyID () {return (IterEasyID )(mp_TypeArr+ml_UseSize-1);}
const Type* GetHeadIterEasy () const{return mp_TypeArr ;}
const Type* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;}
const IterEasyID GetHeadIterEasyID() const{return (IterEasyID) mp_TypeArr ;}
const IterEasyID GetTailIterEasyID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
TypeDataC* GetHeadIterEasy () const{return mp_TypeArr ;}
TypeDataC* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;}
IterEasyIDc GetHeadIterEasyID () const{return (IterEasyIDc) mp_TypeArr ;}
IterEasyIDc GetTailIterEasyID () const{return (IterEasyIDc)(mp_TypeArr+ml_UseSize-1);}
void MoveNextIter(Type*& APR_CType ) const{++APR_CType ;}
void MoveNextIter(iterator& ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(IterEasyID& AI_IterEasyID) const
{ MoveNextIter((Type*&)AI_IterEasyID); }
void MoveNextIter(const Type*& APR_CType ) const{++APR_CType ;}
void MoveNextIter(const iterator& ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(const IterEasyID& AI_IterEasyID)
const{ MoveNextIter((const Type*&)AI_IterEasyID); }
IterEasyIDc GetHeadIterEasyIDc() const{return (IterEasyIDc) mp_TypeArr ;}
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)(mp_TypeArr+ml_UseSize-1);}
void MovePrevIter(Type*& APR_CType ) const{--APR_CType ;}
void MovePrevIter(iterator& ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(IterEasyID& AI_IterEasyID) const
{ MovePrevIter((Type*&)AI_IterEasyID); }
void MovePrevIter(const Type*& APR_CType ) const{--APR_CType ;}
void MovePrevIter(const iterator& ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(const IterEasyID& AI_IterEasyID)
const{ MovePrevIter((const Type*&)AI_IterEasyID); }
void MoveNextIter(TypeData* & APR_CType ) const{++APR_CType ;}
void MoveNextIter(iterator & ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(IterEasyID & AI_IterEasyID) const
{ MoveNextIter((TypeData *&)AI_IterEasyID); }
void MoveNextIter(TypeDataC* & APR_CType ) const{++APR_CType ;}
void MoveNextIter(iteratorC & ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(IterEasyIDc& AI_IterEasyID) const
{ MoveNextIter((TypeDataC*&)AI_IterEasyID); }
void MovePrevIter(TypeData* & APR_CType ) const{--APR_CType ;}
void MovePrevIter(iterator & ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(IterEasyID & AI_IterEasyID) const
{ MovePrevIter((TypeData *&)AI_IterEasyID); }
void MovePrevIter(TypeDataC* & APR_CType ) const{--APR_CType ;}
void MovePrevIter(iteratorC & ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(IterEasyIDc& AI_IterEasyID) const
{ MovePrevIter((TypeDataC*&)AI_IterEasyID); }
Type& GetDataInIter(Type* AP_CType ){return *AP_CType ;}
Type& GetDataInIter(iterator& ARR_CIterator){return *ARR_CIterator ;}
Type& GetDataInIter(IterEasyID AI_IterEasyID){return *(Type*)AI_IterEasyID;}
TypeData * ItHEasy() {return mp_TypeArr ;}
TypeData * ItTEasy() {return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID ItHID () {return (IterEasyID ) mp_TypeArr ;}
IterEasyID ItTID () {return (IterEasyID )(mp_TypeArr+ml_UseSize-1);}
const Type& GetDataInIter(const Type* AP_CType ) const{return *AP_CType;}
const Type& GetDataInIter(const iterator& ARR_CIterator) const{return *ARR_CIterator;}
const Type& GetDataInIter(const IterEasyID AI_IterEasyID) const
{ return *(const Type*)AI_IterEasyID; }
TypeDataC* ItHEasy() const{return mp_TypeArr ;}
TypeDataC* ItTEasy() const{return mp_TypeArr+ml_UseSize-1 ;}
IterEasyIDc ItHID () const{return (IterEasyIDc) mp_TypeArr ;}
IterEasyIDc ItTID () const{return (IterEasyIDc)(mp_TypeArr+ml_UseSize-1);}
IterEasyIDc ItHIDc () const{return (IterEasyIDc) mp_TypeArr ;}
IterEasyIDc ItTIDc () const{return (IterEasyIDc)(mp_TypeArr+ml_UseSize-1);}
void ItNext(TypeData* & APR_CType ) const{++APR_CType ;}
void ItNext(iterator & ARR_CIterator) const{++ARR_CIterator;}
void ItNext(IterEasyID & AI_IterEasyID) const
{ ItNext((TypeData *&)AI_IterEasyID); }
void ItNext(TypeDataC* & APR_CType ) const{++APR_CType ;}
void ItNext(iteratorC & ARR_CIterator) const{++ARR_CIterator;}
void ItNext(IterEasyIDc & AI_IterEasyID) const
{ ItNext((TypeDataC*&)AI_IterEasyID); }
void ItPrev(TypeData* & APR_CType ) const{--APR_CType ;}
void ItPrev(iterator & ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(IterEasyID & AI_IterEasyID) const
{ ItPrev((TypeData *&)AI_IterEasyID); }
void ItPrev(TypeDataC* & APR_CType ) const{--APR_CType ;}
void ItPrev(iteratorC & ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(IterEasyIDc & AI_IterEasyID) const
{ ItPrev((TypeDataC*&)AI_IterEasyID); }
TypeData& ItD(TypeData * AP_CType ) {return *AP_CType ;}
TypeData& ItD(iterator & ARR_CIterator) {return *ARR_CIterator;}
TypeData& ItD(IterEasyID AI_IterEasyID)
{ return *(TypeData *)AI_IterEasyID; }
TypeDataC& ItD(TypeDataC * AP_CType ) const{return *AP_CType;}
TypeDataC& ItD(iteratorC & ARR_CIterator) const{return *ARR_CIterator;}
TypeDataC& ItD(IterEasyIDc AI_IterEasyID) const
{ return *(TypeDataC*)AI_IterEasyID; }
Type& GetDataInIter(Type* AP_Type , TypeSize AI_FarNum)
TypeData & ItD(TypeData * AP_Type , TypeSize AI_FarNum)
{ return *(AP_Type + AI_FarNum) ; }
Type& GetDataInIter(iterator& ARR_CIterator , TypeSize AI_FarNum)
TypeData & ItD(iterator & ARR_CIterator , TypeSize AI_FarNum)
{ return *(ARR_CIterator+AI_FarNum) ; }
Type& GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
{ return GetDataInIter((Type*)ARRI_IterEasyID, AI_FarNum); }
TypeData & ItD(IterEasyID AH_IterEasyID , TypeSize AI_FarNum)
{ return ItD((TypeData*)AH_IterEasyID , AI_FarNum); }
const Type& GetDataInIter(const Type* AP_Type , TypeSize AI_FarNum) const
TypeDataC& ItD(TypeDataC * AP_Type , TypeSize AI_FarNum) const
{ return *(AP_Type + AI_FarNum); }
const Type& GetDataInIter(iterator& ARR_CIterator, TypeSize AI_FarNum) const
TypeDataC& ItD(iterator & ARR_CIterator , TypeSize AI_FarNum) const
{ return *(ARR_CIterator+AI_FarNum); }
const Type& GetDataInIter(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const
{ return GetDataInIter((const Type*)ARRI_IterEasyID, AI_FarNum); }
Type* ItHEasy(){return mp_TypeArr ;}
Type* ItTEasy(){return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID ItHID (){return (IterEasyID) mp_TypeArr ;}
IterEasyID ItTID (){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
const Type* ItHEasy () const{return mp_TypeArr ;}
const Type* ItTEasy () const{return mp_TypeArr+ml_UseSize-1 ;}
const IterEasyID ItHID() const{return (IterEasyID) mp_TypeArr ;}
const IterEasyID ItTID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
void ItNext(Type*& APR_CType ) const{++APR_CType ;}
void ItNext(iterator& ARR_CIterator) const{++ARR_CIterator;}
void ItNext(IterEasyID& AI_IterEasyID) const
{ ItNext((Type*&)AI_IterEasyID); }
void ItNext(const Type*& APR_CType ) const{++APR_CType ;}
void ItNext(const iterator& ARR_CIterator) const{++ARR_CIterator;}
void ItNext(const IterEasyID& AI_IterEasyID)
const{ ItNext((const Type*&)AI_IterEasyID); }
void ItPrev(Type*& APR_CType ) const{--APR_CType ;}
void ItPrev(iterator& ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(IterEasyID& AI_IterEasyID) const
{ ItPrev((Type*&)AI_IterEasyID); }
void ItPrev(const Type*& APR_CType ) const{--APR_CType ;}
void ItPrev(const iterator& ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(const IterEasyID& AI_IterEasyID)
const{ ItPrev((const Type*&)AI_IterEasyID); }
Type& ItD(Type* AP_Type ){return GetDataInIter(AP_Type );}
Type& ItD(iterator& ARR_CIterator ){return GetDataInIter(ARR_CIterator );}
Type& ItD(IterEasyID ARRI_IterEasyID ){return GetDataInIter(ARRI_IterEasyID );}
Type& ItD(Type* AP_Type , TypeSize AI_FarNum){return GetDataInIter(AP_Type , AI_FarNum );}
Type& ItD(iterator& ARR_CIterator , TypeSize AI_FarNum){return GetDataInIter(ARR_CIterator , AI_FarNum);}
Type& ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
const Type& ItD(const Type* AP_Type ) const{return GetDataInIter(AP_Type );}
const Type& ItD(const iterator& ARR_CIterator ) const{return GetDataInIter(ARR_CIterator );}
const Type& ItD(const IterEasyID ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID );}
const Type& ItD(const Type* AP_Type , TypeSize AI_FarNum) const{return GetDataInIter(AP_Type );}
const Type& ItD(const iterator& ARR_CIterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_CIterator , AI_FarNum);}
const Type& ItD(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
TypeDataC& ItD(IterEasyIDc AH_IterEasyID , TypeSize AI_FarNum) const
{ return ItD((TypeDataC*)AH_IterEasyID, AI_FarNum); }
public:
};/*
@ -717,11 +848,11 @@ namespace ZNsMain
class ZtCArray /////////////////////////*/
///////////////////////////////////////////////
////////////////////////////////////////////////
////////////// end class ZCArray //////////////
////////////// end class ZtCArray //////////////
///////////////////////////////////////////////
////////////////////////////////////////////////
@ -771,44 +902,12 @@ namespace ZNsMain
Type& operator[](TSize AL_Index)
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'Type& operator[](TSize AL_Index)"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<", "<<AL_Index<<">="<<ml_UseSize<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
Type& operator[](TSize AL_Index)*/
const Type& operator[](TSize AL_Index) const
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'const Type& operator[](TSize AL_Index) const"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
const Type& operator[](TSize AL_Index) const*/
@ -816,44 +915,12 @@ namespace ZNsMain
Type& GetData(TSize AL_Index)
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'Type& GetData(TSize AL_Index)"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index] ;
}/*
Type& GetData(TSize AL_Index)*/
const Type& GetData(TSize AL_Index) const
{
#ifdef _DEBUG
if(AL_Index>=ml_UseSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'const Type& GetData(TSize AL_Index) const"<<std::endl;
fileout<<" AL_Index>=ml_UseSize"<<std::endl;
fileout.close();
::exit(1);
}/*
if(AL_Index>=ml_UseSize)*/
#endif //_DEBUG
return mp_TypeArr[AL_Index];
}/*
const Type& GetData(TSize AL_Index) const*/

File diff suppressed because it is too large Load Diff

View File

@ -480,7 +480,7 @@ namespace ZNsMain
(
const TypeChar* AP_CharID, ZCStringData& ARR_CStringSave
) const
/*#############################################################################*/
###############################################################################*/
ZCStringData GetElementValueByID(const ZCStringData& AR_CStringID) const
@ -4040,7 +4040,7 @@ namespace ZNsMain
const TypeChar* APC_XmlData ,
TypeLength AI_DataLen
)
/*#############################################################################*/
###############################################################################*/
template<typename TViewLoadXml, typename TMainChars>
ZERunEx Exec(TViewLoadXml& AR_CViewLoadXml, const TMainChars& AR_CMainChars)

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

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

@ -183,7 +183,7 @@ namespace ZNsMain
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 ;
}/*
@ -264,7 +264,7 @@ namespace ZNsMain
}/*
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPreOrder
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
/*##############################################################*/
################################################################*/
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
( TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0 )
@ -318,7 +318,7 @@ namespace ZNsMain
}/*
template<typename TViewClass> ZNsMain::ZNsEnum::ZERun IterPostOrder
(TViewClass& AR_CViewClass, TypeSize AI_StartDepth=0, TypeSize AI_NodeIndex=0)
/*###############################################################*/
#################################################################*/
public:
};/*
@ -360,7 +360,7 @@ namespace ZNsMain
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 ;
}/*
@ -470,6 +470,7 @@ namespace ZNsMain
■ class ZtCTreeData 예제 -- 2015-08-14 14:00
#include <iostream>
#include "ZCppMain/ZtCStringEx.H"
#include "ZCppMain/ZtCTreeData.H"
using namespace std ;
@ -635,7 +636,7 @@ namespace ZNsMain
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 ;
}/*
@ -674,7 +675,7 @@ namespace ZNsMain
TypeSize VL_DataCnt= mo_CDataList .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());
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
@ -858,7 +859,7 @@ namespace ZNsMain
ZCNode& AddSubNode()
{
ZCNode* VP_CNode=(ZCNode*)&
( **mo_CNodeList.AddTailDef() );
( *mo_CNodeList.AddTailDef() );
VP_CNode->mp_HighNode=(ZCNode*)this; return *VP_CNode;
}/*

View File

@ -89,8 +89,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZMainCGI_000_EnvSet.exe ZMainCGI_000_EnvSet.cpp -I../
g++ -std=c++98 -o ZMainCGI_000_EnvSet_D.exe ZMainCGI_000_EnvSet.cpp -I../ -D_DEBUG
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

View File

@ -218,8 +218,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZtCArray_000.exe ZtCArray_000.cpp -I../
g++ -std=c++98 -o ZtCArray_000_D.exe ZtCArray_000.cpp -I../ -D_DEBUG
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

View File

@ -111,7 +111,12 @@ namespace ZNsMain
>;
///////////////////////////////////////////////////////////////////////////
typedef typename ZCBaseList::ZCLink ZCLink;
/*****************************************************************************/
typedef typename ZCBaseList::ZCLink ZCLink ;
/*****************************************************************************/
typedef typename ZCBaseList::iterator iterator ;
typedef typename ZCBaseList::const_iterator const_iterator;
/*****************************************************************************/
public :
@ -129,24 +134,24 @@ namespace ZNsMain
private:
_VT_ ZCLink* SendFreeOut()
_VT_ ZCLink* SendFreeOut() const
{
cout<<"** ZCBaseListEx10 : SendFreeOut()"<<endl;
return this->ZCBaseList::NewLink();
}/*
_VT_ ZCLink* SendFreeOut()*/
_VT_ ZCLink* SendFreeOut() const*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const
{
cout<<"** ZCBaseListEx10 : SendFreeOut(TypeArg)"<<endl;
return this->ZCBaseList::NewLink(AO_ArgData);
}/*
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const*/
_VT_ void SendFreeOut
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) const
{
cout<<"** ZCBaseListEx10 : SendFreeOut("<<AL_NeedCnt<<", ZCLink*&, ZCLink*&)"<<endl;
@ -157,7 +162,7 @@ namespace ZNsMain
(
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
)
) const
/////////////////////////////////////////////////////
{
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, "<<AL_FarNum<<", ZCLink*&, ZCLink*&)"<<endl;
@ -216,8 +221,13 @@ namespace ZNsMain
>;
///////////////////////////////////////////////////////////////////////////
typedef typename ZCBaseList::ZCLink ZCLink;
/*****************************************************************************/
typedef typename ZCBaseList::ZCLink ZCLink ;
/*****************************************************************************/
typedef typename ZCBaseList::iterator iterator ;
typedef typename ZCBaseList::const_iterator const_iterator;
/*****************************************************************************/
public :
_VT_ ZTypLong capacity() const
@ -300,47 +310,127 @@ namespace ZNsMain
typedef typename ZCBaseListEx11::ZCLink ZCLink11;
static void ShowDataInNode(const CStringBase& AR_Data)
static void ShowDataInNode(const CStringBase& AR_Data, ZTypLong& ARRI_CallCnt)
{
cout<<"* Data : "<<AR_Data<<endl;
cout<<++ARRI_CallCnt<<"* Data : "<<AR_Data<<endl;
}/*
static void ShowDataInNode(const CStringBase& AR_Data)*/
static void ShowDataInNode(const CStringBase& AR_Data, ZTypLong& ARRI_CallCnt)*/
static void ShowNode10(ZCLink10& AR_CLink)
static void Append10(ZCLink10& AR_CLink)
{
cout<<"* Node10 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node10 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node10 Prev : "<<*(AR_CLink+1)<<endl;
(*AR_CLink).append("__");
}/*
static void ShowNode10(ZCLink10& AR_CLink)*/
static void ShowNode11(ZCLink11& AR_CLink)
{
cout<<"* Node11 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node11 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node11 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode11(ZCLink11& AR_CLink)*/
static void Append10(ZCLink10& AR_CLink)*/
static void ShowNode10_2(ZCLink10& AR_CLink, ostream& AR_OS)
static void ShowNode10(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)
{
cout<<"* Node10_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node10_2 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node10_2 Prev : "<<*(AR_CLink+1)<<endl;
++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_2(ZCLink10& AR_CLink, ostream& AR_OS)*/
static void ShowNode11_2(ZCLink11& AR_CLink, ostream& AR_OS)
static void ShowNode10(ZCLink10& AR_CLink, ZTypLong& ARRI_CallCnt)*/
static void ShowNode11(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)
{
cout<<"* Node11_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node11_2 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node11_2 Prev : "<<*(AR_CLink+1)<<endl;
++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_2(ZCLink11& AR_CLink, ostream& AR_OS)*/
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 ;
@ -355,7 +445,7 @@ namespace ZNsMain
cout<<"# 1th IterElement ####" <<endl;
{
VO_ListOfStr1.IterElement(&ShowDataInNode);
VO_ListOfStr1.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
}
/*///////////////////////////////////*/
@ -373,7 +463,7 @@ namespace ZNsMain
cout<<"# 2th IterElement ####" <<endl;
{
VO_ListOfStr2.IterElement(&ShowDataInNode);
VO_ListOfStr2.IterElement(&ShowDataInNode, ZftMCP(VI_CallCnt=0));
}
/*///////////////////////////////////*/
@ -415,7 +505,7 @@ namespace ZNsMain
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10"<<endl<<endl;
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
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"));
@ -423,31 +513,362 @@ namespace ZNsMain
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);
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);
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);
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);
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);
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10 , ZftMCP(VI_CallCnt=0));
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_2, ZftMCP(cout));
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;
}/*
@ -483,8 +904,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ mingw 컴파일
g++.exe -o ZtCBaseList_000_mw.exe ZtCBaseList_000.cpp -I../ -lWs2_32
g++.exe -o ZtCBaseList_000_mw_D.exe ZtCBaseList_000.cpp -I../ -lWs2_32 -D_DEBUG
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
@ -504,8 +925,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZtCBaseList_000.exe ZtCBaseList_000.cpp -I../
g++ -std=c++98 -o ZtCBaseList_000_D.exe ZtCBaseList_000.cpp -I../ -D_DEBUG
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

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

@ -36,6 +36,12 @@ namespace ZNsMain
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)
{
@ -60,12 +66,67 @@ namespace ZNsMain
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"));
@ -74,6 +135,18 @@ namespace ZNsMain
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);
@ -229,8 +302,132 @@ namespace ZNsMain
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# list10 IterElemLink"<<endl;
VO_ListOfStr10.IterElemLink(&ShowNode1);
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;
@ -267,8 +464,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ mingw 컴파일
g++.exe -o ZtCObjList_000_mw.exe ZtCObjList_000.cpp -I../ -lWs2_32
g++.exe -o ZtCObjList_000_mw_D.exe ZtCObjList_000.cpp -I../ -lWs2_32 -D_DEBUG
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
@ -288,8 +485,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZtCObjList_000.exe ZtCObjList_000.cpp -I../
g++ -std=c++98 -o ZtCObjList_000_D.exe ZtCObjList_000.cpp -I../ -D_DEBUG
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

View File

@ -293,8 +293,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZtCSimList_000.exe ZtCSimList_000.cpp -I../
g++ -std=c++98 -o ZtCSimList_000_D.exe ZtCSimList_000.cpp -I../ -D_DEBUG
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

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

@ -172,6 +172,9 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
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
@ -190,8 +193,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ Linux 컴파일
g++ -std=c++98 -o ZtCThreadEx_002_MutexCond.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lpthread
g++ -std=c++98 -o ZtCThreadEx_002_MutexCond_D.exe ZtCThreadEx_002_MutexCond.cpp -I../ -lpthread -D_DEBUG
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

View File

@ -0,0 +1,386 @@
#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 ZtCObjtChain
<
char , ZtCObjtChain<
string, ZtCObjtChain<
double, ZtCObjtChain<
int ,
ZCEmpty > > >
> ZCObjtChain; ZCObjtChain VO_ZCObjtChain;
VO_ZCObjtChain.GetChainNext().GetData()="abc";
*VO_ZCObjtChain ='Z' ;
*VO_ZCObjtChain() ="New Str";
*VO_ZCObjtChain()() =0.8 ;
*VO_ZCObjtChain()()() =1234 ;
VO_ZCObjtChain.IterHead(ZftMCP(VO_ZCTypeView));
cout<<"************************************"<<endl;
VO_ZCObjtChain.GetData<ZCObjtChain>()='X';
VO_ZCObjtChain.GetData<ZCObjtChain::TypeChainNext>()="New2 Str";
VO_ZCObjtChain.GetData<ZCObjtChain::TypeChainNext::TypeChainNext>()=0.9;
VO_ZCObjtChain.GetData<ZCObjtChain::TypeChainNext::TypeChainNext::TypeChainNext>()=4321;
VO_ZCObjtChain.IterHead(ZftMCP(VO_ZCTypeView));
cout<<"************************************"<<endl;
VO_ZCObjtChain="New3 Str";
VO_ZCObjtChain='B';
VO_ZCObjtChain.SetDataRecur<4>('D');
VO_ZCObjtChain.SetDataRecur<3>(string("New3 Str"));
VO_ZCObjtChain.SetDataRecur<2>(0.8);
VO_ZCObjtChain.SetDataRecur<1>(9990);
VO_ZCObjtChain.IterHead(ZftMCP(VO_ZCTypeView));
cout<<"************************************"<<endl;
*VO_ZCObjtChain.GetChainByNo<0>()=('E');
*VO_ZCObjtChain.GetChainByNo<1>()=(string("New4 Str"));
*VO_ZCObjtChain.GetChainByNo<2>()=(1.8);
*VO_ZCObjtChain.GetChainByNo<3>()=(9999);
VO_ZCObjtChain.IterHead(ZftMCP(VO_ZCTypeView));
cout<<"#VO_ZCObjtChain = "<<VO_ZCObjtChain<<endl;
cout<<"************************************"<<endl;
typedef ZtCTypeByNo<ZCObjtChain, 0>::TypeData TypeDataHere0 ;
typedef ZtCTypeByNo<ZCObjtChain, 1>::TypeData TypeDataHere1 ;
typedef ZtCTypeByNo<ZCObjtChain, 2>::TypeData TypeDataHere2 ;
typedef ZtCTypeByNo<ZCObjtChain, 3>::TypeData TypeDataHere3 ;
typedef ZtCTypeByNo<ZCObjtChain, 4>::TypeData TypeDataHere4 ;
typedef ZtCTypeByNo<ZCObjtChain, 0>::TypeChain TypeChainHere0;
typedef ZtCTypeByNo<ZCObjtChain, 1>::TypeChain TypeChainHere1;
typedef ZtCTypeByNo<ZCObjtChain, 2>::TypeChain TypeChainHere2;
typedef ZtCTypeByNo<ZCObjtChain, 3>::TypeChain TypeChainHere3;
typedef ZtCTypeByNo<ZCObjtChain, 4>::TypeChain TypeChainHere4;
cout<<"# TypeDataHere0 ="<<typeid(TypeDataHere0 ).name()<<endl;
cout<<"# TypeDataHere1 ="<<typeid(TypeDataHere1 ).name()<<endl;
cout<<"# TypeDataHere2 ="<<typeid(TypeDataHere2 ).name()<<endl;
cout<<"# TypeDataHere3 ="<<typeid(TypeDataHere3 ).name()<<endl;
cout<<"# TypeDataHere4 ="<<typeid(TypeDataHere4 ).name()<<endl;
cout<<"************************************"<<endl;
cout<<"# TypeChainHere0="<<typeid(TypeChainHere0).name()<<endl;
cout<<"# TypeChainHere1="<<typeid(TypeChainHere1).name()<<endl;
cout<<"# TypeChainHere2="<<typeid(TypeChainHere2).name()<<endl;
cout<<"# TypeChainHere3="<<typeid(TypeChainHere3).name()<<endl;
cout<<"# TypeChainHere4="<<typeid(TypeChainHere4).name()<<endl;
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
////////////////////////////////////////////////////////////////////////////////////////*/