void GemPuzzleState::MakeBoard(const char* str){ _size = ParseToState(str); //TODO what is the right way of using assert here //assert(!(size == 17 || size == 25)&&"The state is not valid!\n"); _dim = sqrt(_size); for(int i=0;i<_size;i++){ vector<int> list; _edges.push_back(list); } for (int i = 0; i < _dim; i++) { for (int j = 0; j < _dim; j++) { MakeEdges(i,j,_edges[POS(i,j,_dim)]); } } }
int main(int argc, char **argv) { FILE *fp = fileOpen(c_getOutFile("IsJChar_Java.txt"), "wb"); int chr; uint index; MakeEdges(); for(index = 0; index < getCount(Edges); index += 2) { int bgn = (int)getElement(Edges, index); int end = (int)getElement(Edges, index + 1); writeLine_x(fp, xcout("this.add(0x%04x, 0x%04x);", bgn, end)); } fileClose(fp); openOutDir(); }
void PluginTreeBuilder::Calculate () { Graph_.clear (); Object2Vertex_.clear (); Result_.clear (); CreateGraph (); QMap<Edge_t, QPair<Vertex_t, Vertex_t> > edge2vert = MakeEdges (); QMap<Vertex_t, QList<Vertex_t> > reachable; QPair<Vertex_t, Vertex_t> pair; Q_FOREACH (pair, edge2vert) reachable [pair.first] << pair.second; QList<Edge_t> backEdges; CycleDetector<Edge_t> cd (backEdges); boost::depth_first_search (Graph_, boost::visitor (cd)); QList<Vertex_t> backVertices; Q_FOREACH (const Edge_t& backEdge, backEdges) backVertices << edge2vert [backEdge].first; FulfillableChecker<Graph_t, Vertex_t> checker (Graph_, backVertices, reachable); boost::depth_first_search (Graph_, boost::visitor (checker)); typedef boost::filtered_graph<Graph_t, boost::keep_all, VertexPredicate<Graph_t> > fg_t; fg_t fg = fg_t (Graph_, boost::keep_all (), VertexPredicate<Graph_t> (Graph_)); QList<Vertex_t> vertices; boost::topological_sort (fg, std::back_inserter (vertices)); Q_FOREACH (const Vertex_t& vertex, vertices) Result_ << fg [vertex].Object_; }