struct Table
{
- std::vector<std::string> & row( const sat::Solvable & solv_r )
+ using ResultLInes = std::set<std::string>;
+
+ ResultLInes & row( const sat::Solvable & solv_r )
{
//smax( _maxSID, );
smax( _maxNAME, solv_r.ident().size() + solv_r.edition().size() + solv_r.arch().size() );
void row( PoolQuery::const_iterator it_r )
{
- std::vector<std::string> & details { row( *it_r ) };
+ ResultLInes & details { row( *it_r ) };
for_( match, it_r.matchesBegin(), it_r.matchesEnd() ) {
- details.push_back( match->inSolvAttr().asString().substr( 9, 3 )+": " +match->asString() );
+ std::string ent { match->inSolvAttr().asString().substr( 9, 3 )+": " +match->asString() };
+ if ( match->inSolvAttr() == sat::SolvAttr::requires
+ && match->inSolvable().prerequires().contains( Capability(match->id()) ) ) {
+ static const char * pre = " " COL_C "[PRE]" COL_OFF;
+ ent[3] = '+';
+ ent += pre;
+ }
+ details.insert( std::move(ent) );
}
}
unsigned _maxREPO = 0;
//unsigned _maxTIME = 10;
//unsigned _maxVEND = 0;
- std::map<sat::Solvable, std::vector<std::string>, PQSort> _map;
+ std::map<sat::Solvable, ResultLInes, PQSort> _map;
};
inline std::ostream & operator<<( std::ostream & str, const Table & table_r )
{
auto & details { t.row( el.first ) };
for ( const auto & cap : el.second )
- details.push_back( cap );
+ details.insert( cap );
}
message << endl << t << endl;
}