From 2b9c0296d1b1c68e8a9f56fcaf40d242a951eed6 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Fri, 30 Jan 2026 14:38:03 +0800 Subject: [PATCH] refactor: fix BMap build issue. - fix BMap build issue with new YYCC. - rename most "General" into "Generic". - remove useless code. --- BMap/BMap/BMExports.cpp | 27 ++++++++++++++------------- BMap/BMap/BMap.hpp | 6 ++++-- LibCmo/LibCmo/CK2/CKContext.cpp | 10 +++++----- LibCmo/LibCmo/CK2/CKContext.hpp | 2 +- LibCmo/LibCmo/CK2/CKStateChunk.hpp | 9 ++++++--- LibCmo/LibCmo/XContainer/XTypes.cpp | 24 ++++++++++++------------ Unvirt/StructFmt.cpp | 27 --------------------------- 7 files changed, 42 insertions(+), 63 deletions(-) diff --git a/BMap/BMap/BMExports.cpp b/BMap/BMap/BMExports.cpp index 4230f8c..a0de59d 100644 --- a/BMap/BMap/BMExports.cpp +++ b/BMap/BMap/BMExports.cpp @@ -1,5 +1,5 @@ #include "BMExports.hpp" -#include +#include #include #include #include @@ -28,8 +28,9 @@ bool CheckBMMeshTrans(BMap::BMMeshTransition* possible_trans) { return (g_IsInited && possible_trans != nullptr && g_AllBMMeshTrans.contains(possible_trans)); } -template, int> = 0> -_Ty CheckGeneralObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possible_id, LibCmo::CK2::CK_CLASSID expected_cid) { +template + requires std::is_pointer_v +T CheckGenericObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possible_id, LibCmo::CK2::CK_CLASSID expected_cid) { // check bm file self. if (!CheckBMFile(possible_bmfile)) return nullptr; // check id @@ -37,18 +38,18 @@ _Ty CheckGeneralObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possibl // check id validation and class id if (obj == nullptr || !LibCmo::CK2::CKIsChildClassOf(obj->GetClassID(), expected_cid)) return nullptr; - return static_cast<_Ty>(obj); + return static_cast(obj); } -#define CheckCKObject(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT) -#define CheckCKGroup(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP) -#define CheckCK3dEntity(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DENTITY) -#define CheckCK3dObject(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT) -#define CheckCKMesh(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MESH) -#define CheckCKMaterial(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL) -#define CheckCKTexture(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE) -#define CheckCKLight(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_LIGHT) -#define CheckCKTargetLight(bmfile, objid) CheckGeneralObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT) +#define CheckCKObject(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT) +#define CheckCKGroup(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP) +#define CheckCK3dEntity(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DENTITY) +#define CheckCK3dObject(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT) +#define CheckCKMesh(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MESH) +#define CheckCKMaterial(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL) +#define CheckCKTexture(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE) +#define CheckCKLight(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_LIGHT) +#define CheckCKTargetLight(bmfile, objid) CheckGenericObject(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT) #pragma endregion diff --git a/BMap/BMap/BMap.hpp b/BMap/BMap/BMap.hpp index deba81b..2c5aa68 100644 --- a/BMap/BMap/BMap.hpp +++ b/BMap/BMap/BMap.hpp @@ -1,6 +1,8 @@ #pragma once #include +#include +#include #include #include #include @@ -14,7 +16,7 @@ namespace BMap { public: BMFile(LibCmo::CKSTRING temp_folder, LibCmo::CKSTRING texture_folder, NakedOutputCallback raw_callback, LibCmo::CKDWORD encoding_count, LibCmo::CKSTRING* encodings, bool is_reader); ~BMFile(); - YYCC_DEL_CLS_COPY_MOVE(BMFile); + YYCC_DELETE_COPY_MOVE(BMFile) // ===== Safe Check Function ===== @@ -160,7 +162,7 @@ namespace BMap { public: BMMeshTransition(); ~BMMeshTransition(); - YYCC_DEL_CLS_COPY_MOVE(BMMeshTransition); + YYCC_DELETE_COPY_MOVE(BMMeshTransition) bool PrepareVertexCount(LibCmo::CKDWORD count); LibCmo::VxMath::VxVector3* PrepareVertex(); diff --git a/LibCmo/LibCmo/CK2/CKContext.cpp b/LibCmo/LibCmo/CK2/CKContext.cpp index 3ba433f..8e1fa60 100644 --- a/LibCmo/LibCmo/CK2/CKContext.cpp +++ b/LibCmo/LibCmo/CK2/CKContext.cpp @@ -169,30 +169,30 @@ namespace LibCmo::CK2 { } void CKContext::ExecuteManagersOnPreClearAll() { - ExecuteManagersGeneral([](MgrImpls::CKBaseManager* mgr) -> void { + ExecuteGenericManagers([](MgrImpls::CKBaseManager* mgr) -> void { mgr->PreClearAll(); }); } void CKContext::ExecuteManagersOnPostClearAll() { - ExecuteManagersGeneral([](MgrImpls::CKBaseManager* mgr) -> void { + ExecuteGenericManagers([](MgrImpls::CKBaseManager* mgr) -> void { mgr->PostClearAll(); }); } void CKContext::ExecuteManagersOnSequenceToBeDeleted(const CK_ID* objids, CKDWORD count) { - ExecuteManagersGeneral([objids, count](MgrImpls::CKBaseManager* mgr) -> void { + ExecuteGenericManagers([objids, count](MgrImpls::CKBaseManager* mgr) -> void { mgr->SequenceToBeDeleted(objids, count); }); } void CKContext::ExecuteManagersOnSequenceDeleted(const CK_ID* objids, CKDWORD count) { - ExecuteManagersGeneral([objids, count](MgrImpls::CKBaseManager* mgr) -> void { + ExecuteGenericManagers([objids, count](MgrImpls::CKBaseManager* mgr) -> void { mgr->SequenceDeleted(objids, count); }); } - void CKContext::ExecuteManagersGeneral(std::function fct) { + void CKContext::ExecuteGenericManagers(std::function fct) { for (auto& mgrptr : m_ManagerList) { fct(mgrptr); } diff --git a/LibCmo/LibCmo/CK2/CKContext.hpp b/LibCmo/LibCmo/CK2/CKContext.hpp index 4ab5c46..e94bc52 100644 --- a/LibCmo/LibCmo/CK2/CKContext.hpp +++ b/LibCmo/LibCmo/CK2/CKContext.hpp @@ -69,7 +69,7 @@ namespace LibCmo::CK2 { void ExecuteManagersOnSequenceDeleted(const CK_ID* objids, CKDWORD count); protected: - void ExecuteManagersGeneral(std::function fct); + void ExecuteGenericManagers(std::function fct); XContainer::XArray m_ManagerList; MgrImpls::CKObjectManager* m_ObjectManager; diff --git a/LibCmo/LibCmo/CK2/CKStateChunk.hpp b/LibCmo/LibCmo/CK2/CKStateChunk.hpp index 93492cb..d952050 100644 --- a/LibCmo/LibCmo/CK2/CKStateChunk.hpp +++ b/LibCmo/LibCmo/CK2/CKStateChunk.hpp @@ -274,11 +274,13 @@ namespace LibCmo::CK2 { public: bool SeekIdentifierDword(CKDWORD identifier); bool SeekIdentifierDwordAndReturnSize(CKDWORD identifier, CKDWORD* out_size); - template, int> = 0> + template + requires std::is_enum_v inline bool SeekIdentifier(TEnum enum_v) { return SeekIdentifierDword(static_cast(enum_v)); } - template, int> = 0> + template + requires std::is_enum_v inline bool SeekIdentifierAndReturnSize(TEnum enum_v, CKDWORD* out_size) { return SeekIdentifierDwordAndReturnSize(static_cast(enum_v), out_size); } @@ -564,7 +566,8 @@ namespace LibCmo::CK2 { public: bool WriteIdentifierDword(CKDWORD identifier); - template, int> = 0> + template + requires std::is_enum_v inline bool WriteIdentifier(TEnum enum_v) { return WriteIdentifierDword(static_cast(enum_v)); } diff --git a/LibCmo/LibCmo/XContainer/XTypes.cpp b/LibCmo/LibCmo/XContainer/XTypes.cpp index 5986fab..934f847 100644 --- a/LibCmo/LibCmo/XContainer/XTypes.cpp +++ b/LibCmo/LibCmo/XContainer/XTypes.cpp @@ -41,7 +41,7 @@ namespace LibCmo::XContainer { } template - static bool GeneralGetBitPosition(const XBitArray& ba, CKDWORD n, CKDWORD& got) { + static bool GenericGetBitPosition(const XBitArray& ba, CKDWORD n, CKDWORD& got) { CKDWORD counter = 0; for (size_t i = 0; i < ba.size(); ++i) { if (ba[i] == BCondition) { @@ -58,11 +58,11 @@ namespace LibCmo::XContainer { } bool GetSetBitPosition(const XBitArray& ba, CKDWORD n, CKDWORD& got) { - return GeneralGetBitPosition(ba, n, got); + return GenericGetBitPosition(ba, n, got); } bool GetUnsetBitPosition(const XBitArray& ba, CKDWORD n, CKDWORD& got) { - return GeneralGetBitPosition(ba, n, got); + return GenericGetBitPosition(ba, n, got); } } @@ -83,7 +83,7 @@ namespace LibCmo::XContainer { template requires (std::is_same_v || std::is_same_v) - static bool GeneralXArrayCheck_ItemCheck(const T& item, CK2::CKContext* ctx) { + static bool GenericXArrayCheck_ItemCheck(const T& item, CK2::CKContext* ctx) { if (ctx == nullptr) return false; if constexpr (BIsPre) { @@ -111,14 +111,14 @@ namespace LibCmo::XContainer { void PreDeletedCheck(XObjectArray& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](const CK2::CK_ID& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } void PostDeletedCheck(XObjectArray& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](const CK2::CK_ID& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } @@ -126,14 +126,14 @@ namespace LibCmo::XContainer { void PreDeletedCheck(XList& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](const CK2::CK_ID& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } void PostDeletedCheck(XList& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](const CK2::CK_ID& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } @@ -153,14 +153,14 @@ namespace LibCmo::XContainer { void PreDeletedCheck(XObjectPointerArray& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](CK2::ObjImpls::CKObject* const& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } void PostDeletedCheck(XObjectPointerArray& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](CK2::ObjImpls::CKObject* const& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } @@ -168,14 +168,14 @@ namespace LibCmo::XContainer { void PreDeletedCheck(XList& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](CK2::ObjImpls::CKObject* const& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } void PostDeletedCheck(XList& objarray, CK2::CKContext* ctx) { if (ctx == nullptr) return; std::erase_if(objarray, [ctx](CK2::ObjImpls::CKObject* const& item) -> bool { - return GeneralXArrayCheck_ItemCheck(item, ctx); + return GenericXArrayCheck_ItemCheck(item, ctx); }); } diff --git a/Unvirt/StructFmt.cpp b/Unvirt/StructFmt.cpp index 9b8f157..86114c0 100644 --- a/Unvirt/StructFmt.cpp +++ b/Unvirt/StructFmt.cpp @@ -114,33 +114,6 @@ namespace Unvirt::StructFmt { std::cout << strop::printf(u8"Page %" PRIuSIZET " of %" PRIuSIZET, page + 1, pager.GetMaxPage() + 1) << std::endl; } - //template - //static void GeneralPrintList( - // const std::vector& data, size_t page, size_t pageitems, - // std::function printHdrFct, std::function printEntryFct) { - - // // check page overflow - // if (page * pageitems >= data.size()) { - // console::write_line(YYCC_COLOR_LIGHT_RED(u8"Page out of range.")); - // return; - // } - - // // calc page data - // size_t fulllen = data.size(), - // startpos = page * pageitems, - // fullpage = (fulllen + (pageitems - 1)) / pageitems; // to solve `fulllen / pageitems` empty page issue. like CKStateChunk::GetCeilDwordSize function (+3 /4 to get DWORD size). - - // // print header - // printHdrFct(); - - // // print body - // for (size_t counter = startpos; counter < fulllen && (counter - startpos) < pageitems; ++counter) { - // printEntryFct(counter, data[counter]); - // } - - // console::format_line(u8"Page %" PRIuSIZET " of %" PRIuSIZET, page + 1, fullpage); - //} - #pragma endregion #pragma region Object Printer