X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fsolvable.h;h=4b26661acea507649743c460a75b22259052b741;hb=11600c0259c8cd27ad8c87b16421e65030b4b126;hp=85d20c44a06bc21be6cd64ce0b452f58f5c2ae36;hpb=347e247833438d572c2cfea246c01ea439b72363;p=platform%2Fupstream%2Flibsolv.git diff --git a/src/solvable.h b/src/solvable.h index 85d20c4..4b26661 100644 --- a/src/solvable.h +++ b/src/solvable.h @@ -17,22 +17,36 @@ #include "pooltypes.h" #include "queue.h" +#include "bitmap.h" #ifdef __cplusplus extern "C" { #endif -struct _Repo; +struct s_Repo; -typedef struct _Solvable { +typedef struct s_Solvable { Id name; Id arch; Id evr; /* epoch:version-release */ Id vendor; - struct _Repo *repo; /* repo we belong to */ + struct s_Repo *repo; /* repo we belong to */ /* dependencies are offsets into repo->idarraydata */ + /* the ifdef resolves "requires" conflicting with a C++20 keyword */ +#ifdef LIBSOLV_SOLVABLE_PREPEND_DEP + Offset dep_provides; /* terminated with Id 0 */ + Offset dep_obsoletes; + Offset dep_conflicts; + + Offset dep_requires; + Offset dep_recommends; + Offset dep_suggests; + + Offset dep_supplements; + Offset dep_enhances; +#else Offset provides; /* terminated with Id 0 */ Offset obsoletes; Offset conflicts; @@ -43,14 +57,14 @@ typedef struct _Solvable { Offset supplements; Offset enhances; - +#endif } Solvable; /* lookup functions */ Id solvable_lookup_type(Solvable *s, Id keyname); Id solvable_lookup_id(Solvable *s, Id keyname); unsigned long long solvable_lookup_num(Solvable *s, Id keyname, unsigned long long notfound); -unsigned int solvable_lookup_sizek(Solvable *s, Id keyname, unsigned int notfound); +unsigned long long solvable_lookup_sizek(Solvable *s, Id keyname, unsigned long long 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); @@ -63,6 +77,7 @@ const unsigned char *solvable_lookup_bin_checksum(Solvable *s, Id keyname, Id *t const char *solvable_lookup_checksum(Solvable *s, Id keyname, Id *typep); int solvable_lookup_idarray(Solvable *s, Id keyname, Queue *q); int solvable_lookup_deparray(Solvable *s, Id keyname, Queue *q, Id marker); +unsigned int solvable_lookup_count(Solvable *s, Id keyname); /* internal */ /* setter functions */ void solvable_set_id(Solvable *s, Id keyname, Id id); @@ -78,7 +93,19 @@ void solvable_unset(Solvable *s, Id keyname); int solvable_identical(Solvable *s1, Solvable *s2); Id solvable_selfprovidedep(Solvable *s); + int solvable_matchesdep(Solvable *s, Id keyname, Id dep, int marker); +int solvable_matchessolvable(Solvable *s, Id keyname, Id solvid, Queue *depq, int marker); + +/* internal */ +int solvable_matchessolvable_int(Solvable *s, Id keyname, int marker, Id solvid, Map *solvidmap, Queue *depq, Map *missc, int reloff, Queue *outdepq); + + +/* weird suse stuff */ +int solvable_is_irrelevant_patch(Solvable *s, Map *installedmap); +int solvable_trivial_installable_map(Solvable *s, Map *installedmap, Map *conflictsmap, Map *multiversionmap); +int solvable_trivial_installable_queue(Solvable *s, Queue *installed, Map *multiversionmap); +int solvable_trivial_installable_repo(Solvable *s, struct s_Repo *installed, Map *multiversionmap); #ifdef __cplusplus }