Ejemplo n.º 1
0
void
TextOutputBuilder::buildResult(std::ostream& stream, const ResultContainer& facts)
{
    const ResultContainer::result_t& results = facts.getAnswerSets();

    if (!Globals::Instance()->getOption("Silent")) {
        stream << std::endl;
    }

    if (results.empty()) {
        return;
    }

    if (((*results.begin())->hasWeights()) && !Globals::Instance()->getOption("AllModels")) {
        stream << "Best model: ";
    }

    for (ResultContainer::result_t::const_iterator rit = results.begin(); rit != results.end(); ++rit) {
        RawPrintVisitor rpv(stream);
        (*rit)->accept(rpv);
        stream << std::endl;

        if ((*rit)->hasWeights()) {
            stream << "Cost ([Weight:Level]): <";

            //
            // Display all weight values up to the highest specified level
            //
            for (unsigned lev = 1; lev <= AnswerSet::getMaxLevel(); ++lev) {
                if (lev > 1)
                    stream << ",";

                stream << "[" << (*rit)->getWeight(lev) << ":" << lev << "]";
            }

            stream << ">" << std::endl;
        }

        //
        // empty line
        //
        if (!Globals::Instance()->getOption("Silent")) {
            stream << std::endl;
        }
    }
}