1 /* 2 * Copyright (c) 2007-2012, Novell Inc. 3 * 4 * This program is licensed under the BSD license, read LICENSE.BSD 5 * for further information 6 */ 7 8 /* 9 * solvable.h 10 * 11 * A solvable represents an object with name-epoch:version-release.arch 12 * and dependencies 13 */ 14 15 #ifndef LIBSOLV_SOLVABLE_H 16 #define LIBSOLV_SOLVABLE_H 17 18 #include "pooltypes.h" 19 #include "queue.h" 20 #include "bitmap.h" 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 struct s_Repo; 27 28 typedef struct s_Solvable { 29 Id name; 30 Id arch; 31 Id evr; /* epoch:version-release */ 32 Id vendor; 33 34 struct s_Repo *repo; /* repo we belong to */ 35 36 /* dependencies are offsets into repo->idarraydata */ 37 Offset provides; /* terminated with Id 0 */ 38 Offset obsoletes; 39 Offset conflicts; 40 41 Offset requires; 42 Offset recommends; 43 Offset suggests; 44 45 Offset supplements; 46 Offset enhances; 47 48 } Solvable; 49 50 /* lookup functions */ 51 Id solvable_lookup_type(Solvable *s, Id keyname); 52 Id solvable_lookup_id(Solvable *s, Id keyname); 53 unsigned long long solvable_lookup_num(Solvable *s, Id keyname, unsigned long long notfound); 54 unsigned long long solvable_lookup_sizek(Solvable *s, Id keyname, unsigned long long notfound); 55 const char *solvable_lookup_str(Solvable *s, Id keyname); 56 const char *solvable_lookup_str_poollang(Solvable *s, Id keyname); 57 const char *solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang, int usebase); 58 int solvable_lookup_bool(Solvable *s, Id keyname); 59 int solvable_lookup_void(Solvable *s, Id keyname); 60 const char *solvable_get_location(Solvable *s, unsigned int *medianrp); /* old name */ 61 const char *solvable_lookup_location(Solvable *s, unsigned int *medianrp); 62 const char *solvable_lookup_sourcepkg(Solvable *s); 63 const unsigned char *solvable_lookup_bin_checksum(Solvable *s, Id keyname, Id *typep); 64 const char *solvable_lookup_checksum(Solvable *s, Id keyname, Id *typep); 65 int solvable_lookup_idarray(Solvable *s, Id keyname, Queue *q); 66 int solvable_lookup_deparray(Solvable *s, Id keyname, Queue *q, Id marker); 67 unsigned int solvable_lookup_count(Solvable *s, Id keyname); /* internal */ 68 69 /* setter functions */ 70 void solvable_set_id(Solvable *s, Id keyname, Id id); 71 void solvable_set_num(Solvable *s, Id keyname, unsigned long long num); 72 void solvable_set_str(Solvable *s, Id keyname, const char *str); 73 void solvable_set_poolstr(Solvable *s, Id keyname, const char *str); 74 void solvable_add_poolstr_array(Solvable *s, Id keyname, const char *str); 75 void solvable_add_idarray(Solvable *s, Id keyname, Id id); 76 void solvable_add_deparray(Solvable *s, Id keyname, Id dep, Id marker); 77 void solvable_set_idarray(Solvable *s, Id keyname, Queue *q); 78 void solvable_set_deparray(Solvable *s, Id keyname, Queue *q, Id marker); 79 void solvable_unset(Solvable *s, Id keyname); 80 81 int solvable_identical(Solvable *s1, Solvable *s2); 82 Id solvable_selfprovidedep(Solvable *s); 83 84 int solvable_matchesdep(Solvable *s, Id keyname, Id dep, int marker); 85 int solvable_matchessolvable(Solvable *s, Id keyname, Id solvid, Queue *depq, int marker); 86 87 /* internal */ 88 int solvable_matchessolvable_int(Solvable *s, Id keyname, int marker, Id solvid, Map *solvidmap, Queue *depq, Map *missc, int reloff, Queue *outdepq); 89 90 91 /* weird suse stuff */ 92 int solvable_is_irrelevant_patch(Solvable *s, Map *installedmap); 93 int solvable_trivial_installable_map(Solvable *s, Map *installedmap, Map *conflictsmap, Map *multiversionmap); 94 int solvable_trivial_installable_queue(Solvable *s, Queue *installed, Map *multiversionmap); 95 int solvable_trivial_installable_repo(Solvable *s, struct s_Repo *installed, Map *multiversionmap); 96 97 #ifdef __cplusplus 98 } 99 #endif 100 101 #endif /* LIBSOLV_SOLVABLE_H */ 102