Just some style, and some comments, as I try to figure this out.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31910 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2009-11-09 00:55:37 +00:00
parent 288e249ba2
commit 0fb63fb10e
3 changed files with 34 additions and 32 deletions

View File

@ -635,13 +635,17 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
void Converters::buildGraph()
{
// clear graph's data structures
G_.init(formats.size());
ConverterList::iterator beg = converterlist_.begin();
ConverterList::iterator const end = converterlist_.end();
// each of the converters knows how to convert one format to another
// so, for each of them, we create an arrow on the graph, going from
// the one to the other
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);
int const from = formats.getNumber(it->from);
int const to = formats.getNumber(it->to);
G_.addEdge(from, to);
}
}

View File

@ -107,8 +107,7 @@ bool Graph::isReachable(int from, int to)
if (from == to)
return true;
int const s = bfs_init(from);
if (s < 0 || to < 0)
if (to < 0 || bfs_init(from) < 0)
return false;
while (!Q_.empty()) {
@ -133,15 +132,14 @@ bool Graph::isReachable(int from, int to)
}
Graph::EdgePath const
Graph::getPath(int from, int t)
Graph::EdgePath const Graph::getPath(int from, int to)
{
EdgePath path;
if (from == t)
if (from == to)
return path;
int const s = bfs_init(from);
if (s < 0 || t < 0)
if (s < 0 || to < 0)
return path;
vector<int> prev_edge(formats.size());
@ -151,7 +149,7 @@ Graph::getPath(int from, int t)
while (!Q_.empty()) {
int const i = Q_.front();
Q_.pop();
if (i == t) {
if (i == to) {
found = true;
break;
}
@ -174,14 +172,15 @@ Graph::getPath(int from, int t)
if (!found)
return path;
while (t != s) {
path.push_back(prev_edge[t]);
t = prev_vertex[t];
while (to != s) {
path.push_back(prev_edge[to]);
to = prev_vertex[to];
}
reverse(path.begin(), path.end());
return path;
}
void Graph::init(int size)
{
vertices_ = vector<Vertex>(size);
@ -189,13 +188,15 @@ void Graph::init(int size)
numedges_ = 0;
}
void Graph::addEdge(int s, int t)
void Graph::addEdge(int from, int to)
{
vertices_[t].in_vertices.push_back(s);
vertices_[s].out_vertices.push_back(t);
vertices_[s].out_edges.push_back(numedges_++);
vertices_[to].in_vertices.push_back(from);
vertices_[from].out_vertices.push_back(to);
vertices_[from].out_edges.push_back(numedges_++);
}
vector<Graph::Vertex> Graph::vertices_;

View File

@ -24,20 +24,18 @@ public:
Graph() : numedges_(0) {};
///
typedef std::vector<int> EdgePath;
///
/// \return a vector of the vertices from which "to" can be reached
std::vector<int> const getReachableTo(int to, bool clear_visited);
/// \return a vector of the vertices that can be reached from "from"
std::vector<int> const
getReachableTo(int, bool clear_visited);
///
std::vector<int> const
getReachable(int, bool only_viewable,
bool clear_visited);
///
bool isReachable(int, int);
///
EdgePath const getPath(int, int);
///
void addEdge(int s, int t);
///
getReachable(int from, bool only_viewable, bool clear_visited);
/// Can "from" be reached from "to"?
bool isReachable(int from, int to);
/// Find a path from "from" to "to".
EdgePath const getPath(int from, int to);
/// Called repeatedly to build the graph.
void addEdge(int from, int to);
/// Reset the internal data structures.
void init(int size);
private:
@ -52,8 +50,7 @@ private:
std::vector<int> out_edges;
};
///
static
std::vector<Vertex> vertices_;
static std::vector<Vertex> vertices_;
///
std::vector<bool> visited_;
///