Przeglądaj źródła

Merge pull request #6196 from ghalliday/issue11867

HPCC-11867 Clean up calls to CStringArray::sort

Reviewed-By: Kevin Wang <kevin.wang@lexisnexis.com>
Reviewed-By: Jake Smith <jake.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 lat temu
rodzic
commit
93a9668189

+ 1 - 3
dali/dfuXRefLib/XRefNodeManager.cpp

@@ -316,8 +316,6 @@ void CXRefNode::deserializeDirectories(IPropertyTree& inTree)
 
 }
 
-static int strptrcmprev(char const ** l, char const ** r) { return -strcmp(*l, *r); }
-
 static bool deleteEmptyDir(IFile *dir)
 {
     // this is a bit odd - basically we already know no files but there may be empty sub-dirs
@@ -427,7 +425,7 @@ bool CXRefNode::removeEmptyDirectories(StringBuffer &errstr)
             }
         }
     }
-    dellist.sort(strptrcmprev);
+    dellist.sortAsciiReverse(false);
     ForEachItemIn(di,dellist) {
         const char *dirname = dellist.item(di);
         class casyncfor: public CAsyncFor

+ 1 - 3
ecl/eclagent/eclagent.cpp

@@ -2091,8 +2091,6 @@ void EclAgentWorkflowMachine::begin()
         prelockPersists();
 }
 
-int strptrcmp(char const ** l, char const ** r) { return strcmp(*l, *r); }
-
 void EclAgentWorkflowMachine::prelockPersists()
 {
     unsigned count = workflow->count();
@@ -2107,7 +2105,7 @@ void EclAgentWorkflowMachine::prelockPersists()
             names.append(name.str());
         }
     }
-    names.sort(strptrcmp);
+    names.sortAscii(true); // case insensitive for backward compatibility
     ForEachItemIn(idx, names)
     {
         char const * name = names.item(idx);

+ 1 - 3
esp/services/ws_ecl/ws_ecl_service.cpp

@@ -69,8 +69,6 @@ const char *wsEclXsdTypes[] = {
 
 typedef MapStringTo<wsEclType> MapStringToWsEclType;
 
-int strptrcmp(char const ** l, char const ** r) { return strcmp(*l, *r); }
-
 class wsEclTypeTranslator
 {
 private:
@@ -489,7 +487,7 @@ void CWsEclBinding::getDynNavData(IEspContext &context, IProperties *params, IPr
             }
             if (qnames.ordinality())
             {
-                qnames.sort(strptrcmp);
+                qnames.sortAscii();
                 ForEachItemIn(i,qnames)
                 {
                     StringBuffer navPath;

+ 1 - 6
esp/services/ws_machine/ws_machineBinding.cpp

@@ -25,11 +25,6 @@
 #include "ws_machineBinding.hpp"
 
 
-int SortFunction(const char** s1, const char** s2)
-{
-   return strcmp(*s1, *s2);
-}
-
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
@@ -56,7 +51,7 @@ CWsMachineSoapBindingEx::CWsMachineSoapBindingEx(IPropertyTree* cfg,
          {
             m_processTypes.append(it->query().queryName());
          }
-         m_processTypes.sort(SortFunction);
+         m_processTypes.sortAscii();
       }
    }
 }

+ 2 - 9
esp/services/ws_workunits/ws_workunitsQuerySets.cpp

@@ -1574,13 +1574,6 @@ bool CWsWorkunitsEx::onWUQueryDetails(IEspContext &context, IEspWUQueryDetailsRe
     return true;
 }
 
-int StringArrayCompareFunc(const char **s1, const char **s2)
-{
-    if (!s1 || !*s1 || !s2 || !*s2)
-        return 0;
-    return strcmp(*s1, *s2);
-}
-
 int EspQuerySuperFileCompareFunc(IInterface **i1, IInterface **i2)
 {
     if (!i1 || !*i1 || !i2 || !*i2)
@@ -1627,7 +1620,7 @@ bool CWsWorkunitsEx::getQueryFiles(const char* query, const char* target, String
             if (fileName && *fileName)
                 logicalFiles.append(fileName);
         }
-        logicalFiles.sort(StringArrayCompareFunc);
+        logicalFiles.sortAscii();
 
         if (respSuperFiles)
         {
@@ -1646,7 +1639,7 @@ bool CWsWorkunitsEx::getQueryFiles(const char* query, const char* target, String
                     if (fileName && *fileName)
                         respSubFiles.append(fileName);
                 }
-                respSubFiles.sort(StringArrayCompareFunc);
+                respSubFiles.sortAscii();
 
                 respSuperFile->setSubFiles(respSubFiles);
                 respSuperFiles->append(*respSuperFile.getClear());

+ 8 - 2
system/jlib/jutil.cpp

@@ -1371,16 +1371,22 @@ void StringArray::appendListUniq(const char *list, const char *delim)
     DelimToStringArray(list, *this, delim, true);
 }
 
-void StringArray::sort(bool nocase)
+void StringArray::sortAscii(bool nocase)
 {
     PARENT::sort(nocase ? CCmp::compareNC : CCmp::compare);
 }
 
-void StringArray::sortReverse(bool nocase)
+void StringArray::sortAsciiReverse(bool nocase)
 {
     PARENT::sort(nocase ? CCmp::revCompareNC : CCmp::revCompare);
 }
 
+void StringArray::sortCompare(int (*compare)(const char * * l, const char * * r))
+{
+    PARENT::sort(compare);
+}
+
+
 #ifdef _WIN32
 
 

+ 5 - 2
system/jlib/jutil.hpp

@@ -164,8 +164,11 @@ public:
     void appendList(const char *list, const char *delim);
     // Appends a list in a string delimited by 'delim' without duplicates
     void appendListUniq(const char *list, const char *delim);
-    void sort(bool nocase=false);
-    void sortReverse(bool nocase=false);
+    void sortAscii(bool nocase=false);
+    void sortAsciiReverse(bool nocase=false);
+    void sortCompare(int (*compare)(const char * * l, const char * * r));
+private:
+    using PARENT::sort; // prevent access to this function - to avoid ambiguity
 };
 class CIStringArray : public StringArray, public CInterface
 {

+ 1 - 1
testing/unittests/dalitests.cpp

@@ -1152,7 +1152,7 @@ public:
         }
         unsigned getCRC()
         {
-            results.sort();
+            results.sortAscii();
             ForEachItemIn(r, results)
             {
                 const char *result = results.item(r);