Example #1
0
void util::NodeMap::createNodeMap(int aLevel, Node* aNode){
    if(aLevel == 0 && m_nodeMap.size() == 0){    //handle root
        if(aNode != NULL){
            BNode* newNode = new BNode(aNode);
            aNode->container = newNode;
            std::vector<BNode*> vec;
            vec.push_back(newNode);
            m_nodeMap[aLevel] = vec;
        }
    }
    else{
        std::vector<BNode*> vec;
        for(std::vector<BNode*>::iterator iter = m_nodeMap[aLevel].begin(); iter != m_nodeMap[aLevel].end(); iter++){
            if((*iter)->getNode() != NULL){
                std::vector<Node*> children = (*iter)->getNode()->getChildren();
                for(std::vector<Node*>::iterator iter2 = children.begin(); iter2 != children.end(); iter2++){
                    if((*iter2) != NULL && strcmp((*iter2)->getName().c_str(), "___")){
                        BNode* newNode = new BNode(*iter2);
                        (*iter2)->container = newNode;
                        newNode->setParent(*iter);
                        vec.push_back(newNode);
                    }
                }
            }
        }
        aLevel++;
        m_nodeMap[aLevel] = vec;
    }
    if(!isTreeEnd(m_nodeMap[aLevel]))
        createNodeMap(aLevel, aNode);
}
Example #2
0
void
Hdf5DigraphWriter::writeDigraph(const Hdf5DigraphWriter::Digraph& digraph) {

    int numNodes = 0;
    for (Digraph::NodeIt node(digraph); node != lemon::INVALID; ++node)
        numNodes++;

    vigra::ArrayVector<int> n(1);
    vigra::ArrayVector<int> arcs; // stored in pairs

    n[0] = numNodes;
    _hdfFile.write("num_nodes", n);

    if (!nodeIdsConsequtive(digraph)) {

        // create map from node ids to consecutive ids
        std::map<int, int> nodeMap = createNodeMap(digraph);

        for (Digraph::ArcIt arc(digraph); arc != lemon::INVALID; ++arc) {

            arcs.push_back(nodeMap[digraph.id(digraph.source(arc))]);
            arcs.push_back(nodeMap[digraph.id(digraph.target(arc))]);
        }

    } else {

        for (Digraph::ArcIt arc(digraph); arc != lemon::INVALID; ++arc) {

            arcs.push_back(digraph.id(digraph.source(arc)));
            arcs.push_back(digraph.id(digraph.target(arc)));
        }
    }

    _hdfFile.write("arcs", arcs);
}
Example #3
0
void util::NodeMap::createNodeMap(Node* aRoot){
    m_nodeMap.clear();
    if(aRoot != NULL){
        createNodeMap(0, aRoot);
    }
}
Example #4
0
Map::Map(int numNodes)
{
    this->nodeArray = Model::getSelf()->nodeArray;
    this->selector = Model::getSelf()->selector;
    createNodeMap(numNodes);
}