Imported Upstream version 0.6.11
[platform/upstream/libsolv.git] / src / policy.h
1 /*
2  * Copyright (c) 2007, Novell Inc.
3  *
4  * This program is licensed under the BSD license, read LICENSE.BSD
5  * for further information
6  */
7
8 /*
9  * Generic policy interface for SAT solver
10  * The policy* function can be "overloaded" by defining a callback in the solver struct.
11  */
12
13 #include "solver.h"
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18
19 #define POLICY_MODE_CHOOSE      0
20 #define POLICY_MODE_RECOMMEND   1
21 #define POLICY_MODE_SUGGEST     2
22 #define POLICY_MODE_CHOOSE_NOREORDER    3       /* internal, do not use */
23
24
25 #define POLICY_ILLEGAL_DOWNGRADE        1
26 #define POLICY_ILLEGAL_ARCHCHANGE       2
27 #define POLICY_ILLEGAL_VENDORCHANGE     4
28 #define POLICY_ILLEGAL_NAMECHANGE       8
29
30 extern void policy_filter_unwanted(Solver *solv, Queue *plist, int mode);
31 extern int  policy_illegal_archchange(Solver *solv, Solvable *s1, Solvable *s2);
32 extern int  policy_illegal_vendorchange(Solver *solv, Solvable *s1, Solvable *s2);
33 extern int  policy_is_illegal(Solver *solv, Solvable *s1, Solvable *s2, int ignore);
34 extern void policy_findupdatepackages(Solver *solv, Solvable *s, Queue *qs, int allowall);
35 extern const char *policy_illegal2str(Solver *solv, int illegal, Solvable *s, Solvable *rs);
36 extern void policy_update_recommendsmap(Solver *solv);
37
38 extern void policy_create_obsolete_index(Solver *solv);
39
40 /* internal, do not use */
41 extern void prune_to_best_version(Pool *pool, Queue *plist);
42
43
44 #ifdef __cplusplus
45 }
46 #endif