c11689f62472e6dbe0f9977bcdd5290b65d2566b
[platform/upstream/libsolv.git] / src / solvable.h
1 /*
2  * Copyright (c) 2007, 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 and dependencies
12  */
13
14 #ifndef SATSOLVER_SOLVABLE_H
15 #define SATSOLVER_SOLVABLE_H
16
17 #include "pooltypes.h"
18
19 struct _Repo;
20
21 typedef enum {
22   KIND_PACKAGE = 0,
23   KIND_PRODUCT = 5,         /* strlen("prod:") */
24   KIND_PATCH = 6,           /* strlen("patch:") */
25   KIND_SOURCE = 7,          /* strlen("source:") */
26   KIND_PATTERN = 8,         /* strlen("pattern:") */
27   KIND_NOSOURCE = 9,        /* strlen("nosource:") */
28   _KIND_MAX
29 } solvable_kind;
30
31 extern const char *kind_prefix( solvable_kind kind );
32
33 typedef struct _Solvable {
34   unsigned int kind;           /* one of KIND_xxx */
35   Id name;
36   Id arch;
37   Id evr;                       /* epoch:version-release */
38   Id vendor;
39
40   struct _Repo *repo;           /* repo we belong to */
41
42   /* dependencies are offsets into idarray of repo */
43   Offset provides;                      /* terminated with Id 0 */
44   Offset obsoletes;
45   Offset conflicts;
46
47   Offset requires;
48   Offset recommends;
49   Offset suggests;
50
51   Offset supplements;
52   Offset enhances;
53
54   Offset freshens;
55 } Solvable;
56
57 #endif /* SATSOLVER_SOLVABLE_H */