115 LDEBUG <<
"Doing simplification";
117 auto syntacticData = std::dynamic_pointer_cast<SyntacticData>(analysis.
getData(
"SyntacticData"));
118 auto simplificationData = std::dynamic_pointer_cast<SimplificationData>(analysis.
getData(
"SimplificationData"));
120 if (simplificationData==0)
123 LERROR <<
"No simplificationData in SubsentenceBounds constraint";
126 std::list< boost::tuple< LinguisticGraphVertex, LinguisticGraphVertex, SyntacticRelationId > >::const_iterator simplificationsIt, simplificationsIt_end;
127 simplificationsIt = simplificationData->subSentBounds().begin();
128 simplificationsIt_end = simplificationData->subSentBounds().end();
129 bool simplificationDone =
false;
130 for (; simplificationsIt != simplificationsIt_end; simplificationsIt++)
134 boost::tie(first, last, type) = (*simplificationsIt);
143 if (boost::in_degree(first, *graph)==0 || boost::out_degree(last, *graph)==0)
147 LDEBUG <<
"first ("<<first<<
") has " << boost::in_degree(first, *graph) <<
" in edges";
149 boost::remove_edge(inEdge, *graph);
151 LDEBUG <<
"last ("<<last<<
") has " << boost::out_degree(last, *graph) <<
" out edges";
153 boost::remove_edge(outEdge, *graph);
155 LDEBUG <<
"Old edges are "
156 << inEdge.m_source <<
" -> " << inEdge.m_target <<
" / "
157 << outEdge.m_source <<
" -> " << outEdge.m_target;
159 << source(inEdge,*graph) <<
" -> "
160 << target(outEdge,*graph);
161 std::pair<LinguisticGraphEdge, bool> addingResult = boost::add_edge(source(inEdge,*graph), target(outEdge,*graph), *graph);
162 if (addingResult.second ==
false)
165 LERROR <<
"Was not able to add a simplification edge.";
166 simplificationData->clearBounds();
170 simplificationData->addSimplification(inEdge, outEdge, type);
171 simplificationDone =
true;
173 simplificationData->clearBounds();
174 return simplificationDone;
boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, LinguisticVertexProperties > LinguisticGraph
Property to identify the chains in the graph.
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
std::shared_ptr< AnalysisData > getData(const QString &id)
return AnalysisData by id
bool operator()(const Lima::LinguisticProcessing::LinguisticAnalysisStructure::AnalysisGraph &graph, const LinguisticGraphVertex &v, AnalysisContent &analysis) const override
unary constraint function : the constraint only applies on one vertices in the graph (the graph is al...