]> git.lyx.org Git - lyx.git/blobdiff - src/support/lstrings.h
Rename strip to rtrim
[lyx.git] / src / support / lstrings.h
index 94d15dae8c7462779dfd612a261a4f5a4aedbd09..8bcee0ae2389bde9df13b68d24963ce1ce06e789 100644 (file)
 #pragma interface
 #endif
 
-//#include <cstring>
-//#include <cctype>
+#include <vector>
 
 #include "Lsstream.h"
 
 #include "LString.h"
 
-
 ///
 int compare_no_case(string const & s, string const & s2);
 
@@ -41,7 +39,7 @@ int compare(char const * a, char const * b)
        return std::strcmp(a, b);
 #else
        return strcmp(a, b);
-#endif 
+#endif
 }
 
 ///
@@ -52,7 +50,7 @@ int compare(char const * a, char const * b, unsigned int len)
        return std::strncmp(a, b, len);
 #else
        return strncmp(a, b, len);
-#endif 
+#endif
 }
 
 ///
@@ -73,12 +71,15 @@ bool isStrDbl(string const & str);
 ///
 double strToDbl(string const & str);
 
-/// 
+///
 char lowercase(char c);
 
-/// 
+///
 char uppercase(char c);
 
+/// same as lowercase(), but ignores locale
+string const ascii_lowercase(string const &);
+
 ///
 string const lowercase(string const &);
 
@@ -88,7 +89,7 @@ string const uppercase(string const &);
 /// convert \a T to string
 template<typename T>
 inline
-string const tostr(T const & t) 
+string const tostr(T const & t)
 {
        ostringstream ostr;
        ostr << t;
@@ -130,42 +131,34 @@ bool suffixIs(string const &, char const *);
 /// Does the string end with this suffix?
 bool suffixIs(string const &, string const &);
 
-///
-bool contains(char const * a, string const & b);
-
-///
-bool contains(string const & a, char const * b);
-
 ///
 bool contains(string const & a, string const & b);
 
 ///
 bool contains(string const & a, char b);
 
-///
-bool contains(char const * a, char const * b);
-
-///
-bool containsOnly(string const &, char const *);
+/// This should probably we rewritten to be more general.
+class contains_functor {
+public:
+       typedef string first_argument_type;
+       typedef string second_argument_type;
+       typedef bool result_type;
 
-///
-bool containsOnly(string const &, string const &);
+       bool operator()(string const & haystack, string const & needle) const {
+               return contains(haystack, needle);
+       }
+};
 
-///
-bool containsOnly(char const *, char const *);
 
 ///
-bool containsOnly(char const *, string const &);
-
-/// Counts how many of character c there is in a
-string::size_type countChar(string const & a, char c);
+bool containsOnly(string const &, string const &);
 
 /** Extracts a token from this string at the nth delim.
     Doesn't modify the original string. Similar to strtok.
     Example:
     \code
-    "a;bc;d".token(';', 1) == "bc";
-    "a;bc;d".token(';', 2) == "d";
+    token("a;bc;d", ';', 1) == "bc";
+    token("a;bc;d", ';', 2) == "d";
     \endcode
 */
 string const token(string const & a, char delim, int n);
@@ -173,11 +166,11 @@ string const token(string const & a, char delim, int n);
 
 /** Search a token in this string using the delim.
     Doesn't modify the original string. Returns -1 in case of
-    failure. 
+    failure.
     Example:
     \code
-    "a;bc;d".tokenPos(';', "bc") == 1;
-    "a;bc;d".token(';', "d") == 2;
+    tokenPos("a;bc;d", ';', "bc") == 1;
+    tokenPos("a;bc;d", ';', "d") == 2;
     \endcode
 */
 int tokenPos(string const & a, char delim, string const & tok);
@@ -199,26 +192,26 @@ string const subst(string const & a,
 string const subst(string const & a,
                   string const & oldstr, string const & newstr);
 
-/** Strips characters off the end of a string.
+/** Trims characters off the end and beginning of a string.
     \code
-    "abccc".strip('c') = "ab".
+    trim("ccabccc", "c") == "ab".
     \endcode
 */
-string const strip(string const & a, char c = ' ');
+string const trim(string const & a, char const * p = " ");
 
-/** Strips characters of the beginning of a string.
+/** Trims characters off the end of a string.
     \code
-    "cccba".frontstrip('c') = "ba"
+    rtrim("abccc", "c") == "ab".
     \endcode
 */
-string const frontStrip(string const & a, char c = ' ');
+string const rtrim(string const & a, char const * p = " ");
 
-/** Strips characters off the beginning of a string.
+/** Trims characters off the beginning of a string.
     \code
-    "ababcdef".frontstrip("ab") = "cdef"
+   ltrim("ababcdef", "ab") = "cdef"
     \endcode
 */
-string const frontStrip(string const & a, char const * p);
+string const ltrim(string const & a, char const * p = " ");
 
 /** Splits the string by the first delim.
     Splits the string by the first appearance of delim.
@@ -240,4 +233,12 @@ string const rsplit(string const & a, string & piece, char delim);
 /// Escapes non ASCII chars
 string const escape(string const & lab);
 
+/// gives a vector of stringparts which have the delimiter delim
+std::vector<string> const getVectorFromString(string const & str,
+                                             string const & delim = ",");
+
+// the same vice versa
+string const getStringFromVector(std::vector<string> const & vec,
+                                string const & delim = ",");
+
 #endif