]> git.lyx.org Git - lyx.git/blobdiff - src/support/lstrings.h
small changes + patch from Dekel
[lyx.git] / src / support / lstrings.h
index 020a1abf2db852e3c044168c15c790bafcb890f0..bffbc0d865ccd4514300d36ce2bd18752605bc7f 100644 (file)
 #include <cstring>
 #include <cctype>
 
-#if 0
-#ifdef HAVE_SSTREAM
-#include <sstream>
-#else
-#include <strstream>
-#endif
-#else
 #include "Lsstream.h"
-#endif
 
 #include "LString.h"
 
@@ -52,9 +44,15 @@ int compare(char const * a, char const * b, unsigned int len)
 ///
 bool isStrInt(string const & str);
 
+/// does the string represent an unsigned integer value ?
+bool isStrUnsignedInt(string const & str);
+
 ///
 int strToInt(string const & str);
 
+/// convert string to an unsigned integer
+unsigned int strToUnsignedInt(string const & str);
+
 ///
 bool isStrDbl(string const & str);
 
@@ -78,42 +76,46 @@ template<typename T>
 inline
 string const tostr(T const & t) 
 {
-//#ifdef HAVE_SSTREAM
-       std::ostringstream ostr;
+       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)
-//#else
-       // The buf is probably a bit large, but if we want to be safer
-       // we should leave it this big. As compiler/libs gets updated
-       // this part of the code will cease to be used and we loose
-       // nothing.
-//     char buf[2048]; // a bit too large perhaps?
-//     ostrstream ostr(buf, sizeof(buf));
-//     ostr << t << '\0';
-//     return buf;
-//#endif
 }
 
 
 ///
+template<>
 inline
-string const tostr(bool b)
+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);
 
@@ -139,7 +141,7 @@ bool containsOnly(char const *, char const *);
 bool containsOnly(char const *, string const &);
 
 /// Counts how many of character c there is in a
-unsigned int countChar(string const & a, char c);
+string::size_type countChar(string const & a, char c);
 
 /** Extracts a token from this string at the nth delim.
   Doesn't modify the original string. Similar to strtok.
@@ -172,6 +174,10 @@ string const subst(string const & a, char oldchar, char newchar);
 string const subst(string const & a,
             char const * oldstr, string const & newstr);
 
+/// substitutes all instances ofr oldstr with newstr
+string const subst(string const & a,
+                  string const & oldstr, string const & newstr);
+
 /** Strips characters off the end of a string.
   #"abccc".strip('c') = "ab".#
   */