#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include "solver.h"
#include "bitmap.h"
#include "pool.h"
#include "util.h"
#include "evr.h"
#include "solverdebug.h"
#include "pooltypes.h"
Go to the source code of this file.
Functions | |
void | solver_disableproblem (Solver *solv, Id v) |
void | solver_enableproblem (Solver *solv, Id v) |
static void | enableweakrules (Solver *solv) |
static void | refine_suggestion (Solver *solv, Id *problem, Id sug, Queue *refined, int essentialok) |
static int | problems_sortcmp (const void *ap, const void *bp, void *dp) |
static void | convertsolution (Solver *solv, Id why, Queue *solutionq) |
int | solver_prepare_solutions (Solver *solv) |
static void | create_solutions (Solver *solv, int probnr, int solidx) |
unsigned int | solver_problem_count (Solver *solv) |
Id | solver_next_problem (Solver *solv, Id problem) |
unsigned int | solver_solution_count (Solver *solv, Id problem) |
Id | solver_next_solution (Solver *solv, Id problem, Id solution) |
unsigned int | solver_solutionelement_count (Solver *solv, Id problem, Id solution) |
Id | solver_next_solutionelement (Solver *solv, Id problem, Id solution, Id element, Id *p, Id *rp) |
void | solver_take_solutionelement (Solver *solv, Id p, Id rp, Queue *job) |
void | solver_take_solution (Solver *solv, Id problem, Id solution, Queue *job) |
static void | findproblemrule_internal (Solver *solv, Id idx, Id *reqrp, Id *conrp, Id *sysrp, Id *jobrp) |
Id | solver_findproblemrule (Solver *solv, Id problem) |
static void | findallproblemrules_internal (Solver *solv, Id idx, Queue *rules) |
void | solver_findallproblemrules (Solver *solv, Id problem, Queue *rules) |
SolverRuleinfo | solver_problemruleinfo (Solver *solv, Queue *job, Id rid, Id *depp, Id *sourcep, Id *targetp) |
Definition at line 35 of file problems.c.
References _Solver::duprules, _Solver::duprules_end, _Queue::elements, _Solver::featurerules, _Solver::infarchrules, _Solver::infarchrules_end, _Solver::jobrules, _Solvable::name, _Rule::p, _Solver::pool, _Solver::rules, _Solver::ruletojob, _Pool::solvables, solver_disablerule(), solver_enablerule(), and _Solver::updaterules.
Referenced by analyze_unsolvable(), makeruledecisions(), and refine_suggestion().
Definition at line 88 of file problems.c.
References _Rule::d, _Solver::duprules, _Solver::duprules_end, _Queue::elements, _Solver::featurerules, _Solver::infarchrules, _Solver::infarchrules_end, _Solver::jobrules, _Solvable::name, _Rule::p, _Solver::pool, _Solver::rules, _Solver::ruletojob, _Pool::solvables, solver_disablerule(), solver_enablerule(), and _Solver::updaterules.
Referenced by refine_suggestion().
static void enableweakrules | ( | Solver * | solv | ) | [static] |
Definition at line 149 of file problems.c.
References _Rule::d, MAPTST, _Solver::rules, solver_enablerule(), and _Solver::weakrulemap.
Referenced by refine_suggestion().
static void refine_suggestion | ( | Solver * | solv, | |
Id * | problem, | |||
Id | sug, | |||
Queue * | refined, | |||
int | essentialok | |||
) | [static] |
Definition at line 177 of file problems.c.
References _Queue::count, _Queue::elements, enableweakrules(), _Solver::featurerules, _Solver::featurerules_end, IF_POOLDEBUG, _Solver::job, _Rule::p, _Solver::pool, POOL_DEBUG, _Solver::problems, queue_empty(), queue_free(), queue_init(), queue_push(), _Solver::rules, SAT_DEBUG_SCHUBI, SAT_DEBUG_SOLUTIONS, solver_disablepolicyrules(), solver_disableproblem(), solver_enableproblem(), solver_enablerule(), SOLVER_ESSENTIAL, solver_printdecisions(), solver_printproblem(), solver_reenablepolicyrules(), solver_reset(), solver_run_sat(), and _Solver::updaterules.
Referenced by create_solutions().
static int problems_sortcmp | ( | const void * | ap, | |
const void * | bp, | |||
void * | dp | |||
) | [static] |
Definition at line 347 of file problems.c.
References _Queue::elements, and SOLVER_ESSENTIAL.
Referenced by create_solutions().
Definition at line 370 of file problems.c.
References _Solver::decisionmap, _Solver::dupmap_all, _Solver::duprules, _Solver::duprules_end, _Solver::featurerules, FOR_RULELITERALS, _Solver::infarchrules, _Solver::infarchrules_end, _Solver::installed, MAPTST, _Solvable::name, _Solver::noobsoletes, _Rule::p, _Solver::pool, queue_push(), _Solvable::repo, _Solver::rules, _Map::size, _Pool::solvables, SOLVER_SOLUTION_DISTUPGRADE, SOLVER_SOLUTION_INFARCH, _Repo::start, _Solver::updaterules, and _Rule::w2.
Referenced by create_solutions().
int solver_prepare_solutions | ( | Solver * | solv | ) |
Definition at line 480 of file problems.c.
References _Queue::count, _Queue::elements, _Solver::problems, queue_push(), and _Solver::solutions.
Referenced by solver_solve().
static void create_solutions | ( | Solver * | solv, | |
int | probnr, | |||
int | solidx | |||
) | [static] |
Definition at line 510 of file problems.c.
References convertsolution(), _Queue::count, _Solver::decisionmap, _Solver::decisionq, _Solver::decisionq_why, _Queue::elements, _Solver::job, _Pool::nsolvables, _Solver::pool, POOL_DEBUG, _Solver::problems, problems_sortcmp(), queue_empty(), queue_free(), queue_init(), queue_push(), _Solver::recommendations, refine_suggestion(), SAT_DEBUG_SOLUTIONS, SAT_DEBUG_STATS, sat_sort(), sat_timems(), and _Solver::solutions.
Referenced by solver_next_solution(), and solver_solution_count().
unsigned int solver_problem_count | ( | Solver * | solv | ) |
Definition at line 630 of file problems.c.
References _Queue::count, and _Solver::problems.
Definition at line 636 of file problems.c.
References _Queue::count, and _Solver::problems.
Referenced by solver_printallsolutions().
Definition at line 644 of file problems.c.
References create_solutions(), _Queue::elements, _Solver::problems, and _Solver::solutions.
Definition at line 653 of file problems.c.
References create_solutions(), _Queue::elements, _Solver::problems, and _Solver::solutions.
Referenced by solver_printallsolutions().
Definition at line 662 of file problems.c.
References _Queue::elements, _Solver::problems, and _Solver::solutions.
Id solver_next_solutionelement | ( | Solver * | solv, | |
Id | problem, | |||
Id | solution, | |||
Id | element, | |||
Id * | p, | |||
Id * | rp | |||
) |
Definition at line 695 of file problems.c.
References _Queue::elements, _Solver::problems, and _Solver::solutions.
Referenced by solver_printsolution(), and solver_take_solution().
Definition at line 710 of file problems.c.
References _Queue::count, _Queue::elements, queue_push2(), SOLVER_ERASE, SOLVER_INSTALL, SOLVER_NOOP, SOLVER_SOLUTION_JOB, and SOLVER_SOLVABLE.
Referenced by solver_take_solution().
Definition at line 736 of file problems.c.
References solver_next_solutionelement(), and solver_take_solutionelement().
static void findproblemrule_internal | ( | Solver * | solv, | |
Id | idx, | |||
Id * | reqrp, | |||
Id * | conrp, | |||
Id * | sysrp, | |||
Id * | jobrp | |||
) | [static] |
Definition at line 750 of file problems.c.
References _Solvable::arch, _Rule::d, _Solver::duprules, _Queue::elements, _Solver::infarchrules, _Solver::installed, _Solver::jobrules, _Solver::jobrules_end, _Solver::learnt_pool, _Solver::learnt_why, _Solver::learntrules, _Rule::p, _Solver::pool, _Solvable::repo, _Solver::rules, _Pool::solvables, _Solver::updaterules, and _Rule::w2.
Referenced by solver_findproblemrule().
Definition at line 851 of file problems.c.
References _Queue::elements, findproblemrule_internal(), and _Solver::problems.
Referenced by solver_printprobleminfo().
Definition at line 871 of file problems.c.
References _Queue::elements, _Solver::learnt_pool, _Solver::learnt_why, _Solver::learntrules, and queue_pushunique().
Referenced by solver_findallproblemrules().
Definition at line 894 of file problems.c.
References _Queue::elements, findallproblemrules_internal(), _Solver::problems, and queue_empty().
Referenced by solver_printcompleteprobleminfo().
SolverRuleinfo solver_problemruleinfo | ( | Solver * | solv, | |
Queue * | job, | |||
Id | rid, | |||
Id * | depp, | |||
Id * | sourcep, | |||
Id * | targetp | |||
) |
Definition at line 902 of file problems.c.
References solver_ruleinfo().