+ 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), original_dir(false), need_aux(false) {}
+ ///
+ void readFlags();
+ ///
+ string from;
+ ///
+ string to;
+ ///
+ string command;
+ ///
+ string flags;
+ ///
+ Format const * From;
+ ///
+ Format const * To;
+
+ /// The converter is latex or its derivatives
+ bool latex;
+ /// Do we need to run the converter in the original directory?
+ bool original_dir;
+ /// This converter needs the .aux files
+ bool need_aux;
+ /// If the converter put the result in a directory, then result_dir
+ /// is the name of the directory
+ string result_dir;
+ /// If the converter put the result in a directory, then result_file
+ /// is the name of the main file in that directory
+ string result_file;
+ /// Command to convert the program output to a LaTeX log file format
+ string parselog;
+};
+
+
+///
+class Converters {
+public:
+ typedef std::vector<Converter> ConverterList;
+ ///
+ typedef ConverterList::const_iterator const_iterator;
+ ///
+ typedef std::vector<int> EdgePath;
+ ///
+ Converter const & get(int i) const {
+ return converterlist_[i];
+ }
+ ///
+ Converter const * getConverter(string const & from, string const & to);
+ ///
+ int getNumber(string const & from, string const & to);
+ ///
+ void add(string const & from, string const & to,