mirror of https://github.com/AxioDL/metaforce.git
Relocate CaseInsensitiveCompare
This commit is contained in:
parent
536a19725d
commit
028be337c6
|
@ -16,7 +16,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||||
include_directories(/usr/local/include)
|
include_directories(/usr/local/include)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${CMAKE_BUILD_TYPE} AND ${CMAKE_BUILD_TYPE} STREQUAL "Release" AND ${CMAKE_SYSTEM_NAME} STREQUAL Linux)
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||||
option(USE_LD_GOLD "Link with GNU Gold and enable LTO" ON)
|
option(USE_LD_GOLD "Link with GNU Gold and enable LTO" ON)
|
||||||
else()
|
else()
|
||||||
option(USE_LD_GOLD "Link with GNU Gold and enable LTO" OFF)
|
option(USE_LD_GOLD "Link with GNU Gold and enable LTO" OFF)
|
||||||
|
|
|
@ -234,30 +234,6 @@ public:
|
||||||
static constexpr size_t BinarySize() {return 16;}
|
static constexpr size_t BinarySize() {return 16;}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Case-insensitive comparator for std::map sorting */
|
|
||||||
struct CaseInsensitiveCompare
|
|
||||||
{
|
|
||||||
bool operator()(const std::string& lhs, const std::string& rhs) const
|
|
||||||
{
|
|
||||||
#if _WIN32
|
|
||||||
if (_stricmp(lhs.c_str(), rhs.c_str()) < 0)
|
|
||||||
#else
|
|
||||||
if (strcasecmp(lhs.c_str(), rhs.c_str()) < 0)
|
|
||||||
#endif
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if _WIN32
|
|
||||||
bool operator()(const std::wstring& lhs, const std::wstring& rhs) const
|
|
||||||
{
|
|
||||||
if (_wcsicmp(lhs.c_str(), rhs.c_str()) < 0)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Class that automatically converts between hash and path for DNA usage */
|
/** Class that automatically converts between hash and path for DNA usage */
|
||||||
template <class IDTYPE>
|
template <class IDTYPE>
|
||||||
class PAKPath : public BigYAML
|
class PAKPath : public BigYAML
|
||||||
|
|
|
@ -34,7 +34,7 @@ PAKBridge::PAKBridge(HECL::Database::Project& project,
|
||||||
m_pak.read(rs);
|
m_pak.read(rs);
|
||||||
|
|
||||||
/* Append Level String */
|
/* Append Level String */
|
||||||
std::set<HECL::SystemString, CaseInsensitiveCompare> uniq;
|
std::set<HECL::SystemString, HECL::CaseInsensitiveCompare> uniq;
|
||||||
for (PAK::Entry& entry : m_pak.m_entries)
|
for (PAK::Entry& entry : m_pak.m_entries)
|
||||||
{
|
{
|
||||||
if (entry.type == FOURCC('MLVL'))
|
if (entry.type == FOURCC('MLVL'))
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct SpecMP1 : SpecBase
|
||||||
|
|
||||||
std::vector<const NOD::Node*> m_nonPaks;
|
std::vector<const NOD::Node*> m_nonPaks;
|
||||||
std::vector<DNAMP1::PAKBridge> m_paks;
|
std::vector<DNAMP1::PAKBridge> m_paks;
|
||||||
std::map<std::string, DNAMP1::PAKBridge*, CaseInsensitiveCompare> m_orderedPaks;
|
std::map<std::string, DNAMP1::PAKBridge*, HECL::CaseInsensitiveCompare> m_orderedPaks;
|
||||||
|
|
||||||
HECL::ProjectPath m_workPath;
|
HECL::ProjectPath m_workPath;
|
||||||
HECL::ProjectPath m_cookPath;
|
HECL::ProjectPath m_cookPath;
|
||||||
|
|
|
@ -23,7 +23,7 @@ struct SpecMP2 : SpecBase
|
||||||
|
|
||||||
std::vector<const NOD::Node*> m_nonPaks;
|
std::vector<const NOD::Node*> m_nonPaks;
|
||||||
std::vector<DNAMP2::PAKBridge> m_paks;
|
std::vector<DNAMP2::PAKBridge> m_paks;
|
||||||
std::map<std::string, DNAMP2::PAKBridge*, CaseInsensitiveCompare> m_orderedPaks;
|
std::map<std::string, DNAMP2::PAKBridge*, HECL::CaseInsensitiveCompare> m_orderedPaks;
|
||||||
|
|
||||||
HECL::ProjectPath m_workPath;
|
HECL::ProjectPath m_workPath;
|
||||||
HECL::ProjectPath m_cookPath;
|
HECL::ProjectPath m_cookPath;
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct SpecMP3 : SpecBase
|
||||||
bool doMP3 = false;
|
bool doMP3 = false;
|
||||||
std::vector<const NOD::Node*> m_nonPaks;
|
std::vector<const NOD::Node*> m_nonPaks;
|
||||||
std::vector<DNAMP3::PAKBridge> m_paks;
|
std::vector<DNAMP3::PAKBridge> m_paks;
|
||||||
std::map<std::string, DNAMP3::PAKBridge*, CaseInsensitiveCompare> m_orderedPaks;
|
std::map<std::string, DNAMP3::PAKBridge*, HECL::CaseInsensitiveCompare> m_orderedPaks;
|
||||||
|
|
||||||
HECL::ProjectPath m_workPath;
|
HECL::ProjectPath m_workPath;
|
||||||
HECL::ProjectPath m_cookPath;
|
HECL::ProjectPath m_cookPath;
|
||||||
|
@ -36,7 +36,7 @@ struct SpecMP3 : SpecBase
|
||||||
bool doMPTFE = false;
|
bool doMPTFE = false;
|
||||||
std::vector<const NOD::Node*> m_feNonPaks;
|
std::vector<const NOD::Node*> m_feNonPaks;
|
||||||
std::vector<DNAMP3::PAKBridge> m_fePaks;
|
std::vector<DNAMP3::PAKBridge> m_fePaks;
|
||||||
std::map<std::string, DNAMP3::PAKBridge*, CaseInsensitiveCompare> m_feOrderedPaks;
|
std::map<std::string, DNAMP3::PAKBridge*, HECL::CaseInsensitiveCompare> m_feOrderedPaks;
|
||||||
|
|
||||||
HECL::ProjectPath m_feWorkPath;
|
HECL::ProjectPath m_feWorkPath;
|
||||||
HECL::ProjectPath m_feCookPath;
|
HECL::ProjectPath m_feCookPath;
|
||||||
|
|
|
@ -33,7 +33,10 @@ class SplashScreen : public Specter::ModalWindow
|
||||||
const char* help() const {return "Creates an empty project at selected path";}
|
const char* help() const {return "Creates an empty project at selected path";}
|
||||||
void activated(const boo::SWindowCoord& coord)
|
void activated(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
m_splash.m_fileBrowser.m_view.reset(new Specter::FileBrowser(m_splash.rootView().viewRes(), m_splash, "New Project"));
|
m_splash.m_fileBrowser.m_view.reset(
|
||||||
|
new Specter::FileBrowser(m_splash.rootView().viewRes(),
|
||||||
|
m_splash, "New Project",
|
||||||
|
Specter::FileBrowser::Type::SaveFile));
|
||||||
m_splash.updateSize();
|
m_splash.updateSize();
|
||||||
m_splash.m_newButt.mouseLeave(coord);
|
m_splash.m_newButt.mouseLeave(coord);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +50,10 @@ class SplashScreen : public Specter::ModalWindow
|
||||||
const char* help() const {return "Opens an existing project at selected path";}
|
const char* help() const {return "Opens an existing project at selected path";}
|
||||||
void activated(const boo::SWindowCoord& coord)
|
void activated(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
m_splash.m_fileBrowser.m_view.reset(new Specter::FileBrowser(m_splash.rootView().viewRes(), m_splash, "Open Project"));
|
m_splash.m_fileBrowser.m_view.reset(
|
||||||
|
new Specter::FileBrowser(m_splash.rootView().viewRes(),
|
||||||
|
m_splash, "Open Project",
|
||||||
|
Specter::FileBrowser::Type::OpenHECLProject));
|
||||||
m_splash.updateSize();
|
m_splash.updateSize();
|
||||||
m_splash.m_openButt.mouseLeave(coord);
|
m_splash.m_openButt.mouseLeave(coord);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +67,10 @@ class SplashScreen : public Specter::ModalWindow
|
||||||
const char* help() const {return "Extracts game image as project at selected path";}
|
const char* help() const {return "Extracts game image as project at selected path";}
|
||||||
void activated(const boo::SWindowCoord& coord)
|
void activated(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
m_splash.m_fileBrowser.m_view.reset(new Specter::FileBrowser(m_splash.rootView().viewRes(), m_splash, "Extract Game"));
|
m_splash.m_fileBrowser.m_view.reset(
|
||||||
|
new Specter::FileBrowser(m_splash.rootView().viewRes(),
|
||||||
|
m_splash, "Extract Game",
|
||||||
|
Specter::FileBrowser::Type::OpenFile));
|
||||||
m_splash.updateSize();
|
m_splash.updateSize();
|
||||||
m_splash.m_extractButt.mouseLeave(coord);
|
m_splash.m_extractButt.mouseLeave(coord);
|
||||||
}
|
}
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit 28b9eadc5c525b3bb0884f71c142fd9825d50e48
|
Subproject commit c6c4718dc58e601ed5782d5d139362f20a42206e
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0e357b8fa9055cf2238d498b99b663f5fced3ee0
|
Subproject commit 68e32072c07007f4cb2cc48384719ed802b8d4e8
|
Loading…
Reference in New Issue