using std::find_if;
using std::string;
using std::vector;
+using std::distance;
namespace {
return result;
}
+
+class ConverterEqual : public std::binary_function<string, string, bool> {
+public:
+ ConverterEqual(string const & from, string const & to)
+ : from_(from), to_(to) {}
+ bool operator()(Converter const & c) const {
+ return c.from == from_ && c.to == to_;
+ }
+private:
+ string const from_;
+ string const to_;
+};
+
} // namespace anon
Converter::Converter(string const & f, string const & t, string const & c,
string const & l): from(f), to(t), command(c), flags(l),
- From(0), To(0), latex(false),
+ From(0), To(0), latex(false), xml(false),
original_dir(false), need_aux(false)
{}
flag_value = split(flag_value, flag_name, '=');
if (flag_name == "latex")
latex = true;
+ else if (flag_name == "xml")
+ xml = true;
else if (flag_name == "originaldir")
original_dir = true;
else if (flag_name == "needaux")
}
-class compare_Converter {
-public:
- compare_Converter(string const & f, string const & t)
- : from(f), to(t) {}
- bool operator()(Converter const & c) {
- return c.from == from && c.to == to;
- }
-private:
- string const & from;
- string const & to;
-};
-
-
-
Converter const * Converters::getConverter(string const & from,
- string const & to)
+ string const & to) const
{
ConverterList::const_iterator cit =
find_if(converterlist_.begin(), converterlist_.end(),
- compare_Converter(from, to));
+ ConverterEqual(from, to));
if (cit != converterlist_.end())
return &(*cit);
else
}
-int Converters::getNumber(string const & from, string const & to)
+int Converters::getNumber(string const & from, string const & to) const
{
ConverterList::const_iterator cit =
find_if(converterlist_.begin(), converterlist_.end(),
- compare_Converter(from, to));
+ ConverterEqual(from, to));
if (cit != converterlist_.end())
- return cit - converterlist_.begin();
+ return distance(converterlist_.begin(), cit);
else
return -1;
}
formats.add(to);
ConverterList::iterator it = find_if(converterlist_.begin(),
converterlist_.end(),
- compare_Converter(from, to));
+ ConverterEqual(from , to));
Converter converter(from, to, command, flags);
if (it != converterlist_.end() && !flags.empty() && flags[0] == '*') {
{
ConverterList::iterator it = find_if(converterlist_.begin(),
converterlist_.end(),
- compare_Converter(from, to));
+ ConverterEqual(from, to));
if (it != converterlist_.end())
converterlist_.erase(it);
}
if (conv.latex)
if (contains(conv.to, "pdf"))
return OutputParams::PDFLATEX;
+ if (conv.xml)
+ return OutputParams::XML;
}
return OutputParams::LATEX;
}
namespace {
-class showMessage : public boost::signals::trackable {
+class showMessage : public std::unary_function<string, void>, public boost::signals::trackable {
public:
showMessage(Buffer const & b) : buffer_(b) {};
- void operator()(string const & m)
+ void operator()(string const & m) const
{
buffer_.message(m);
}