소스 검색

HPCC-11381 - add a sort/sortReverse methods to StringArray

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Jake Smith 11 년 전
부모
커밋
42bbc04372
2개의 변경된 파일20개의 추가작업 그리고 0개의 파일을 삭제
  1. 10 0
      system/jlib/jutil.cpp
  2. 10 0
      system/jlib/jutil.hpp

+ 10 - 0
system/jlib/jutil.cpp

@@ -1332,6 +1332,16 @@ void StringArray::appendListUniq(const char *list, const char *delim)
     DelimToStringArray(list, *this, delim, true);
 }
 
+void StringArray::sort(bool nocase)
+{
+    PARENT::sort(nocase ? CCmp::compareNC : CCmp::compare);
+}
+
+void StringArray::sortReverse(bool nocase)
+{
+    PARENT::sort(nocase ? CCmp::revCompareNC : CCmp::revCompare);
+}
+
 #ifdef _WIN32
 
 

+ 10 - 0
system/jlib/jutil.hpp

@@ -151,11 +151,21 @@ extern jlib_decl StringBuffer& decodeUrlUseridPassword(StringBuffer& out, const
 
 class jlib_decl StringArray : public ArrayOf<const char *, const char *>
 {
+    struct CCmp
+    {
+        static int compare(char const **l, char const **r) { return strcmp(*l, *r); }
+        static int compareNC(char const **l, char const **r) { return stricmp(*l, *r); }
+        static int revCompare(char const **l, char const **r) { return strcmp(*r, *l); }
+        static int revCompareNC(char const **l, char const **r) { return stricmp(*r, *l); }
+    };
+    typedef ArrayOf<const char *, const char *> PARENT;
 public:
     // Appends a list in a string delimited by 'delim'
     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);
 };
 class CIStringArray : public StringArray, public CInterface
 {