]> git.lyx.org Git - features.git/blobdiff - src/support/lstrings.h
Replace LString.h with support/std_string.h,
[features.git] / src / support / lstrings.h
index 4e2627f85b4c9b2c56c12c109cf482e5bcf9d53e..0725ff3f490b21d8a17b80a82f6f14d437d02927 100644 (file)
@@ -1,29 +1,27 @@
 // -*- 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
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-//#include <cstring>
-//#include <cctype>
-//#include <cctype>
 #include <vector>
 
-#include "Lsstream.h"
+#include "support/std_string.h"
 
-#include "LString.h"
+namespace lyx {
+namespace support {
 
 ///
 int compare_no_case(string const & s, string const & s2);
@@ -89,66 +87,21 @@ string const lowercase(string const &);
 ///
 string const uppercase(string const &);
 
-/// convert \a T to string
-template<typename T>
-inline
-string const tostr(T const & t)
-{
-       ostringstream ostr;
-       ostr << t;
-       return ostr.str().c_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)
-}
-
-
-///
-template<>
-inline
-string const tostr(bool const & b)
-{
-       return (b ? "true" : "false");
-}
-
-///
-template<>
-inline
-string const tostr(string const & s)
-{
-       return s;
-}
-
-/// Does the string start with this prefix?
-bool prefixIs(string const &, char const *);
-
 /// Does the string start with this prefix?
 bool prefixIs(string const &, string const &);
 
 /// Does the string end with this char?
 bool suffixIs(string const &, char);
 
-/// Does the string end with this suffix?
-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:
@@ -162,24 +115,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);
@@ -190,8 +134,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);
@@ -205,34 +149,30 @@ bool regexMatch(string const & a, string const & pattern);
 /// Substitute all \a oldchar with \a newchar
 string const subst(string const & a, char oldchar, char newchar);
 
-/// Substitutes all instances of \a oldstr with \a newstr
-string const subst(string const & a,
-            char const * oldstr, string const & newstr);
-
 /// substitutes all instances of \a oldstr with \a newstr
 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.
@@ -262,4 +202,20 @@ std::vector<string> const getVectorFromString(string const & str,
 string const getStringFromVector(std::vector<string> const & vec,
                                 string const & delim = ",");
 
+// wrapper around boost::format using one argument %1$s
+string bformat(string const & fmt, string const & arg1);
+// arguments %1$s and %2$s
+string bformat(string const & fmt, string const & arg1, string const & arg2);
+// arguments %1$d and %2$d
+string bformat(string const & fmt, int arg1, int arg2);
+// arguments %1$s and %2$s and %3$s
+string bformat(string const & fmt, string const & arg1, string const & arg2,
+               string const & arg3);
+// arguments %1$s and %2$s and %3$s and %4$s
+string bformat(string const & fmt, string const & arg1, string const & arg2,
+               string const & arg3, string const & arg4);
+
+} // namespace support
+} // namespace lyx
+
 #endif