- add pool_addvendorclass and solver_solutionelement_internalid
[platform/upstream/libsolv.git] / src / pool.h
index fa701bf..ee9f256 100644 (file)
@@ -19,7 +19,7 @@ extern "C" {
 
 #include <stdio.h>
 
-#include "satversion.h"
+#include "solvversion.h"
 #include "pooltypes.h"
 #include "poolid.h"
 #include "solvable.h"
@@ -37,7 +37,7 @@ extern "C" {
 /* how many strings to maintain (round robin) */
 #define POOL_TMPSPACEBUF 16
 
-//-----------------------------------------------
+/*----------------------------------------------- */
 
 struct _Repo;
 struct _Repodata;
@@ -69,19 +69,23 @@ struct _Pool {
   Hashmask relhashmask;
 
   struct _Repo **repos;
-  int nrepos;
+  int nrepos;                  /* repos allocated */
+  int urepos;                  /* repos in use */
 
   struct _Repo *installed;     /* packages considered installed */
 
   Solvable *solvables;
-  int nsolvables;
+  int nsolvables;              /* solvables allocated */
 
   const char **languages;
   int nlanguages;
   Id *languagecache;
   int languagecacheother;
 
-  /* flags to tell the library how the installed rpm works */
+  /* package manager type, deb/rpm */
+  int disttype;
+
+  /* flags to tell the library how the installed package manager works */
   int promoteepoch;            /* true: missing epoch is replaced by epoch of dependency   */
   int obsoleteusesprovides;    /* true: obsoletes are matched against provides, not names */
   int implicitobsoleteusesprovides;    /* true: implicit obsoletes due to same name are matched against provides, not names */
@@ -89,10 +93,6 @@ struct _Pool {
   int noinstalledobsoletes;    /* true: ignore obsoletes of installed packages */
   int allowselfconflicts;      /* true: packages which conflict with itself are installable */
 
-#ifdef MULTI_SEMANTICS
-  int disttype;
-#endif
-
   Id *id2arch;                 /* map arch ids to scores */
   unsigned char *id2color;     /* map arch ids to colors */
   Id lastarch;                 /* last valid entry in id2arch/id2color */
@@ -115,6 +115,7 @@ struct _Pool {
      bitmap for solving.  If zero, consider all solvables.  */
   Map *considered;
 
+  /* callback for REL_NAMESPACE dependencies handled by the application  */
   Id (*nscallback)(struct _Pool *, void *data, Id name, Id evr);
   void *nscallbackdata;
 
@@ -134,29 +135,27 @@ struct _Pool {
   Datapos pos;
 };
 
-#ifdef MULTI_SEMANTICS
-# define DISTTYPE_RPM  0
-# define DISTTYPE_DEB  1
-#endif
+#define DISTTYPE_RPM   0
+#define DISTTYPE_DEB   1
 
-#define SAT_FATAL                      (1<<0)
-#define SAT_ERROR                      (1<<1)
-#define SAT_WARN                       (1<<2)
-#define SAT_DEBUG_STATS                        (1<<3)
-#define SAT_DEBUG_RULE_CREATION                (1<<4)
-#define SAT_DEBUG_PROPAGATE            (1<<5)
-#define SAT_DEBUG_ANALYZE              (1<<6)
-#define SAT_DEBUG_UNSOLVABLE           (1<<7)
-#define SAT_DEBUG_SOLUTIONS            (1<<8)
-#define SAT_DEBUG_POLICY               (1<<9)
-#define SAT_DEBUG_RESULT               (1<<10)
-#define SAT_DEBUG_JOB                  (1<<11)
-#define SAT_DEBUG_SOLVER               (1<<12)
-#define SAT_DEBUG_TRANSACTION          (1<<13)
+#define SOLV_FATAL                     (1<<0)
+#define SOLV_ERROR                     (1<<1)
+#define SOLV_WARN                      (1<<2)
+#define SOLV_DEBUG_STATS               (1<<3)
+#define SOLV_DEBUG_RULE_CREATION       (1<<4)
+#define SOLV_DEBUG_PROPAGATE           (1<<5)
+#define SOLV_DEBUG_ANALYZE             (1<<6)
+#define SOLV_DEBUG_UNSOLVABLE          (1<<7)
+#define SOLV_DEBUG_SOLUTIONS           (1<<8)
+#define SOLV_DEBUG_POLICY              (1<<9)
+#define SOLV_DEBUG_RESULT              (1<<10)
+#define SOLV_DEBUG_JOB                 (1<<11)
+#define SOLV_DEBUG_SOLVER              (1<<12)
+#define SOLV_DEBUG_TRANSACTION         (1<<13)
 
-#define SAT_DEBUG_TO_STDERR            (1<<30)
+#define SOLV_DEBUG_TO_STDERR           (1<<30)
 
-//-----------------------------------------------
+/* ----------------------------------------------- */
 
 
 /* mark dependencies with relation by setting bit31 */
@@ -176,19 +175,15 @@ struct _Pool {
 #define REL_NAMESPACE  19
 #define REL_ARCH       20
 #define REL_FILECONFLICT       21
+#define REL_COND       22
 
 #if !defined(__GNUC__) && !defined(__attribute__)
 # define __attribute__(x)
 #endif
 
-/**
- * Creates a new pool
- */
 extern Pool *pool_create(void);
-/**
- * Delete a pool
- */
 extern void pool_free(Pool *pool);
+extern void pool_freeallrepos(Pool *pool, int reuseids);
 
 extern void pool_setdebuglevel(Pool *pool, int level);
 #ifdef MULTI_SEMANTICS
@@ -231,20 +226,6 @@ static inline const char *pool_solvid2str(Pool *pool, Id p)
 void pool_set_languages(Pool *pool, const char **languages, int nlanguages);
 Id pool_id2langid(Pool *pool, Id id, const char *lang, int create);
 
-Id solvable_lookup_id(Solvable *s, Id keyname);
-unsigned int solvable_lookup_num(Solvable *s, Id keyname, unsigned int notfound);
-const char *solvable_lookup_str(Solvable *s, Id keyname);
-const char *solvable_lookup_str_poollang(Solvable *s, Id keyname);
-const char *solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang, int usebase);
-int solvable_lookup_bool(Solvable *s, Id keyname);
-int solvable_lookup_void(Solvable *s, Id keyname);
-char * solvable_get_location(Solvable *s, unsigned int *medianrp);
-const unsigned char *solvable_lookup_bin_checksum(Solvable *s, Id keyname, Id *typep);
-const char *solvable_lookup_checksum(Solvable *s, Id keyname, Id *typep);
-int solvable_lookup_idarray(Solvable *s, Id keyname, Queue *q);
-int solvable_identical(Solvable *s1, Solvable *s2);
-Id solvable_selfprovidedep(Solvable *s);
-
 int solvable_trivial_installable_map(Solvable *s, Map *installedmap, Map *conflictsmap);
 int solvable_trivial_installable_repo(Solvable *s, struct _Repo *installed);
 int solvable_trivial_installable_queue(Solvable *s, Queue *installed);
@@ -268,7 +249,7 @@ static inline int pool_match_nevr(Pool *pool, Solvable *s, Id d)
  */
 extern void pool_createwhatprovides(Pool *pool);
 extern void pool_addfileprovides(Pool *pool);
-extern void pool_addfileprovides_ids(Pool *pool, struct _Repo *installed, Id **idp);
+extern void pool_addfileprovides_queue(Pool *pool, Queue *idq);
 extern void pool_freewhatprovides(Pool *pool);
 extern Id pool_queuetowhatprovides(Pool *pool, Queue *q);
 
@@ -328,10 +309,9 @@ void pool_add_fileconflicts_deps(Pool *pool, Queue *conflicts);
   for (vp = pool_whatprovides(pool, d) ; (v = pool->whatprovidesdata[vp++]) != 0; )
 
 /* loop over all repositories */
-/* note that idx is not the repoid */
-#define FOR_REPOS(idx, r)                                              \
-  for (idx = 0; idx < pool->nrepos; idx++)                             \
-    if ((r = pool->repos[idx]) != 0)
+#define FOR_REPOS(repoid, r)                                           \
+  for (repoid = 1; repoid < pool->nrepos; repoid++)                            \
+    if ((r = pool->repos[repoid]) != 0)
     
 
 #define POOL_DEBUG(type, ...) do {if ((pool->debugmask & (type)) != 0) pool_debug(pool, (type), __VA_ARGS__);} while (0)