From 583eda74d42edfaca3e2abf09628438b575b4ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20T=C3=BCrkoglu?= Date: Sat, 21 Feb 2015 15:07:23 +0800 Subject: [PATCH 1/2] Decouple Util and StringUtil Util included StringUtil which lead to many classes relying on it, decouple it instead and make it explicit to include StringUtils. This was achieved by moving the sortstringbyname from Util class to a better fit, StringUtil. The method was also optimized to avoid copying of the string and use the method from the StringUtil instead. --- xbmc/Util.h | 13 ------------- xbmc/addons/AddonCallbacksPVR.cpp | 1 + xbmc/dialogs/GUIDialogFileBrowser.cpp | 1 + xbmc/filesystem/AFPFile.cpp | 1 + xbmc/filesystem/HDHomeRunFile.cpp | 1 + xbmc/filesystem/IDirectory.cpp | 1 + xbmc/filesystem/PVRDirectory.cpp | 1 + xbmc/playlists/PlayListB4S.cpp | 1 + xbmc/playlists/PlayListWPL.cpp | 1 + xbmc/playlists/PlayListXML.cpp | 1 + xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp | 1 + xbmc/pvr/addons/PVRClient.cpp | 1 + xbmc/pvr/windows/GUIWindowPVRChannels.cpp | 1 + xbmc/utils/HttpRangeUtils.cpp | 1 + xbmc/utils/StringUtils.h | 8 ++++++++ 15 files changed, 21 insertions(+), 13 deletions(-) diff --git a/xbmc/Util.h b/xbmc/Util.h index 4144f47bf7846..cd6edf49c2dab 100644 --- a/xbmc/Util.h +++ b/xbmc/Util.h @@ -24,7 +24,6 @@ #include #include #include -#include "utils/StringUtils.h" #include "MediaSource.h" #define ARRAY_SIZE(X) (sizeof(X)/sizeof((X)[0])) @@ -37,18 +36,6 @@ class CFileItemList; class CURL; -struct sortstringbyname -{ - bool operator()(const std::string& strItem1, const std::string& strItem2) - { - std::string strLine1 = strItem1; - std::string strLine2 = strItem2; - StringUtils::ToLower(strLine1); - StringUtils::ToLower(strLine2); - return strcmp(strLine1.c_str(), strLine2.c_str()) < 0; - } -}; - struct ExternalStreamInfo { std::string name; diff --git a/xbmc/addons/AddonCallbacksPVR.cpp b/xbmc/addons/AddonCallbacksPVR.cpp index 108d3ca2743de..7ed72f78b1a0b 100644 --- a/xbmc/addons/AddonCallbacksPVR.cpp +++ b/xbmc/addons/AddonCallbacksPVR.cpp @@ -22,6 +22,7 @@ #include "AddonCallbacksPVR.h" #include "settings/AdvancedSettings.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "dialogs/GUIDialogKaiToast.h" #include "epg/EpgContainer.h" diff --git a/xbmc/dialogs/GUIDialogFileBrowser.cpp b/xbmc/dialogs/GUIDialogFileBrowser.cpp index e1574271509a9..a1d2f905e6030 100644 --- a/xbmc/dialogs/GUIDialogFileBrowser.cpp +++ b/xbmc/dialogs/GUIDialogFileBrowser.cpp @@ -21,6 +21,7 @@ #include "GUIDialogFileBrowser.h" #include "Util.h" #include "utils/URIUtils.h" +#include "utils/StringUtils.h" #include "network/GUIDialogNetworkSetup.h" #include "GUIDialogMediaSource.h" #include "GUIDialogContextMenu.h" diff --git a/xbmc/filesystem/AFPFile.cpp b/xbmc/filesystem/AFPFile.cpp index b3047bb138fe1..a4de580f90208 100644 --- a/xbmc/filesystem/AFPFile.cpp +++ b/xbmc/filesystem/AFPFile.cpp @@ -32,6 +32,7 @@ #include "settings/AdvancedSettings.h" #include "threads/SingleLock.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/TimeUtils.h" using namespace XFILE; diff --git a/xbmc/filesystem/HDHomeRunFile.cpp b/xbmc/filesystem/HDHomeRunFile.cpp index e35ebb4d355ca..2fcfdd5be1fda 100644 --- a/xbmc/filesystem/HDHomeRunFile.cpp +++ b/xbmc/filesystem/HDHomeRunFile.cpp @@ -25,6 +25,7 @@ #include "HDHomeRunFile.h" #include "utils/TimeUtils.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #include "Util.h" #include "DllHDHomeRun.h" diff --git a/xbmc/filesystem/IDirectory.cpp b/xbmc/filesystem/IDirectory.cpp index c013778dbf097..6bd2a3b950513 100644 --- a/xbmc/filesystem/IDirectory.cpp +++ b/xbmc/filesystem/IDirectory.cpp @@ -25,6 +25,7 @@ #include "URL.h" #include "PasswordManager.h" #include "utils/URIUtils.h" +#include "utils/StringUtils.h" using namespace XFILE; diff --git a/xbmc/filesystem/PVRDirectory.cpp b/xbmc/filesystem/PVRDirectory.cpp index e03a9a04c6a19..7248020ccff33 100644 --- a/xbmc/filesystem/PVRDirectory.cpp +++ b/xbmc/filesystem/PVRDirectory.cpp @@ -23,6 +23,7 @@ #include "Util.h" #include "URL.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #include "guilib/LocalizeStrings.h" diff --git a/xbmc/playlists/PlayListB4S.cpp b/xbmc/playlists/PlayListB4S.cpp index d09af8c04774a..f1ca2a793e270 100644 --- a/xbmc/playlists/PlayListB4S.cpp +++ b/xbmc/playlists/PlayListB4S.cpp @@ -25,6 +25,7 @@ #include "music/tags/MusicInfoTag.h" #include "filesystem/File.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #include "utils/XMLUtils.h" diff --git a/xbmc/playlists/PlayListWPL.cpp b/xbmc/playlists/PlayListWPL.cpp index 159081498680d..bbbb426f5653c 100644 --- a/xbmc/playlists/PlayListWPL.cpp +++ b/xbmc/playlists/PlayListWPL.cpp @@ -24,6 +24,7 @@ #include "settings/AdvancedSettings.h" #include "filesystem/File.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #include "utils/XMLUtils.h" diff --git a/xbmc/playlists/PlayListXML.cpp b/xbmc/playlists/PlayListXML.cpp index 66bea084b31b7..57786e50c3064 100644 --- a/xbmc/playlists/PlayListXML.cpp +++ b/xbmc/playlists/PlayListXML.cpp @@ -23,6 +23,7 @@ #include "Util.h" #include "utils/RegExp.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #include "utils/XMLUtils.h" #include "utils/Variant.h" diff --git a/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp b/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp index a65c1b6d9f71a..1d5511a695e78 100644 --- a/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp +++ b/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp @@ -34,6 +34,7 @@ #include "settings/lib/Setting.h" #include "storage/MediaManager.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "utils/URIUtils.h" #define CONTROL_PROFILE_IMAGE CONTROL_SETTINGS_CUSTOM + 1 diff --git a/xbmc/pvr/addons/PVRClient.cpp b/xbmc/pvr/addons/PVRClient.cpp index 1049e8c05284b..ade85b8e3f64e 100644 --- a/xbmc/pvr/addons/PVRClient.cpp +++ b/xbmc/pvr/addons/PVRClient.cpp @@ -30,6 +30,7 @@ #include "settings/AdvancedSettings.h" #include "settings/Settings.h" #include "utils/log.h" +#include "utils/StringUtils.h" using namespace ADDON; using namespace PVR; diff --git a/xbmc/pvr/windows/GUIWindowPVRChannels.cpp b/xbmc/pvr/windows/GUIWindowPVRChannels.cpp index c1475e7b758fa..a476009cc0b5d 100644 --- a/xbmc/pvr/windows/GUIWindowPVRChannels.cpp +++ b/xbmc/pvr/windows/GUIWindowPVRChannels.cpp @@ -39,6 +39,7 @@ #include "epg/EpgContainer.h" #include "settings/Settings.h" #include "utils/log.h" +#include "utils/StringUtils.h" #include "threads/SingleLock.h" using namespace PVR; diff --git a/xbmc/utils/HttpRangeUtils.cpp b/xbmc/utils/HttpRangeUtils.cpp index e09111e860ed4..1660198d7fd9b 100644 --- a/xbmc/utils/HttpRangeUtils.cpp +++ b/xbmc/utils/HttpRangeUtils.cpp @@ -21,6 +21,7 @@ #include "HttpRangeUtils.h" #include "Util.h" #include "network/httprequesthandler/IHTTPRequestHandler.h" +#include "utils/StringUtils.h" #include "utils/Variant.h" #include diff --git a/xbmc/utils/StringUtils.h b/xbmc/utils/StringUtils.h index 5ed81a56461a0..00a07cb1e4a7f 100644 --- a/xbmc/utils/StringUtils.h +++ b/xbmc/utils/StringUtils.h @@ -194,3 +194,11 @@ class StringUtils private: static std::string m_lastUUID; }; + +struct sortstringbyname +{ + bool operator()(const std::string& strItem1, const std::string& strItem2) + { + return StringUtils::CompareNoCase(strItem1, strItem2) < 0; + } +}; From a505e205a3c4de4d39898efb4be6b35391bb72fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20T=C3=BCrkoglu?= Date: Mon, 23 Feb 2015 15:14:30 +0800 Subject: [PATCH 2/2] stringutils: add test for sortstringbyname --- xbmc/utils/test/TestStringUtils.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/xbmc/utils/test/TestStringUtils.cpp b/xbmc/utils/test/TestStringUtils.cpp index f0adec0b1592b..1aaf8b850e16d 100644 --- a/xbmc/utils/test/TestStringUtils.cpp +++ b/xbmc/utils/test/TestStringUtils.cpp @@ -19,6 +19,7 @@ */ #include "utils/StringUtils.h" +#include #include "gtest/gtest.h" @@ -478,3 +479,16 @@ TEST(TestStringUtils, Paramify) std::string result = StringUtils::Paramify(input); EXPECT_STREQ(ref, result.c_str()); } + +TEST(TestStringUtils, sortstringbyname) +{ + std::vector strarray; + strarray.push_back("B"); + strarray.push_back("c"); + strarray.push_back("a"); + std::sort(strarray.begin(), strarray.end(), sortstringbyname()); + + EXPECT_STREQ("a", strarray[0].c_str()); + EXPECT_STREQ("B", strarray[1].c_str()); + EXPECT_STREQ("c", strarray[2].c_str()); +}