#include "support/lstrings.h"
#include "support/convert.h"
+#include "support/debug.h"
#include "support/qstring_helpers.h"
#include "support/lassert.h"
#include <QString>
#include <cstdio>
+#include <cstring>
#include <algorithm>
+#include <typeinfo>
using namespace std;
// without #include "support/docstring" there.
docstring const & empty_docstring()
{
- static docstring s;
+ static const docstring s;
return s;
}
// without #include <string>
string const & empty_string()
{
- static string s;
+ static const string s;
return s;
}
}
+int compare_locale(docstring const & s, docstring const & s2)
+{
+ // FIXME We have a report that this does not work on windows (bug 9030)
+ try
+ {
+ string const l = to_local8bit(s);
+ string const r = to_local8bit(s2);
+ return strcoll(l.c_str(), r.c_str());
+ }
+ catch (bad_cast & e)
+ {
+ // fall back to builtin sorting
+ LYXERR0("Could not compare using the current locale: "
+ << e.what() << ", using fallback.");
+ if (s < s2)
+ return -1;
+ if (s > s2)
+ return 1;
+ return 0;
+ }
+}
+
+
namespace {
template<typename Char>
}
+/* Uncomment here and in lstrings.h if you should need this.
string const lowercase(string const & a)
{
string tmp(a);
transform(tmp.begin(), tmp.end(), tmp.begin(), local_lowercase());
return tmp;
}
+*/
docstring const uppercase(docstring const & a)
}
+int count_bin_chars(string const & str)
+{
+ QString const qstr = toqstr(str).simplified();
+ int count = 0;
+ QString::const_iterator cit = qstr.begin();
+ QString::const_iterator end = qstr.end();
+ for (; cit != end; ++cit) {
+ switch (cit->category()) {
+ case QChar::Separator_Line:
+ case QChar::Separator_Paragraph:
+ case QChar::Other_Control:
+ case QChar::Other_Format:
+ case QChar::Other_Surrogate:
+ case QChar::Other_PrivateUse:
+ case QChar::Other_NotAssigned:
+ ++count;
+ break;
+ default:
+ break;
+ }
+ }
+ return count;
+}
+
+
docstring const trim(docstring const & a, char const * p)
{
LASSERT(p, return a);
LATTEST(contains(fmt, from_ascii("%1$s")));
LATTEST(contains(fmt, from_ascii("%2$s")));
docstring str = subst(fmt, from_ascii("%1$s"), from_ascii(arg1));
- str = subst(fmt, from_ascii("%2$s"), arg2);
+ str = subst(str, from_ascii("%2$s"), arg2);
return subst(str, from_ascii("%%"), from_ascii("%"));
}