Am Sonntag, 10. September 2006 20:10 schrieb Abdelrazak Younes:
> Here is the updated patch. Objection?

None apart from what Lars already mentioned, but the back and forth 
conversions in bformat can be avoided if you use the attached patch 
(against clean lstrings.[Ch]). You might need to add more 
convert<docstring> specializations, I did not compile to the end.


Georg
Index: src/support/lstrings.C
===================================================================
--- src/support/lstrings.C	(Revision 14966)
+++ src/support/lstrings.C	(Arbeitskopie)
@@ -32,6 +32,8 @@
 #include <algorithm>
 #include <sstream>
 
+using lyx::docstring;
+
 using std::transform;
 using std::string;
 using std::vector;
@@ -676,179 +678,179 @@ docstring const internalLineEnding(docst
 #if USE_BOOST_FORMAT
 
 template<>
-string bformat(string const & fmt, int arg1)
+docstring bformat(docstring const & fmt, int arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<>
-string bformat(string const & fmt, long arg1)
+docstring bformat(docstring const & fmt, long arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<>
-string bformat(string const & fmt, unsigned int arg1)
+docstring bformat(docstring const & fmt, unsigned int arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<>
-string bformat<string>(string const & fmt, string arg1)
+docstring bformat<docstring>(docstring const & fmt, docstring arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<>
-string bformat(string const & fmt, char * arg1)
+docstring bformat(docstring const & fmt, char * arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<>
-string bformat(string const & fmt, int arg1, int arg2)
+docstring bformat(docstring const & fmt, int arg1, int arg2)
 {
-	return (boost::format(fmt) % arg1 % arg2).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2).str();
 }
 
 
 template<>
-string bformat(string const & fmt, string arg1, string arg2)
+docstring bformat(docstring const & fmt, docstring arg1, docstring arg2)
 {
-	return (boost::format(fmt) % arg1 % arg2).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2).str();
 }
 
 
 template<>
-string bformat(string const & fmt, char const * arg1, string arg2)
+docstring bformat(docstring const & fmt, char const * arg1, docstring arg2)
 {
-	return (boost::format(fmt) % arg1 % arg2).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2).str();
 }
 
 
 template<>
-string bformat(string const & fmt, string arg1, string arg2, string arg3)
+docstring bformat(docstring const & fmt, docstring arg1, docstring arg2, docstring arg3)
 {
-	return (boost::format(fmt) % arg1 % arg2 % arg3).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2 % arg3).str();
 }
 
 
 template<>
-string bformat(string const & fmt,
-	       string arg1, string arg2, string arg3, string arg4)
+docstring bformat(docstring const & fmt,
+	       docstring arg1, docstring arg2, docstring arg3, docstring arg4)
 {
-	return (boost::format(fmt) % arg1 % arg2 % arg3 % arg4).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2 % arg3 % arg4).str();
 }
 
 #else
 
 template<>
-string bformat(string const & fmt, int arg1)
+docstring bformat(docstring const & fmt, int arg1)
 {
-	BOOST_ASSERT(contains(fmt, "%1$d"));
-	string const str = subst(fmt, "%1$d", convert<string>(arg1));
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$d")));
+	docstring const str = subst(fmt, lyx::from_ascii("%1$d"), convert<docstring>(arg1));
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, long arg1)
+docstring bformat(docstring const & fmt, long arg1)
 {
-	BOOST_ASSERT(contains(fmt, "%1$d"));
-	string const str = subst(fmt, "%1$d", convert<string>(arg1));
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$d")));
+	docstring const str = subst(fmt, lyx::from_ascii("%1$d"), convert<docstring>(arg1));
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, unsigned int arg1)
+docstring bformat(docstring const & fmt, unsigned int arg1)
 {
-	BOOST_ASSERT(contains(fmt, "%1$d"));
-	string const str = subst(fmt, "%1$d", convert<string>(arg1));
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$d")));
+	docstring const str = subst(fmt, lyx::from_ascii("%1$d"), convert<docstring>(arg1));
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, string arg1)
+docstring bformat(docstring const & fmt, docstring arg1)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	string const str = subst(fmt, "%1$s", arg1);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	docstring const str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, char * arg1)
+docstring bformat(docstring const & fmt, char * arg1)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	string const str = subst(fmt, "%1$s", arg1);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	docstring const str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 template<>
-string bformat(string const & fmt, string arg1, string arg2)
+docstring bformat(docstring const & fmt, docstring arg1, docstring arg2)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	BOOST_ASSERT(contains(fmt, "%2$s"));
-	string str = subst(fmt, "%1$s", arg1);
-	str = subst(str, "%2$s", arg2);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%2$s")));
+	docstring str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	str = subst(str, lyx::from_ascii("%2$s"), arg2);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, char const * arg1, string arg2)
+docstring bformat(docstring const & fmt, char const * arg1, docstring arg2)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	BOOST_ASSERT(contains(fmt, "%2$s"));
-	string str = subst(fmt, "%1$s", arg1);
-	str = subst(fmt, "%2$s", arg2);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%2$s")));
+	docstring str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	str = subst(fmt, lyx::from_ascii("%2$s"), arg2);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, int arg1, int arg2)
+docstring bformat(docstring const & fmt, int arg1, int arg2)
 {
-	BOOST_ASSERT(contains(fmt, "%1$d"));
-	BOOST_ASSERT(contains(fmt, "%2$d"));
-	string str = subst(fmt, "%1$d", convert<string>(arg1));
-	str = subst(str, "%2$d", convert<string>(arg2));
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$d")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%2$d")));
+	docstring str = subst(fmt, lyx::from_ascii("%1$d"), convert<docstring>(arg1));
+	str = subst(str, lyx::from_ascii("%2$d"), convert<docstring>(arg2));
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt, string arg1, string arg2, string arg3)
+docstring bformat(docstring const & fmt, docstring arg1, docstring arg2, docstring arg3)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	BOOST_ASSERT(contains(fmt, "%2$s"));
-	BOOST_ASSERT(contains(fmt, "%3$s"));
-	string str = subst(fmt, "%1$s", arg1);
-	str = subst(str, "%2$s", arg2);
-	str = subst(str, "%3$s", arg3);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%2$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%3$s")));
+	docstring str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	str = subst(str, lyx::from_ascii("%2$s"), arg2);
+	str = subst(str, lyx::from_ascii("%3$s"), arg3);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 
 template<>
-string bformat(string const & fmt,
-	       string arg1, string arg2, string arg3, string arg4)
+docstring bformat(docstring const & fmt,
+	       docstring arg1, docstring arg2, docstring arg3, docstring arg4)
 {
-	BOOST_ASSERT(contains(fmt, "%1$s"));
-	BOOST_ASSERT(contains(fmt, "%2$s"));
-	BOOST_ASSERT(contains(fmt, "%3$s"));
-	BOOST_ASSERT(contains(fmt, "%4$s"));
-	string str = subst(fmt, "%1$s", arg1);
-	str = subst(str, "%2$s", arg2);
-	str = subst(str, "%3$s", arg3);
-	str = subst(str, "%4$s", arg4);
-	return subst(str, "%%", "%");
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%1$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%2$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%3$s")));
+	BOOST_ASSERT(contains(fmt, lyx::from_ascii("%4$s")));
+	docstring str = subst(fmt, lyx::from_ascii("%1$s"), arg1);
+	str = subst(str, lyx::from_ascii("%2$s"), arg2);
+	str = subst(str, lyx::from_ascii("%3$s"), arg3);
+	str = subst(str, lyx::from_ascii("%4$s"), arg4);
+	return subst(str, lyx::from_ascii("%%"), lyx::from_ascii("%"));
 }
 
 #endif
Index: src/support/lstrings.h
===================================================================
--- src/support/lstrings.h	(Revision 14966)
+++ src/support/lstrings.h	(Arbeitskopie)
@@ -216,45 +216,45 @@ docstring const internalLineEnding(docst
 #include <boost/format.hpp>
 
 template<class Arg1>
-string bformat(string const & fmt, Arg1 arg1)
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1 arg1)
 {
-	return (boost::format(fmt) % arg1).str();
+	return (boost::basic_format<char_type>(fmt) % arg1).str();
 }
 
 
 template<class Arg1, class Arg2>
-string bformat(string const & fmt, Arg1 arg1, Arg2 arg2)
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1 arg1, Arg2 arg2)
 {
-	return (boost::format(fmt) % arg1 % arg2).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2).str();
 }
 
 
 template<class Arg1, class Arg2, class Arg3>
-string bformat(string const & fmt, Arg1 arg1, Arg2 arg2, Arg3 arg3)
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1 arg1, Arg2 arg2, Arg3 arg3)
 {
-	return (boost::format(fmt) % arg1 % arg2 % arg3).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2 % arg3).str();
 }
 
 
 template<class Arg1, class Arg2, class Arg3, class Arg4>
-string bformat(string const & fmt, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
 {
-	return (boost::format(fmt) % arg1 % arg2 % arg3 % arg4).str();
+	return (boost::basic_format<char_type>(fmt) % arg1 % arg2 % arg3 % arg4).str();
 }
 
 #else
 
 template <class Arg1>
-std::string bformat(std::string const & fmt, Arg1);
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1);
 
 template <class Arg1, class Arg2>
-std::string bformat(std::string const & fmt, Arg1, Arg2);
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1, Arg2);
 
 template <class Arg1, class Arg2, class Arg3>
-std::string bformat(std::string const & fmt, Arg1, Arg2, Arg3);
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1, Arg2, Arg3);
 
 template <class Arg1, class Arg2, class Arg3, class Arg4>
-std::string bformat(std::string const & fmt, Arg1, Arg2, Arg3, Arg4);
+lyx::docstring bformat(lyx::docstring const & fmt, Arg1, Arg2, Arg3, Arg4);
 
 #endif
 

Reply via email to