rpm  5.4.15
rpmcudf.h
Go to the documentation of this file.
1 #ifndef RPMCUDF_H
2 #define RPMCUDF_H
3 
8 #include <rpmiotypes.h>
9 #include <rpmio.h>
10 
11 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmcudf_s * rpmcudf;
12 typedef /*@abstract@*/ struct rpmcudp_s * rpmcudp;
13 typedef /*@abstract@*/ struct rpmcudv_s * rpmcudv;
14 
15 /*@unchecked@*/
16 extern int _rpmcudf_debug;
17 
18 #ifdef NOTYET
19 /*@unchecked@*/ /*@relnull@*/
20 extern rpmcudf _rpmcudfI;
21 #endif
22 
23 #if defined(_RPMCUDF_INTERNAL)
24 #if defined(WITH_CUDF)
25 #include <cudf.h>
26 #else
27 typedef void *cudf_preamble_t; /* preamble of a CUDF document */
28 typedef void *cudf_request_t; /* request of a CUDF document */
29 typedef void *cudf_universe_t; /* package universe (i.e. all known packages) */
30 typedef void *cudf_package_t; /* single package from the universe */
31 
32 typedef struct _GList GList;
33 typedef struct _GHashTable GHashTable;
34 
35 typedef GList *cudf_packages_t;
36 typedef struct __cudf_doc cudf_doc_t;
37 typedef struct __cudf cudf_t;
38 typedef struct __cudf_vpkg cudf_vpkg_t;
39 typedef GList *cudf_vpkglist_t;
40 typedef GHashTable *cudf_extra_t;
41 typedef GList *cudf_vpkgformula_t;
42 typedef struct __cudf_value cudf_value_t;
43 
44 #endif
45 
46 /* XXX Extend cudf_value_t to include additional types. */
47 
48 #define RPMCUDV_EBASE 256
49 enum rpmcudv_e {
50  RPMCUDV_NOTYPE = 0, /* TYPE_NOTYPE */
51  RPMCUDV_INT = 1, /* TYPE_INT */
52  RPMCUDV_POSINT = 2, /* TYPE_POSINT */
53  RPMCUDV_NAT = 3, /* TYPE_NAT */
54  RPMCUDV_BOOL = 4, /* TYPE_BOOL */
55  RPMCUDV_STRING = 5, /* TYPE_STRING */
56  RPMCUDV_ENUM = 6, /* TYPE_ENUM */
57  RPMCUDV_PKGNAME = 7, /* TYPE_PKGNAME */
58  RPMCUDV_IDENT = 8, /* TYPE_IDENT */
59  RPMCUDV_VPKG = 9, /* TYPE_VPKG */
60  RPMCUDV_VPKGFORMULA = 10, /* TYPE_VPKGFORMULA */
61  RPMCUDV_VPKGLIST = 11, /* TYPE_VPKGLIST */
62  RPMCUDV_VEQPKG = 12, /* TYPE_VEQPKG */
63  RPMCUDV_VEQPKGLIST = 13, /* TYPE_VEQPKGLIST */
64  RPMCUDV_TYPEDECL = 14, /* TYPE_TYPEDECL */
65 
66  /* XXX extensions */
67  RPMCUDV_PACKAGE = RPMCUDV_EBASE+0, /* cudf_package_t */
68 
69  RPMCUDV_CUDFDOC = RPMCUDV_EBASE+1, /* cudf_doc_t */
70  RPMCUDV_CUDF = RPMCUDV_EBASE+2, /* cudf_t */
71 
72  RPMCUDV_EXTRA = RPMCUDV_EBASE+3, /* cudf_extra_t */
73 
74 };
75 
76 union rpmcudv_u {
77  int i;
78  char *s;
79  cudf_vpkg_t *vpkg;
80  cudf_vpkgformula_t f;
81  cudf_vpkglist_t vpkgs;
82 
83  void * ptr;
84  cudf_preamble_t preamble;
85  cudf_request_t request;
86 
87  cudf_package_t *pkg;
88 
89  cudf_doc_t *doc;
90  cudf_t *cudf;
91 
92  cudf_extra_t extra;
93 };
94 
95 struct rpmcudv_s {
96  enum rpmcudv_e typ;
97  union rpmcudv_u val;
98 };
99 
100 struct rpmcudp_s {
101  GList * l;
102  struct rpmcudv_s V;
103  struct rpmcudv_s W;
104 };
105 
106 struct rpmcudf_s {
107  struct rpmioItem_s _item;
108  struct rpmcudv_s V;
109  rpmiob iob;
110 #if defined(__LCLINT__)
111 /*@refs@*/
112  int nrefs;
113 #endif
114 };
115 #endif /* _RPMCUDF_INTERNAL */
116 
117 #ifdef __cplusplus
118 extern "C" {
119 #endif
120 
126 /*@unused@*/ /*@null@*/
127 rpmcudf rpmcudfUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmcudf cudf)
128  /*@modifies cudf @*/;
129 #define rpmcudfUnlink(_cudf) \
130  ((rpmcudf)rpmioUnlinkPoolItem((rpmioItem)(_cudf), __FUNCTION__, __FILE__, __LINE__))
131 
137 /*@unused@*/ /*@newref@*/ /*@null@*/
138 rpmcudf rpmcudfLink (/*@null@*/ rpmcudf cudf)
139  /*@modifies cudf @*/;
140 #define rpmcudfLink(_cudf) \
141  ((rpmcudf)rpmioLinkPoolItem((rpmioItem)(_cudf), __FUNCTION__, __FILE__, __LINE__))
142 
148 /*@null@*/
149 rpmcudf rpmcudfFree(/*@killref@*/ /*@null@*/rpmcudf cudf)
150  /*@globals fileSystem @*/
151  /*@modifies cudf, fileSystem @*/;
152 #define rpmcudfFree(_cudf) \
153  ((rpmcudf)rpmioFreePoolItem((rpmioItem)(_cudf), __FUNCTION__, __FILE__, __LINE__))
154 
161 /*@newref@*/ /*@null@*/
162 rpmcudf rpmcudfNew(/*@null@*/ char ** av, uint32_t flags)
163  /*@globals fileSystem, internalState @*/
164  /*@modifies fileSystem, internalState @*/;
165 
166 int rpmcudfHasPreamble(rpmcudf cudf)
167  /*@*/;
168 int rpmcudfHasRequest(rpmcudf cudf)
169  /*@*/;
171  /*@*/;
173  /*@*/;
175  /*@*/;
176 void rpmcudfPrintPreamble(rpmcudf cudf)
177  /*@*/;
178 void rpmcudfPrintRequest(rpmcudf cudf)
179  /*@*/;
180 void rpmcudfPrintUniverse(rpmcudf cudf)
181  /*@*/;
183  /*@*/;
184 
185 #ifdef __cplusplus
186 }
187 #endif
188 
189 #endif /* RPMCUDF_H */
void rpmcudfPrintUniverse(rpmcudf cudf)
Definition: rpmcudf.c:658
int rpmcudfUniverseSize(rpmcudf cudf)
Definition: rpmcudf.c:617
int _rpmcudf_debug
Definition: rpmcudf.c:14
int rpmcudfHasRequest(rpmcudf cudf)
Definition: rpmcudf.c:573
int rpmcudfIsSolution(rpmcudf X, rpmcudf Y)
Definition: rpmcudf.c:684
int rpmcudfHasPreamble(rpmcudf cudf)
Definition: rpmcudf.c:559
void rpmcudfPrintRequest(rpmcudf cudf)
Definition: rpmcudf.c:645
int rpmcudfIsConsistent(rpmcudf cudf)
Definition: rpmcudf.c:587
int rpmcudfInstalledSize(rpmcudf cudf)
Definition: rpmcudf.c:602
struct rpmcudv_s * rpmcudv
Definition: rpmcudf.h:13
void rpmcudfPrintPreamble(rpmcudf cudf)
Definition: rpmcudf.c:632
#define rpmcudfLink(_cudf)
Definition: rpmcudf.h:140
rpmcudf rpmcudfNew(char **av, uint32_t flags)
Create and load a cudf interpreter.
Definition: rpmcudf.c:487
struct rpmcudf_s * rpmcudf
Definition: rpmcudf.h:11
const char const bson int mongo_write_concern int flags
Definition: mongo.h:485
struct rpmcudp_s * rpmcudp
Definition: rpmcudf.h:12
const char const int i
Definition: bson.h:778
#define rpmcudfUnlink(_cudf)
Definition: rpmcudf.h:129
struct rpmiob_s * rpmiob
Definition: rpmiotypes.h:60
#define rpmcudfFree(_cudf)
Definition: rpmcudf.h:152