#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;
}
+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>
}
+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("%"));
}