Add support for global LDFLAGS
[platform/upstream/rpm.git] / lib / rpmps.h
1 #ifndef H_RPMPS
2 #define H_RPMPS
3
4 /** \ingroup rpmps
5  * \file lib/rpmps.h
6  * Structures and prototypes used for an "rpmps" problem set.
7  */
8
9 #include <stdio.h>
10 #include <rpm/rpmtypes.h>
11 #include <rpm/rpmprob.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 /** \ingroup rpmps
18  * Problem set iterator
19  */
20 typedef struct rpmpsi_s * rpmpsi;
21
22 /** \ingroup rpmps
23  * Reference a problem set instance.
24  * @param ps            transaction set
25  * @return              new transaction set reference
26  */
27 rpmps rpmpsLink (rpmps ps);
28
29 /** \ingroup rpmps
30  * Return number of problems in set.
31  * @param ps            problem set
32  * @return              number of problems
33  */
34 int rpmpsNumProblems(rpmps ps);
35
36 /** \ingroup rpmps
37  * Initialize problem set iterator.
38  * @param ps            problem set
39  * @return              problem set iterator
40  */
41 rpmpsi rpmpsInitIterator(rpmps ps);
42
43 /** \ingroup rpmps
44  * Destroy problem set iterator.
45  * @param psi           problem set iterator
46  * @return              problem set iterator (NULL)
47  */
48 rpmpsi rpmpsFreeIterator(rpmpsi psi);
49
50 /** \ingroup rpmps
51  * Return next problem from iterator
52  * @param psi           problem set iterator
53  * @return              next problem (weak ref), NULL on termination
54  */
55 rpmProblem rpmpsiNext(rpmpsi psi);
56
57 /** \ingroup rpmps
58  * Return next problem set iterator index
59  * @param psi           problem set iterator
60  * @return              iterator index, -1 on termination
61  */
62 int rpmpsNextIterator(rpmpsi psi);
63
64 /** \ingroup rpmps
65  * Return current problem from problem set
66  * @param psi           problem set iterator
67  * @return              current rpmProblem 
68  */
69 rpmProblem rpmpsGetProblem(rpmpsi psi);
70
71 /** \ingroup rpmps
72  * Create a problem set.
73  * @return              new problem set
74  */
75 rpmps rpmpsCreate(void);
76
77 /** \ingroup rpmps
78  * Destroy a problem set.
79  * @param ps            problem set
80  * @return              NULL always
81  */
82 rpmps rpmpsFree(rpmps ps);
83
84 /** \ingroup rpmps
85  * Print problems to file handle.
86  * @param fp            file handle (NULL uses stderr)
87  * @param ps            problem set
88  */
89 void rpmpsPrint(FILE *fp, rpmps ps);
90
91 /** \ingroup rpmps
92  * Append a problem to current set of problems.
93  * @param ps            problem set
94  * @param prob          rpmProblem 
95  */
96 void rpmpsAppendProblem(rpmps ps, rpmProblem prob);
97
98 /** \ingroup rpmps
99  * Merge problem set into another.
100  * @param dest          destination problem set
101  * @param src           source problem set
102  * @return              number of problems merged
103  */
104 int rpmpsMerge(rpmps dest, rpmps src);
105
106 #ifdef __cplusplus
107 }
108 #endif
109
110 #endif  /* H_RPMPS */