47 }
while (m_parent->getNodeByID(m_ID));
54 CHMHMapNode::~CHMHMapNode()
57 if (m_parent.get()) m_parent->onNodeDestruction(
this);
60 for (
auto& m_arc : m_arcs) m_arc->onNodeDestruction(
this);
63 uint8_t CHMHMapNode::serializeGetVersion()
const {
return 0; }
66 out << m_ID << m_label;
72 void CHMHMapNode::serializeFrom(
79 in >> m_ID >> m_label >> m_nodeType >> m_annotations >>
104 auto it = m_arcs.find_ptr_to(arc);
105 if (it != m_arcs.end()) m_arcs.erase(it);
119 if (arc->m_nodeFrom == m_ID || arc->m_nodeTo == m_ID)
122 auto it = m_arcs.find(arc);
123 if (it == m_arcs.end()) m_arcs.push_back(arc);
135 unsigned int CHMHMapNode::getLevelInTheHierarchy()
137 TArcList::iterator itArc;
138 unsigned int level = 0;
140 for (itArc = m_arcs.begin(); itArc != m_arcs.end(); itArc++)
144 if ((*itArc)->m_arcType ==
"Membership" &&
145 (*itArc)->m_nodeTo == this->m_ID)
147 unsigned int L = m_parent->getNodeByID((*itArc)->m_nodeFrom)
148 ->getLevelInTheHierarchy();
149 level = max(L + 1, level);
159 unsigned int CHMHMapNode::getRelatedArcsCount()
161 return (
unsigned int)m_arcs.size();
170 for (
const auto& m_arc : m_arcs)
171 if (m_arc->m_hypotheses.has(hyp_id))
out.push_back(m_arc);
177 void CHMHMapNode::getArcs(
181 for (
const auto& a : m_arcs)
182 if (a->m_hypotheses.has(hyp_id) && a->m_arcType == arcType)
189 bool CHMHMapNode::isNeighbor(
192 for (
const auto& m_arc : m_arcs)
193 if (m_arc->m_hypotheses.has(hyp_id) &&
194 (m_arc->m_nodeFrom == otherArea || m_arc->m_nodeTo == otherArea))