Imported Upstream version 0.6.31
[platform/upstream/libsolv.git] / src / selection.h
index 0dd6150..9938c2f 100644 (file)
 extern "C" {
 #endif
 
+/* what to match */
 #define SELECTION_NAME                 (1 << 0)
 #define SELECTION_PROVIDES             (1 << 1)
 #define SELECTION_FILELIST             (1 << 2)
 #define SELECTION_CANON                        (1 << 3)
-#define SELECTION_DOTARCH              (1 << 4)
-#define SELECTION_REL                  (1 << 5)
 
-#define SELECTION_INSTALLED_ONLY       (1 << 8)
+/* match extensions */
+#define SELECTION_DOTARCH              (1 << 4)        /* allow ".arch" suffix */
+#define SELECTION_REL                  (1 << 5)        /* allow "<=> rel" suffix */
+
+/* string comparison modifiers */
 #define SELECTION_GLOB                 (1 << 9)
-#define SELECTION_FLAT                 (1 << 10)
 #define SELECTION_NOCASE               (1 << 11)
+
+/* extra flags */
+#define SELECTION_FLAT                 (1 << 10)       /* flatten the resulting selection */
+#define SELECTION_SKIP_KIND            (1 << 14)       /* remove kind: name prefix in SELECTION_NAME matches */
+#define SELECTION_MATCH_DEPSTR         (1 << 15)       /* match dep2str result */
+
+/* package selection */
+#define SELECTION_INSTALLED_ONLY       (1 << 8)
 #define SELECTION_SOURCE_ONLY          (1 << 12)
 #define SELECTION_WITH_SOURCE          (1 << 13)
-#define SELECTION_SKIP_KIND            (1 << 14)
-#define SELECTION_MATCH_DEPSTR         (1 << 15)
+#define SELECTION_WITH_DISABLED                (1 << 16)
+#define SELECTION_WITH_BADARCH         (1 << 17)
+#define SELECTION_WITH_ALL             (SELECTION_WITH_SOURCE | SELECTION_WITH_DISABLED | SELECTION_WITH_BADARCH)
+
+/* result operator */
+#define SELECTION_REPLACE              (0 << 28)
+#define SELECTION_ADD                  (1 << 28)
+#define SELECTION_SUBTRACT             (2 << 28)
+#define SELECTION_FILTER               (3 << 28)
+
+#define SELECTION_MODEBITS             (3 << 28)       /* internal */
+
+/* extra SELECTION_FILTER bits */
+#define SELECTION_FILTER_KEEP_IFEMPTY  (1 << 30)
+#define SELECTION_FILTER_SWAPPED       (1 << 31)
+
 
 extern int  selection_make(Pool *pool, Queue *selection, const char *name, int flags);
 extern int  selection_make_matchdeps(Pool *pool, Queue *selection, const char *name, int flags, int keyname, int marker);
@@ -41,6 +65,8 @@ extern int  selection_make_matchdepid(Pool *pool, Queue *selection, Id dep, int
 
 extern void selection_filter(Pool *pool, Queue *sel1, Queue *sel2);
 extern void selection_add(Pool *pool, Queue *sel1, Queue *sel2);
+extern void selection_subtract(Pool *pool, Queue *sel1, Queue *sel2);
+
 extern void selection_solvables(Pool *pool, Queue *selection, Queue *pkgs);
 
 extern const char *pool_selection2str(Pool *pool, Queue *selection, Id flagmask);