bool SeqTreeAsnizer::addAsnSeqTreeNode(const AlignmentCollection& ac, const SeqTree& seqTree, SeqTreeIterator cursor, CSeqTree_node& asnNode)
{
	// add cursor as a child of asnNode
	list< CRef< CSeqTree_node > >& childList = asnNode.SetChildren().SetChildren();
	CRef< CSeqTree_node >  nodeRef(new CSeqTree_node);
	fillAsnSeqTreeNode(ac, cursor, nodeRef.GetObject());
	childList.push_back(nodeRef);

	//add the children of cursor as children of  nodeRef
	SeqTree::sibling_iterator sit = cursor.begin();
	while (sit != cursor.end())
	{
		addAsnSeqTreeNode(ac, seqTree, sit, nodeRef.GetObject());
		++sit;
	}
	return true;
}
Exemple #2
0
NodeRef NodeStore::add(Node *node)
{
        Mutex::AutoLocker l(mutex);

	if (!node)
		return NULL;

	if (_stored(*node)) {
		HAGGLE_DBG("Node %s is already in node store\n", node->getIdStr());
		return NULL;
	}

	HAGGLE_DBG("Adding new node to node store %s\n", node->getIdStr());

	NodeRef nodeRef(node);
	nodeRef->setStored();
	push_back(new NodeRecord(nodeRef));

	return nodeRef;
}
Exemple #3
0
void parseLine(xmlNodePtr root_node, SHAPE *shape)
{
	int i, l, m, v;
	int k = 0;
	int n = -1;
	int o = -1;

	int start_vertex, end_vertex;
	char val[1024];

	xmlNodePtr osmWay;
	SHPObject *obj = NULL;
	NODE node;
	KEYVAL tags;

	for (i = 0; i < shape->num_entities; i++)
	{
		obj = SHPReadObject(shape->handleShp, k);

		for (m = 0; m < obj->nParts; m++) 
		{
			osmWay = wayElement(o);
			
			if (m == obj->nParts-1)
			{
				// is linestring
				end_vertex = obj->nVertices;
			} else {
				// is multilinestring
				end_vertex = obj->panPartStart[m+1];
			}

			start_vertex = obj->panPartStart[m];

			for (v = start_vertex; v < end_vertex; v++)
			{
				node.id = n;
				node.x = obj->padfX[v];
				node.y = obj->padfY[v];
				xmlAddChild(root_node, nodeElement(node));
				xmlAddChild(osmWay, nodeRef(node));
				n--;
			}

			if (shape->num_fields > 0)
			{
				// has tags
				for (l = 0; l < shape->num_fields; l++)
				{
					setKey(&tags, shape->field_names[l]);

					// set tag value
					snprintf(val, 1024, "%s", DBFReadStringAttribute(shape->handleDbf, k, l));
					setValue(&tags, val);

					xmlAddChild(osmWay, tagElement(&tags));
				}
			}

			xmlAddChild(root_node, osmWay);
			o--;
		}

		k++;
	}
}