+
+ buffer.busy(false);
+
+ int const ERROR_MASK =
+ LaTeX::NO_LOGFILE |
+ LaTeX::ERRORS |
+ LaTeX::NO_OUTPUT;
+
+ return (result & ERROR_MASK) == 0;
+
+}
+
+
+
+void Converters::buildGraph()
+{
+ G_.init(formats.size());
+ ConverterList::iterator beg = converterlist_.begin();
+ ConverterList::iterator end = converterlist_.end();
+ for (ConverterList::iterator it = beg; it != end ; ++it) {
+ int const s = formats.getNumber(it->from);
+ int const t = formats.getNumber(it->to);
+ G_.addEdge(s,t);
+ }
+}
+
+
+std::vector<Format const *> const
+Converters::intToFormat(std::vector<int> const & input)
+{
+ vector<Format const *> result(input.size());
+
+ vector<int>::const_iterator it = input.begin();
+ vector<int>::const_iterator end = input.end();
+ vector<Format const *>::iterator rit = result.begin();
+ for ( ; it != end; ++it, ++rit) {
+ *rit = &formats.get(*it);
+ }
+ return result;
+}
+
+vector<Format const *> const
+Converters::getReachableTo(string const & target, bool clear_visited)
+{
+ vector<int> const & reachablesto =
+ G_.getReachableTo(formats.getNumber(target), clear_visited);
+
+ return intToFormat(reachablesto);
+}
+
+
+vector<Format const *> const
+Converters::getReachable(string const & from, bool only_viewable,
+ bool clear_visited)
+{
+ vector<int> const & reachables =
+ G_.getReachable(formats.getNumber(from),
+ only_viewable,
+ clear_visited);
+
+ return intToFormat(reachables);
+}
+
+
+bool Converters::isReachable(string const & from, string const & to)
+{
+ return G_.isReachable(formats.getNumber(from),
+ formats.getNumber(to));