#include "support/lstrings.h"
-#include "support/lyxlib.h"
#include "support/convert.h"
#include "support/qstring_helpers.h"
#include "support/textutils.h"
-#include "debug.h"
-
#include <boost/tokenizer.hpp>
#include <boost/assert.hpp>
-#include <cctype>
-#include <cstdlib>
-
#include <algorithm>
-#include <sstream>
-
-using std::transform;
-using std::string;
-using std::vector;
+using namespace std;
-#ifndef CXX_GLOBAL_CSTD
-using std::isdigit;
-using std::tolower;
-using std::toupper;
-#endif
+namespace lyx {
+// Using this allows us to have docstring default arguments in headers
+// without #include "support/docstring" there.
+docstring const & empty_docstring()
+{
+ static docstring s;
+ return s;
+}
-namespace lyx {
+// Using this allows us to have string default arguments in headers
+// without #include <string>
+string const & empty_string()
+{
+ static string s;
+ return s;
+}
/**
* Convert a QChar into a UCS4 character.
bool isStrInt(string const & str)
{
- if (str.empty()) return false;
+ if (str.empty())
+ return false;
// Remove leading and trailing white space chars.
string const tmpstr = trim(str);
- if (tmpstr.empty()) return false;
+ if (tmpstr.empty())
+ return false;
string::const_iterator cit = tmpstr.begin();
- if ((*cit) == '-') ++cit;
+ if ((*cit) == '-')
+ ++cit;
+
string::const_iterator end = tmpstr.end();
- for (; cit != end; ++cit) {
- if (!isdigit((*cit))) return false;
- }
+ for (; cit != end; ++cit)
+ if (!isdigit((*cit)))
+ return false;
+
return true;
}
bool isStrUnsignedInt(string const & str)
{
- if (str.empty()) return false;
+ if (str.empty())
+ return false;
// Remove leading and trailing white space chars.
string const tmpstr = trim(str);
- if (tmpstr.empty()) return false;
+ if (tmpstr.empty())
+ return false;
string::const_iterator cit = tmpstr.begin();
string::const_iterator end = tmpstr.end();
- for (; cit != end; ++cit) {
- if (!isdigit((*cit))) return false;
- }
+ for (; cit != end; ++cit)
+ if (!isdigit((*cit)))
+ return false;
+
return true;
}
bool isStrDbl(string const & str)
{
- if (str.empty()) return false;
+ if (str.empty())
+ return false;
// Remove leading and trailing white space chars.
string const tmpstr = trim(str);
- if (tmpstr.empty()) return false;
- // if (1 < tmpstr.count('.')) return false;
+ if (tmpstr.empty())
+ return false;
+ // if (tmpstr.count('.') > 1) return false;
string::const_iterator cit = tmpstr.begin();
- bool found_dot(false);
- if ((*cit) == '-') ++cit;
+ bool found_dot = false;
+ if (*cit == '-')
+ ++cit;
string::const_iterator end = tmpstr.end();
for (; cit != end; ++cit) {
- if (!isdigit((*cit))
- && '.' != (*cit)) {
+ if (!isdigit(*cit) && *cit != '.')
return false;
- }
if ('.' == (*cit)) {
- if (found_dot) {
+ if (found_dot)
return false;
- } else {
- found_dot = true;
- }
+ found_dot = true;
}
}
return true;
}
-namespace {
-
-inline
-bool isHexChar(char_type c)
+static bool isHexChar(char_type c)
{
return c == '0' ||
c == '1' ||
c == 'f' || c == 'F';
}
-} // anon namespace
-
bool isHex(docstring const & str)
{
namespace {
-// since we cannot use std::tolower and std::toupper directly in the
-// calls to std::transform yet, we use these helper clases. (Lgb)
+// since we cannot use tolower and toupper directly in the
+// calls to transform yet, we use these helper clases. (Lgb)
struct local_lowercase {
char_type operator()(char_type c) const {
if (prelen > alen || a.empty())
return false;
-#if defined(STD_STRING_IS_GOOD)
- return a.compare(0, prelen, pre) == 0;
-#else
- return ::strncmp(a.c_str(), pre.c_str(), prelen) == 0;
-#endif
+ else
+ return a.compare(0, prelen, pre) == 0;
}
{
size_t const suflen = suf.length();
size_t const alen = a.length();
-
if (suflen > alen)
return false;
-
-#if !defined(USE_INCLUDED_STRING) && !defined(STD_STRING_IS_GOOD)
- string tmp(a, alen - suflen);
- return ::strncmp(tmp.c_str(), suf.c_str(), suflen) == 0;
-#else
- return a.compare(alen - suflen, suflen, suf) == 0;
-#endif
+ else
+ return a.compare(alen - suflen, suflen, suf) == 0;
}
docstring const token(docstring const & a, char_type delim, int n)
{
- if (a.empty()) return docstring();
+ if (a.empty())
+ return docstring();
size_t k = 0;
size_t i = 0;
/// Substitute all \a oldchar with \a newchar
template<typename Ch> inline
-std::basic_string<Ch> const subst_char(std::basic_string<Ch> const & a,
+basic_string<Ch> const subst_char(basic_string<Ch> const & a,
Ch oldchar, Ch newchar)
{
- typedef std::basic_string<Ch> String;
+ typedef basic_string<Ch> String;
String tmp(a);
typename String::iterator lit = tmp.begin();
typename String::iterator end = tmp.end();