- add solvable_ setter functions, add solvable_lookup_type/solvable_lookup_deparray
[platform/upstream/libsolv.git] / src / solvable.h
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
21 struct _Repo;
22
23 typedef struct _Solvable {
24   Id name;
25   Id arch;
26   Id evr;                       /* epoch:version-release */
27   Id vendor;
28
29   struct _Repo *repo;           /* repo we belong to */
30
31   /* dependencies are offsets into repo->idarraydata */
32   Offset provides;              /* terminated with Id 0 */
33   Offset obsoletes;
34   Offset conflicts;
35
36   Offset requires;
37   Offset recommends;
38   Offset suggests;
39
40   Offset supplements;
41   Offset enhances;
42
43 } Solvable;
44
45 /* lookup functions */
46 Id solvable_lookup_type(Solvable *s, Id keyname);
47 Id solvable_lookup_id(Solvable *s, Id keyname);
48 unsigned int solvable_lookup_num(Solvable *s, Id keyname, unsigned int notfound);
49 const char *solvable_lookup_str(Solvable *s, Id keyname);
50 const char *solvable_lookup_str_poollang(Solvable *s, Id keyname);
51 const char *solvable_lookup_str_lang(Solvable *s, Id keyname, const char *lang, int usebase);
52 int solvable_lookup_bool(Solvable *s, Id keyname);
53 int solvable_lookup_void(Solvable *s, Id keyname);
54 char *solvable_get_location(Solvable *s, unsigned int *medianrp);
55 const unsigned char *solvable_lookup_bin_checksum(Solvable *s, Id keyname, Id *typep);
56 const char *solvable_lookup_checksum(Solvable *s, Id keyname, Id *typep);
57 int solvable_lookup_idarray(Solvable *s, Id keyname, Queue *q);
58 int solvable_lookup_deparray(Solvable *s, Id keyname, Queue *q, Id marker);
59
60 /* setter functions */
61 void solvable_set_id(Solvable *s, Id keyname, Id id);
62 void solvable_set_num(Solvable *s, Id keyname, unsigned int num);
63 void solvable_set_str(Solvable *s, Id keyname, const char *str);
64 void solvable_set_poolstr(Solvable *s, Id keyname, const char *str);
65 void solvable_add_poolstr_array(Solvable *s, Id keyname, const char *str);
66 void solvable_add_idarray(Solvable *s, Id keyname, Id id);
67 void solvable_add_deparray(Solvable *s, Id keyname, Id dep, Id marker);
68 void solvable_set_idarray(Solvable *s, Id keyname, Queue *q);
69 void solvable_set_deparray(Solvable *s, Id keyname, Queue *q, Id marker);
70
71 int solvable_identical(Solvable *s1, Solvable *s2);
72 Id solvable_selfprovidedep(Solvable *s); 
73
74 #endif /* LIBSOLV_SOLVABLE_H */