X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fsolvable.h;h=4b26661acea507649743c460a75b22259052b741;hb=d7f392b2f466c04078ccda3c9871b18edc0cdd86;hp=bc8cae6d061415db1fc473cf6994c7d6b07929af;hpb=cb48480faf7479badbe83abfe5c6745ddb64f311;p=platform%2Fupstream%2Flibsolv.git diff --git a/src/solvable.h b/src/solvable.h index bc8cae6..4b26661 100644 --- a/src/solvable.h +++ b/src/solvable.h @@ -1,24 +1,53 @@ /* + * Copyright (c) 2007-2012, Novell Inc. + * + * This program is licensed under the BSD license, read LICENSE.BSD + * for further information + */ + +/* * solvable.h - * - * A solvable represents an object with name-epoch:version-release.arch and dependencies + * + * A solvable represents an object with name-epoch:version-release.arch + * and dependencies */ -#ifndef SOLVABLE_H -#define SOLVABLE_H +#ifndef LIBSOLV_SOLVABLE_H +#define LIBSOLV_SOLVABLE_H #include "pooltypes.h" -#include "source.h" +#include "queue.h" +#include "bitmap.h" + +#ifdef __cplusplus +extern "C" { +#endif -typedef struct _Solvable { +struct s_Repo; + +typedef struct s_Solvable { Id name; Id arch; Id evr; /* epoch:version-release */ + Id vendor; + + struct s_Repo *repo; /* repo we belong to */ - Source *source; /* source 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; - /* dependencies are offsets into idarray of source */ - Offset provides; /* terminated with Id 0 */ + 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; @@ -28,8 +57,58 @@ typedef struct _Solvable { Offset supplements; Offset enhances; - - Offset freshens; +#endif } Solvable; -#endif /* SOLVABLE_H */ +/* 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 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); +int solvable_lookup_bool(Solvable *s, Id keyname); +int solvable_lookup_void(Solvable *s, Id keyname); +const char *solvable_get_location(Solvable *s, unsigned int *medianrp); /* old name */ +const char *solvable_lookup_location(Solvable *s, unsigned int *medianrp); +const char *solvable_lookup_sourcepkg(Solvable *s); +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_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); +void solvable_set_num(Solvable *s, Id keyname, unsigned long long num); +void solvable_set_str(Solvable *s, Id keyname, const char *str); +void solvable_set_poolstr(Solvable *s, Id keyname, const char *str); +void solvable_add_poolstr_array(Solvable *s, Id keyname, const char *str); +void solvable_add_idarray(Solvable *s, Id keyname, Id id); +void solvable_add_deparray(Solvable *s, Id keyname, Id dep, Id marker); +void solvable_set_idarray(Solvable *s, Id keyname, Queue *q); +void solvable_set_deparray(Solvable *s, Id keyname, Queue *q, Id marker); +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 +} +#endif + +#endif /* LIBSOLV_SOLVABLE_H */