]> git.lyx.org Git - lyx.git/blobdiff - src/support/lstrings.h
another safety belt
[lyx.git] / src / support / lstrings.h
index 7f78c374a82834b9f6ef6f328c23540cb3d21110..1330616ab92da2770a90549fe9a29a45bb086609 100644 (file)
@@ -1,13 +1,17 @@
 // -*- C++ -*-
-
-/** String helper functions.
-    \file lstrings.h
-    This is a collection of string helper functions that works
-    together with string (and later also with STL String. Some of these
-    would certainly benefit from a rewrite/optimization.
-    \author Lars Gullik Bjønnes
-    \author Jean-Marc Lasgouttes
-*/
+/**
+ * \file lstrings.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS
+ *
+ * A collection of string helper functions that works with string.
+ * Some of these would certainly benefit from a rewrite/optimization.
+ */
 
 #ifndef LSTRINGS_H
 #define LSTRINGS_H
 #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);
 
@@ -79,6 +81,9 @@ 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 &);
 
@@ -92,7 +97,7 @@ string const tostr(T const & t)
 {
        ostringstream ostr;
        ostr << t;
-       return ostr.str().c_str();
+       return STRCONV(ostr.str());
        // We need to use the .c_str since we sometimes are using
        // our own string class and that is not compatible with
        // basic_string<char>. (of course we don't want this later)
@@ -130,21 +135,12 @@ 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);
-
 /// This should probably we rewritten to be more general.
 class contains_functor {
 public:
@@ -158,24 +154,15 @@ public:
 };
 
 
-///
-bool containsOnly(string const &, char const *);
-
 ///
 bool containsOnly(string const &, string const &);
 
-///
-bool containsOnly(char const *, char const *);
-
-///
-bool containsOnly(char 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);
@@ -186,8 +173,8 @@ string const token(string const & a, char delim, int n);
     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);
@@ -209,26 +196,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.
@@ -250,4 +237,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