Make sure ROEW summary keywords are evaluated last
This commit is contained in:
parent
77ec5ffa5d
commit
491d816656
@ -1115,9 +1115,30 @@ inline void handleKW( SummaryConfig::keyword_list& list,
|
|||||||
|
|
||||||
|
|
||||||
inline void uniq( SummaryConfig::keyword_list& vec ) {
|
inline void uniq( SummaryConfig::keyword_list& vec ) {
|
||||||
std::sort( vec.begin(), vec.end() );
|
std::sort( vec.begin(), vec.end());
|
||||||
auto logical_end = std::unique( vec.begin(), vec.end() );
|
auto logical_end = std::unique( vec.begin(), vec.end() );
|
||||||
vec.erase( logical_end, vec.end() );
|
vec.erase( logical_end, vec.end() );
|
||||||
|
if (vec.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This is a desperate hack to ensure that the ROEW keywords come after
|
||||||
|
WOPT keywords, to ensure that the WOPT keywords have been fully
|
||||||
|
evaluated in the SummaryState when we evaluate the ROEW keywords.
|
||||||
|
*/
|
||||||
|
std::size_t tail_index = vec.size() - 1;
|
||||||
|
std::size_t item_index = 0;
|
||||||
|
while (true) {
|
||||||
|
if (item_index >= tail_index)
|
||||||
|
break;
|
||||||
|
|
||||||
|
auto& node = vec[item_index];
|
||||||
|
if (node.keyword().rfind("ROEW", 0) == 0) {
|
||||||
|
std::swap( node, vec[tail_index] );
|
||||||
|
tail_index--;
|
||||||
|
}
|
||||||
|
item_index++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user